目录
3、我们在JMeter中新建一【http请求】,实现请求查询列表
5、新建一【JAVA请求】,名字直接为 ${ID} (即上面取值的变量)方便我们后续查看结果。
6、最后添加一监听器【查询结果树】,运行后(如下)我们看到三个用户(线程)的取值一样。
7、在正则表达式提取器中,使用${__threadNum}作为匹配数字的值。
8、最后我们再来运行下,看看取值结果(如下),即完美解决了将接口查询结果列表按顺序赋值给各用户,保证各用户赋值唯一的问题。
前言:
在JMeter中,有一个特殊的变量__threadNum
可以用于获取当前线程的编号。这个变量非常有用,可以在测试中帮助你实现一些复杂的逻辑。
使用JMeter做性能测试会遇到这么一个场景:后面的请求需要根据前面的查询列表结果通过正则表达式提取器取值后赋值,而后面用户的赋值必须是唯一的,此时该如何做?
如果按编程思维来说,这个问题并不难。只需要把前面的结果保存到一个数组变量中,后面的用户(即线程组中的单个线程)逐一从该数组变量中取值即可。
下面谈谈具体的思路
1、假如我们前一请求的查询列表结果如下
2、此时要用3个用户(线程)执行测试,迭代一轮
3、我们在JMeter中新建一【http请求】,实现请求查询列表
4、通过正则表达式提取器对查询结果取值
5、新建一【JAVA请求】,名字直接为 ${ID} (即上面取值的变量)方便我们后续查看结果。
6、最后添加一监听器【查询结果树】,运行后(如下)我们看到三个用户(线程)的取值一样。
这里可能大家第一时间想到的是对前面查询列表结果的取值做处理,但前面提到小酋尝试过要实现很复杂。仔细看上面截图中线程组的每个线程都有编号(如 线程组 1-3),那我们是不是可以在这上面想办法?
7、在正则表达式提取器中,使用${__threadNum}作为匹配数字的值。
8、最后我们再来运行下,看看取值结果(如下),即完美解决了将接口查询结果列表按顺序赋值给各用户,保证各用户赋值唯一的问题。
思考几个问题:
- 现实中我们的查询列表请求还会带上page(页数),PageSize(分页条数),此时我们的用户(线程)要保证取值唯一,PageSize与线程数该如何赋值?
- 如果我们要保证每轮每个用户(线程)取值都是唯一的,page该如何利用起来?
- 性能测试场景中,碰到查询列表结果数据不够,该如何处理?
作为一位过来人也是希望大家少走一些弯路
在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。
(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)
相信能使你更好的进步!
点击下方小卡片