对一个系统的指定功能进行压力测试时,发现把登录接口一起做了压力测试,那么如何在保持登录情况下,单独对指定接口进行压力测试呢?
01
压力测试目标
对接口A进行X次压力测试(本文示例压测10次)
02
脚本设计思路
-
接口请求头
-
【系统登录】接口请求
-
【系统登录】接口断言
-
获取token
-
【子系统登录】接口请求
-
【子系统登录】接口断言
-
获取cookie
-
子系统的功能接口A请求:
添加请求cookie管理器
-
子系统的功能接口A断言
-
监听器
03
脚本解说
✅ Logic Controller
逻辑控制器,主要用于控制jmeter脚本运行的逻辑:
-
Once Only Controller仅一次控制器:主要用于控制登录接口,确保压力测试过程中,登录接口只运行一次即可
-
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两种格式,第一种用于查看接口请求的详细日志信息,第二种用于查看接口请求的耗时等性能信息。
04
脚本正文
1、脚本结构
2、HTTP request示例-post请求
3、HTTP request示例-get请求
由于使用正则表达式匹配获取token,所以会匹配到多个数据,此时可在“调试器”内查看具体token在哪个变量上,引用时填入具体变量名称即可
上图可看到,子系统登录接口请求需要的token在变量“tokenlist_g1”上,故接口入参直接引用变量${ tokenlist_g1},如下图:
4、HTTP request(压测接口)
-
添加cookie管理器
发起请求时会自动获取cookie信息
接口请求配置与上面两个http请求一致,均需要包含域名、路径、请求方法、请求体
5、JSON Assertion
由于本文案例的接口请求响应数据都是json格式,所以使用json断言。
响应结果如下:
上图可知,通过判断响应结果的description字段值,来判断接口请求是否成功
对应的断言配置:
其他接口的断言也可按上述方法设置
6、逻辑控制器
接口完整请求编辑好后,引入逻辑控制器来控制“登录模块”以及“需要进行压测的接口模块”
将登录相关接口,移动到“Once Only Controller”下,确保执行脚本时,该脚本仅运行一次
将需要进行压测的接口,移动到“Loop Controller”下,确保可以循环运行。
7、监听器
本文使用两种监听器存储测试报告
监听器要添加在线程组(Thread Group)上,才可监听所有请求的测试报告,如下图
05
脚本运行结果
总结:
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。