在测试过程中经常有不同请求参数同时并发场景,本文详解介绍用jmeter实现不同方式的并发
1.不同测试计划实现并发
多个相同线程组可以实现不同的请求参数同时执行,只要消息体数据不同就可以,测试计划按照下图中配置
请求参数按照下图设置,添加服务器Ip,端口,请求路径,消息体中写入请求参数
设置完毕,点击上方绿色运行按钮即可
2. 利用csv文件实现并发
如两组请求并发,按照下图设置
下图CSV数据文件设置中变量名称一次用逗号分开,填写请求参数传入的变量名称,已经csv文件所在路径
参数介绍:
1)Filename:文件路径(如果和脚本同路径,只需要输入文件名;否则要输入全路径)
2)File encoding:编码和文件格式保持一致,如果有中文,最好用UTF-8
3)Variable names:参数名称,参数之间用,隔开
4)Delimiter:输入文件(csv/dat等)中的分割符号;用\t代替tab键
5)Allow quoted data:当获取的数据中包含"时,要设置为True
6)Recycle on EOF: 设置为True后,允许循环取值
7)Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效
8)Sharing Mode:共享模式: All threads:所有线程,所有线程循环取值,线程1取第一行,线程二取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:该测试计划内的所有线程都取第一行
设置HTTP请求参数如下
在csv文件中按照CSV数据文件中设置变量的顺序依次填入变量值,从左到右依次对应每一个变量值,每一行数据表示一次请求。
设置完毕,点击上方绿色运行按钮即可
3.利用用户参数实现不同请求参数传入时并发执行
下图中设置变量名和变量值,这里实现workAreaCode01每次请求都传入不同的参数,测试计划配置和第2点配置一样,可实现两组请求并发(注意:在线程组中添加的变量只能在本线程中使用,在测试计划中添加的用户变量为全局变量,支持在不同线程组中使用)
在HTTP请求中引用设置的变量,如下图
点击上方运行按钮即可,会同时调用两次接口,其中workAreaCode01每次请求依次传入不同的请求参数
4.利用计数器实现大量数据推送场景,如其中某个字段需要不同值
1)添加计数器
2)需要计数器的字段,通过"${应用名称}"来设置参数,设置完,该字段循环推送按照计数器递增传入参数
3)设置线程数量,这里的线程数量,每执行一次线程,取一次计数器里面的值,按照计数器递增
5.二进制文件导入
部分导入功能使用excel文件可以导入参数,传入数据格式为二进制
在jmeter中同样创建测试计划+请求+结果查看分析器,参考前面的配置
1)线程配置如下,标识同时4个线程开始导入,循环导入7次
2)设置Http请求参数
文件类型:application/octet-stream
6.获取接口请求返回的json参数
1)新增线程组,添加一个json提取器,按照下列设置,可用于获取token
2)新增一个后置程序处理器,按照下图设置
${__setProperty(mytoken,${token},)}//将json提取的token接收到mytoken变量
到此已经获取了token接口返回的参数,并接收到mytoken变量里面
7.要在其他线程中使用上一步返回的token
1)增加一个前置处理,在执行线程前调用
String gettoken = "${__property(mytoken,,)}";//将token获取线程组中,mytoken接收到getToken var.put("token88",gettoken);//把gettoken复制给jmeter变量token8
2)在http请求头里面,通过${变量名}引用