如何使用Jmeter进行登陆后的并发操作

目录

一、脚本组织

二、疑惑

三、总结


记录一下如何使用Jmeter进行并发操作。如有不同意见,欢迎讨论。

一、脚本组织

如图所示 ,登陆和支付请求都加上了定时器,根据查看结果树,可看出所有用户登陆完成后,才进行支付请求的提交,且登陆和支付发起请求的时间几乎是同时(详细的请求信息可以通过 用表格查看结果 进行查看,严格来讲还是做不到同时发起请求,但是时间间隔极小,可以认为同时进行)。

如何使用Jmeter进行登陆后的并发操作_第1张图片

 csv数据文件:需要进行参数化的请求参数,这里有个小坑,就是如果新建txt文本,然后再重命名为csv文件,在编辑csv文件时,如果数值是复制粘贴到csv文件的,且复制的数值较长时,直接粘贴的时候,会变成科学记数法的形式,双击或在前面加英文的逗点,复制的数值最后几位会变成0000,这个问题不知道怎么解决。最正确的方式就是直接用txt文本编辑参数,参数用英文的逗号间隔,缺点是不太好编辑,效率和速度没那么快。

HTTP cookie管理器:这个配置元件要放在线程组下,不能放在HTTP请求下!我的看有些文章是放在HTTP请求下的,但是我试过,请求失败提示没有登陆。cookie管理器直接添加就行了,不用做什么配置。

HTTP信息头管理器:主要添加Content-Type:application/json;charset=UTF-8

下面我们看一下用表格查看结果:

如图所示,加上同步定时器后,几乎可以认为是同一时间发起的请求,不加同步定时器时,开始时间差距还是很明显的。这个可以自己尝试一下。

如何使用Jmeter进行登陆后的并发操作_第2张图片

二、疑惑

可能有人跟我一样想过这样一个问题,这样设置,会不会登陆之后,后面所有请求都是使用同一个cookie发起的请求呢,后续的业务请求是否都是使用第一个或是某一个登陆用户的cookie发起的请求呢?之前也有想过好像也有人说过可以把登陆后cookie或session保存到一个文件,然后再后面的请求添加cookie管理器,cookie管理器取保存好的cookie或session。我也这么试过,但是一直调不通,可能是方法不对吧。

下面看看按当前的脚本设置,后续的请求所使用的cookie是否相同:

第一个登陆的cookie

如何使用Jmeter进行登陆后的并发操作_第3张图片

 第二个登陆的cookie

如何使用Jmeter进行登陆后的并发操作_第4张图片

 第三个登陆的cookie

如何使用Jmeter进行登陆后的并发操作_第5张图片

下面汇总一下

1 JSESSIONID=DC7B28B4F4F9E68C489F64EEECEE6DA9
2 JSESSIONID=3FACDD1EC0836E41B2D3ABBD2C0E41D6
3 JSESSIONID=D6AB05E70D821F4AA0F03C9FEA6167C7
4 JSESSIONID=59C62C414C8885CE0EB471AB6FF5D8B1
5 JSESSIONID=A92A2F83BA2464CDCD2663C49302A533
6 JSESSIONID=EA42EDB202E68D51C742D61FB2248002

 现在看看支付请求所携带的cookie是否都是同一个

第一个请求

如何使用Jmeter进行登陆后的并发操作_第6张图片

 第二个请求

如何使用Jmeter进行登陆后的并发操作_第7张图片

第三个请求

如何使用Jmeter进行登陆后的并发操作_第8张图片

第四个请求

如何使用Jmeter进行登陆后的并发操作_第9张图片 

后面两个请求就不贴出来了。

从上面的结果可以看出:所有的请求使用的cookie都不相同!

三、总结

个人认为以上的结果是真正意义上的并发!

如果登陆了100个用户,但后续的请求都是使用同一个cookie,这并不能算是并发,起码与实际业务场景无法对应。

如果请求的结果是 登陆-支付-登陆-支付-登陆-支付……,这明显也不是并发,来一个发一个,来一个发一个,怎么能算并发呢!

你可能感兴趣的:(测试工程师,软件测试,jmeter,并发)