JMeter模拟多用户同时登录,token传递接口关联(同线程组)

Posted tallcoldlu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMeter模拟多用户同时登录,token传递接口关联(同线程组)相关的知识,希望对你有一定的参考价值。

在同线程组内,模拟多用户同时登录,token传递,进行自动化测试接口、性能测试

1、数据驱动,创建数据源文件

新建一个txt或csv文件,用于存放用户参数数据

存放置在jmx脚本同目录中(同目录下不用写绝对路径)

txt文件格式填写要求同csv文件,中间以英文逗号分隔

2、创建线程组,创建登录接口。添加配置元件 CSV Data Set Config

请求参数的值引用自CSV文件设置中的变量名称

例:CSV文件设置变量名称为 mobile,在HTTP请求中引入方式为${mobile}

 3、设置JSON提取器,提取token

请求登录接口,Response Body 为JSON形式,因此设置JSON提取器更方便些

{"code":2,"data":{"token":"5929a993d1699bdbe2c6b4520035807826bfb3ed"},"msg":""}

 Names of created variables: 接收值的变量名,为取到的token起一个新名字吧(这里我取名为app_token),方便调用,多个变量时用分号分隔

Json path: 填写Json path表达式,多个表达式用分号分隔。根据接口返回Json形式,表达式写为$.data.token

Match No: 0为随机;-1匹配所有,1取第1个匹配值;变量名为N 就是取第N个匹配值

Compute comcatemation var(suffix_ALL):如果发现许多结果,插件将使用" , "分隔符将它们连接起来,并将其存储在名为<variable name>_ALL的var中

Default values: 默认值,匹配不到值的时候取该值

4、用BeanShell后置处理程序,将token设为全局变量

String token = bsh.args[0];
${__setProperty(newtoken,${app_token},)}

str = bsh.args[0],表示获取数组参数

${__setProperty(newtoken,${app_token},)}

${__setProperty(全局变量名,${引用值},)}   

引用值为Json提取器中 Names of created variables设置的名字

虽然用BeanShell取样器也可以实现同样功能,但在JMeter中BeanShell取样器是当成线程处理的(如添加BeanShell取样器,在察看结果树中可以看到),所以运行时是有一定的消耗的,而使用BeanShell前置处理器、BeanShell后置处理器总的来说比BeanShell取样器内存消耗低

5、将全局变量token添加到请求头中

引用全局变量

引用方式写成 ${__P(newtoken)} 或${__property(newtoken)} 都可

 查看请求头,token已传递过来

 6、如果需要测试性能,可以修改线程组属性

Ramp-Up Period(in-seconds)代表隔多长时间执行,0代表同时并发

如果业务需要,只执行一次登录操作,多次并发执行其他后续操作,可以参考下一篇文章

JMeter模拟多用户并发测试,多线程组接口关联_LSZZZ的博客-CSDN博客本文模拟多用户并发操作。通过设置多个线程组,实现登录一次,多次进行其他后续操作。将多用户信息参数化,setUp线程组进行一次登录请求,请求成功后将多用户获取到的token信息储存在本地,再进行参数传递,完成后续操作后,通过tearDown线程组,销毁本地token文件,以便执行下次测试计划。同线程组操作可参考上篇文章下面为详细操作步骤SetUp线程组模拟5个用户,同时登录1、新建一个txt或csv文件,用于存放用户参数数据存放置在jmx脚本...https://blog.csdn.net/LSZZZ/article/details/120867258

以上是关于JMeter模拟多用户同时登录,token传递接口关联(同线程组)的主要内容,如果未能解决你的问题,请参考以下文章

jmeter多用户token使用

JMeter多用户token使用

Jmeter跨线程组调用token

Jmeter接口测试实战-数据传递

Jmeter跨线程组传递token失败

Jmeter接口测试获取登录token