大型公司为什么做网站,网站后台页面是什么,朋友做的网站图片不显示,有什么可以做兼职的网站吗前言
用过JMeter参数化的小伙伴#xff0c;想必对CSV Data Set Config非常熟悉。大家平时更关注变量名称#xff0c;是否忽略首行等参数#xff0c;其余的一般都使用默认值。然而我最近遇到一个未按照我的预想读取数据的案例#xff0c;原因就出在最后一个参数“线程共享模…前言
用过JMeter参数化的小伙伴想必对CSV Data Set Config非常熟悉。大家平时更关注变量名称是否忽略首行等参数其余的一般都使用默认值。然而我最近遇到一个未按照我的预想读取数据的案例原因就出在最后一个参数“线程共享模式”上。记录一下大家避坑。
业务需求及脚本逻辑
某系统用户提交订单之后在订单列表页面会新增一条记录。
压测前后需要分别查询订单数量根据提交订单的成功事务数来判断是否所有的订单都成功入库。
但是因为测试过程中多用户并发每个用户只能查到自己的订单所以检查时需要逐个检查所有参与并发测试的用户名下的订单数量然后加总求和。
详情可参见JMeter案例分享:通过采样器自动完成性能测试过程中的功能检查-数据条目验证-CSDN博客
查找问题
脚本调试时仅使用有限几个账户一切正常。但是当项目组提供真正的登录账号后数据验证总是对不上。于是减少并发数并把用户、订单数量信息一一打印出来查看。 原来
业务前数据检查的用户是usr1、2、3
执行业务的用户是usr4、5、6
业务后数据检查的用户又变成了usr7、8、9
分析原因
它们分属3个线程组虽然使用的是同一个数据文件但是因为数据文件是放置在线程组内的按照我的理解作用域也应该仅限于本线程组那么每一个线程组都应该从这个数据文件的第一行开始读取。
然而事实上这个数据文件似乎是三个线程组间共享的。
于是关注到CSV data set config中的共享模式sharing mode 官网中对该选项的介绍如下
All threads - (the default) the file is shared between all the threads.默认值文件在所有的线程间共享Current thread group - each file is opened once for each thread group in which the element appears文件仅在它所在的线程组中被打开一次Current thread - each file is opened separately for each thread每个线程都单独打开一份也就是说这个文件每个线程都会独自使用Identifier - all threads sharing the same identifier share the same file. So for example if you have 4 thread groups, you could use a common id for two or more of the groups to share the file between them. Or you could use the thread number to share the file between the same thread numbers in different thread groups.
下面我们分别设置来看看效果
All threads
默认值效果前面已经看到了所有的线程组中的所有线程共享一个文档从第一行顺序向下读取。
Current thread group
文件仅在当前线程组中有效本线程组结束后下一个线程组将重新打开一遍数据文件从第一行开始向下读取。这就是我当前这个测试场景中需要的效果。 Current thread
数据文件仅在当前线程中有效。同一个线程组的不同线程间不共享数据文件。
本例中数据验证线程组是单线程用循环控制器顺序执行的看不出效果看业务线程组3个并发执行1次也就是三个线程但是usr1登录了3次。
也就是说线程1打开数据文件从第一行开始读取
线程2打开数据文件从第一行开始读取
每个线程读取各自的文件。 Identifier
我在业务前数据验证和业务线程组中分别输入1标识这两个线程组是group 1
在业务后数据验证线程组中输入2标识这是group2 执行结果如下 红色的两个线程组group ID为1作为一个group共享数据文件。
黄色的线程组group ID为2作为一个group独享数据文件。
遗留问题
最后一种共享模式中这句话我不知道该怎么操作官网没有示例。
Or you could use the thread number to share the file between the same thread numbers in different thread groups.