【Jmeter】之批量处理多接口压力测试
一、需求前提
1、有以下三个步骤:
①创建单据
②审核单据
③确认单据
让三个相关接口进行一连串批量请求操作,直到所有批量数据确认单据成功。
二、测试计划
需要说明的是,因为每个接口可能处理的不太一样,所以不能把所有的HTTP接口请求都放到一个线程组里,需要创建多个线程组。需要勾选一个选项,否则所有的接口串联不起来。
三、线程组
根据需求分析,创建三个线程组
1、创建单据线程组
目录结构如下:
①HTTP信息头管理器
需要添加信息头:
Authorization 【token】
token如何获取,通过F12或者抓包工具,随意请求一个接口获取token
②CSV 数据文件设置
- 【变量名称】:通过读取CSV文件,获取每一个参数变量的值
- 【文件名】:导入CSV文件的路径
其他的不变
④HTTP请求
请求参数里换成${XXX}变量写法,对应CSV文件设置。
其他参数一一对应填写进去。
⑤监听器
添加结果树和聚合报告,获取其他
2、审核单据线程组
目录结构如下:
①HTTP信息头管理器
同上操作
②HTTP请求
通过上面的目录可知有两个请求,是因为审核接口的时候“order_ids”是获取列表数据的id,所以需要查询接口获取到列表id的值,然后两个接口互相传送
查询接口会查出来多条数据,但是如何提取每一条数据的id呢,先把结果树选择“JSON Path Tester”,然后再在“JSON Path Expression”里进行查询测试,输入【$.data[*]..id】
$.data[*]..id,代表的意思是
.代表一层结构
data[*]代表所有data参数
..id代表两层下的id
返回结果值:Result[index] = id号
③JSON提取器
④调试后置处理程序
加上这个元件,请求接口后还有一个结果树生成,调试的结果
⑤循环控制器
把上面的调试参数放到循环控制器中,代表获取循环的次数
最后把“id_XXX”的值循环传入请求参数中
${__V(id_${__counter(,)},)}
【转】因为要把JSON提取器中匹配到的id_1,....id_22循环传递给“用户流水记录”,
__counter为jmeter自带的一个计数函数,${__counter(,)}引用这个函数,每运行1次+1,从1开始;
id_${__counter(,)}运行第1次id_1,运行第2次id_2,以此类推,直到运行到循环次数id_22
__V为jmeter自带的一个嵌套变量函数,运行第1次id_${__counter(,)}为id_1,${__V(id_${__counter(,)},)}则为${id_1},值80;以此类推,一直循环到${id_22}
参考文章《Jmeter之JSON提取器应用》
3、确认单据线程组
跟“2、审核单据线程组”同理。
最终结构如下:
四、附录
①感谢:老陈酒~~的《jmeter之多个线程组顺序执行操作》***
②感谢:豆姐姐 的《Jmeter之JSON提取器应用》*****