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模拟多用户同时登录,token传递接口关联(同线程组)的主要内容,如果未能解决你的问题,请参考以下文章