jmeter逻辑控制器,解决压测中的登录问题

一、压力测试目标

对接口A进行X次压力测试(本文示例压测10次)

二、脚本设计思路

1. 接口请求头

2. 【系统登录】接口请求

3. 【系统登录】接口断言

4. 获取token

5. 【子系统登录】接口请求

6. 【子系统登录】接口断言

7. 获取cookie

8. 子系统的功能接口A请求:

a) 添加请求cookie管理器

9. 子系统的功能接口A断言

10. 监听器

 

三、脚本解说

✅  Logic Controller

逻辑控制器,主要用于控制jmeter脚本运行的逻辑:

1. Once Only Controller仅一次控制器:主要用于控制登录接口,确保压力测试过程中,登录接口只运行一次即可

2. Loop Controller循环控制器:用于控制需要进行压力测试的接口,可以循环执行N次

 

✅  HTTP request

HTTP接口请求,主要用于编辑接口请求的域名(server/IP)、路径(path)、请求数据(request body)

 

✅  HTTP Header Manager

请求信息头,主要用于保存接口请求的header信息,规定接口响应数据的格式

Content-Type=application/json;charset=UTF-8

 

✅  Regular Expression Extractor

正则后置处理器,主要用于从接口的响应体内提取对应的token或cookie信息(需要掌握正则表达式基础语法)

 

✅  Debug PostProcessor

后置调试器,用于调试查看后置处理器生成的变量信息;本文主要用于查看后置处理器Regular Expression Extractor提取成功的token和cookie变量值

 

✅  Assertion

实现断言功能,从接口的响应体内提取指定的字段,赋值期望值,脚本运行时通过对比期望值和实际值是否一致,来验证接口请求是否成功。

 

✅  Listener

监听器,通俗点说就是测试报告,jmeter提供了多种测试报告格式,本文主要使用View Results Tree、Aggregate Report两种格式,第一种用于查看接口请求的详细日志信息,第二种用于查看接口请求的耗时等性能信息。

 

脚本正文

1.脚本结构 

2.HTTP request示例-post请求

 

3.HTTP request示例-get请求 

由于使用正则表达式匹配获取token,所以会匹配到多个数据,此时可在“调试器”内查看具体token在哪个变量上,引用时填入具体变量名称即可

上图可看到,子系统登录接口请求需要的token在变量“tokenlist_g1”上,故接口入参直接引用变量${ tokenlist_g1},如下图:

 

 

4.HTTP request(压测接口)

1) 添加cookie管理器

 

2) 发起请求时会自动获取cookie信息

接口请求配置与上面两个http请求一致,均需要包含域名、路径、请求方法、请求体

  

5.JSON Assertion

由于本文案例的接口请求响应数据都是json格式,所以使用json断言。

响应结果如下:

上图可知,通过判断响应结果的description字段值,来判断接口请求是否成功

对应的断言配置:

其他接口的断言也可按上述方法设置。

 

6.逻辑控制器

接口完整请求编辑好后,引入逻辑控制器来控制“登录模块”以及“需要进行压测的接口模块”

将登录相关接口,移动到“Once Only Controller”下,确保执行脚本时,该脚本仅运行一次

将需要进行压测的接口,移动到“Loop Controller”下,确保可以循环运行。

7.监听器

本文使用两种监听器存储测试报告

监听器要添加在线程组(Thread Group)上,才可监听所有请求的测试报告,如下图

 

脚本运行结果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]:在进行单接口压测,可以使用JMeter逻辑控制器来控制接口的执行顺序。首先,添加一个线程组,并在线程组添加逻辑控制器。例如,可以使用Once Only Controller来确保登录接口只执行一次。将登录接口移动到Once Only Controller。然后,再添加一个逻辑控制器,例如Loop Controller,来控制简历列表接口的执行次数。将简历列表接口移动到Loop Controller。这样,就可以实现对简历列表接口的压测。如果同设置了线程组的循环次数和循环控制器的循环次数,那么循环控制器下面的接口将运行的次数为两个数值相乘的结果。[1] 引用[2]:要进行单接口压测,首先需要安装JMeter。然后,打开JMeter并添加线程组。在线程组添加HTTP请求,并填入相应的URL和请求参数。接下来,可以添加HTTP信息头管理器来设置请求头信息。为了查看结果,可以添加查看结果树监听器。此外,还可以添加聚合报告监听器来查看压测结果的统计信息。如果需要使用CSV数据文件设置来配置账号和密码等信息,可以添加CSV数据文件设置。最后,运行压测并查看结果。[2] 引用[3]:在进行单接口压测,有遇到HTTP请求返回结果乱码的问题。为了解决这个问题,可以打开JMeter的bin目录下的jmeter.properties文件,并找到sampleresult.default.encoding参数。将其值修改为utf-8,并去掉注释符号。然后重启JMeter问题就可以得到解决。[3] 综上所述,要进行单接口压测,可以使用JMeter逻辑控制器来控制接口的执行顺序,添加相应的监听器来查看结果,以及根据需要进行一些配置来解决可能出现的问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值