基于jmeter的接口不同请求参数并发

在测试过程中经常有不同请求参数同时并发场景,本文详解介绍用jmeter实现不同方式的并发

1.不同测试计划实现并发

多个相同线程组可以实现不同的请求参数同时执行,只要消息体数据不同就可以,测试计划按照下图中配置

基于jmeter的接口不同请求参数并发_第1张图片

请求参数按照下图设置,添加服务器Ip,端口,请求路径,消息体中写入请求参数

基于jmeter的接口不同请求参数并发_第2张图片

设置完毕,点击上方绿色运行按钮即可

2. 利用csv文件实现并发

如两组请求并发,按照下图设置

基于jmeter的接口不同请求参数并发_第3张图片

 下图CSV数据文件设置中变量名称一次用逗号分开,填写请求参数传入的变量名称,已经csv文件所在路径

 基于jmeter的接口不同请求参数并发_第4张图片

参数介绍:

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请求参数如下

基于jmeter的接口不同请求参数并发_第5张图片

在csv文件中按照CSV数据文件中设置变量的顺序依次填入变量值,从左到右依次对应每一个变量值,每一行数据表示一次请求。

基于jmeter的接口不同请求参数并发_第6张图片

设置完毕,点击上方绿色运行按钮即可

 3.利用用户参数实现不同请求参数传入时并发执行

下图中设置变量名和变量值,这里实现workAreaCode01每次请求都传入不同的参数,测试计划配置和第2点配置一样,可实现两组请求并发(注意:在线程组中添加的变量只能在本线程中使用,在测试计划中添加的用户变量为全局变量,支持在不同线程组中使用)

基于jmeter的接口不同请求参数并发_第7张图片

在HTTP请求中引用设置的变量,如下图

基于jmeter的接口不同请求参数并发_第8张图片

点击上方运行按钮即可,会同时调用两次接口,其中workAreaCode01每次请求依次传入不同的请求参数

4.利用计数器实现大量数据推送场景,如其中某个字段需要不同值

1)添加计数器

基于jmeter的接口不同请求参数并发_第9张图片

2)需要计数器的字段,通过"${应用名称}"来设置参数,设置完,该字段循环推送按照计数器递增传入参数

基于jmeter的接口不同请求参数并发_第10张图片

3)设置线程数量,这里的线程数量,每执行一次线程,取一次计数器里面的值,按照计数器递增

基于jmeter的接口不同请求参数并发_第11张图片

5.二进制文件导入

部分导入功能使用excel文件可以导入参数,传入数据格式为二进制

在jmeter中同样创建测试计划+请求+结果查看分析器,参考前面的配置

1)线程配置如下,标识同时4个线程开始导入,循环导入7次

基于jmeter的接口不同请求参数并发_第12张图片

2)设置Http请求参数

基于jmeter的接口不同请求参数并发_第13张图片基于jmeter的接口不同请求参数并发_第14张图片

文件类型:application/octet-stream

6.获取接口请求返回的json参数

1)新增线程组,添加一个json提取器,按照下列设置,可用于获取token

基于jmeter的接口不同请求参数并发_第15张图片

2)新增一个后置程序处理器,按照下图设置

${__setProperty(mytoken,${token},)}//将json提取的token接收到mytoken变量

基于jmeter的接口不同请求参数并发_第16张图片

到此已经获取了token接口返回的参数,并接收到mytoken变量里面

7.要在其他线程中使用上一步返回的token

1)增加一个前置处理,在执行线程前调用

String gettoken = "${__property(mytoken,,)}";//将token获取线程组中,mytoken接收到getToken
var.put("token88",gettoken);//把gettoken复制给jmeter变量token8

基于jmeter的接口不同请求参数并发_第17张图片

2)在http请求头里面,通过${变量名}引用

基于jmeter的接口不同请求参数并发_第18张图片

你可能感兴趣的:(jmeter,压力测试)