目录
前言:
背景:
难点:
场景 a:
场景 b:
前言:
使用JMeter进行审批类接口的并发测试是一种有效的方法,可以模拟多个用户同时对接口进行审批操作,以评估系统在高负载情况下的性能和稳定性。
背景:
页面上单据审核操作,单据并发操作时会多笔成功提交,出现提交多个支付申请的问题
难点:
- 数据自动创建
- 接口请求需要登录后执行
- 动态获取审核单据的请求参数
-
最大限度模拟并发操作,降低请求间隔
解决思路: -
使用数据抛送接口创建数据
-
使用 jmeter 头和 cookie 管理器,保存登录 session
-
通过查询类接口,获取审核请求所需参数
-
线程组添加同步定时器,确保请求的同时性
具体实现:
- 使用数据抛送接口,来进行数据的创建,有以下注意点
- 随机生成项目单据号,确保数据可创建成功
- 保存创建数据的项目单据号,方便之后查询接口使用
- 在实现登录和提交操作时,进行了两种场景模拟
场景 a:
使用单用户登录,模拟同一用户多浏览器登录进行并发提交。起初将登录和提交请求放到同一线程组中,但是发现在短时间内使用同一用户进行单点登录时,会有部分登录报错,故将登录请求单独放置在一个线程组中,提交请求放在另一线程组,之后将登录线程组中 cookie 传输到请求线程组中(此种方式其实是模拟单用户在同一浏览器多开并发)。
由于登录和发送请求设置不同线程组,需要在线程组间传递 cookie,具体为需要修改 jmeter.properties 文件,设置 CookieManager.save.cookies=true,取出登录后 cookie 参数,并传递到执行审核请求的线程组
整体结构:
声明参数为全局变量:
拼接 cookie 信息:
设置同步计时器,确保单据并发提交:
场景 b:
在真实场景中,单用户并发操作的较少,同时操作同一单据的场景,更多的是多个不同用户。模拟此种场景,要做到的是多线程时,每个线程使用不同的用户登录并进行操作。此处的实现方式,是获取线程编号,然后为线程指定登录账号(如线程 1 读取账号 1,线程 2 读取账号 2),在这种不同用户的场景下,就需要将登录和提交请求放置在同一线程组中,顺序执行操作即可
整体结构:
获取线程 ID 并指定账号:
作为一位过来人也是希望大家少走一些弯路
在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。
(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)
相信能使你更好的进步!
点击下方小卡片