一、需求前提

1、有以下三个步骤:

①创建单据

②审核单据

③确认单据

 

让三个相关接口进行一连串批量请求操作,直到所有批量数据确认单据成功。

 

 

二、测试计划

需要说明的是,因为每个接口可能处理的不太一样,所以不能把所有的HTTP接口请求都放到一个线程组里,需要创建多个线程组。需要勾选一个选项,否则所有的接口串联不起来。

多线程测试java 多线程测试接口压力_线程组

 

 

 

三、线程组

根据需求分析,创建三个线程组

多线程测试java 多线程测试接口压力_HTTP_02

 

 

 

1、创建单据线程组

目录结构如下:

多线程测试java 多线程测试接口压力_线程组_03

 

 

①HTTP信息头管理器

多线程测试java 多线程测试接口压力_HTTP_04

 

 

 需要添加信息头:

Authorization      【token】

token如何获取,通过F12或者抓包工具,随意请求一个接口获取token

多线程测试java 多线程测试接口压力_多线程测试java_05

 

 

②CSV 数据文件设置

  • 【变量名称】:通过读取CSV文件,获取每一个参数变量的值

多线程测试java 多线程测试接口压力_线程组_06

 

  • 【文件名】:导入CSV文件的路径

其他的不变

④HTTP请求

 

请求参数里换成${XXX}变量写法,对应CSV文件设置。

其他参数一一对应填写进去。

⑤监听器

添加结果树和聚合报告,获取其他

多线程测试java 多线程测试接口压力_JSON_07

 

 

2、审核单据线程组

目录结构如下:

多线程测试java 多线程测试接口压力_线程组_08

 

 

①HTTP信息头管理器

同上操作

②HTTP请求

通过上面的目录可知有两个请求,是因为审核接口的时候“order_ids”是获取列表数据的id,所以需要查询接口获取到列表id的值,然后两个接口互相传送

多线程测试java 多线程测试接口压力_JSON_09

 

 

查询接口会查出来多条数据,但是如何提取每一条数据的id呢,先把结果树选择“JSON Path Tester”,然后再在“JSON Path Expression”里进行查询测试,输入【$.data[*]..id】

$.data[*]..id,代表的意思是

.代表一层结构

data[*]代表所有data参数

..id代表两层下的id

多线程测试java 多线程测试接口压力_多线程测试java_10

 

 

返回结果值:Result[index] = id号

③JSON提取器

多线程测试java 多线程测试接口压力_HTTP_11

 

 ④调试后置处理程序

加上这个元件,请求接口后还有一个结果树生成,调试的结果

多线程测试java 多线程测试接口压力_HTTP_12

 

⑤循环控制器 

把上面的调试参数放到循环控制器中,代表获取循环的次数

多线程测试java 多线程测试接口压力_JSON_13

 

最后把“id_XXX”的值循环传入请求参数中

${__V(id_${__counter(,)},)}

多线程测试java 多线程测试接口压力_线程组_14

 

【转】因为要把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}


 

3、确认单据线程组

多线程测试java 多线程测试接口压力_JSON_15

 

 

跟“2、审核单据线程组”同理。

 

最终结构如下:

多线程测试java 多线程测试接口压力_多线程测试java_16

 

 

  

四、附录



不积跬步,无以致千里;不集小流,无以成江海。 如转载本文,请还多关注一下我的博客:; 我的Github地址:https://github.com/Owen-ET———————————— 无善无恶心之体, 有善有恶意之动, 知善知恶是良知, 为善去恶是格物。