Jmeter默认的CSV参数化工具,由于缺乏自定义功能,数据按照顺序执行,在并发测试中始终是测试过程中绕不过去的坎,尤其是对多年loadrunner用户来说,这种上古的功能完全无法满足测试的需求!!!
直到发现了Extended-csv-dataset-config插件,Extended-csv插件,几乎实现了原loadrunner参数化设置的全部能力,暂时欠缺的是loadrunner所支持的数据更新在“每次迭代”还是“每次出现”。
下表是Extended-csv插件支持的参数设置类型,将在后面详细介绍并演示:
Select Row | Update value | Out of Values | Allocate Block Size |
Sequential 顺序的 | Each Iteration 每次迭代 | Continue Cyclic 继续循环 | NA |
Sequential 顺序的 | Each Iteration 每次迭代 | Abort Thread 中止线程 | NA |
Sequential 顺序的 | Each Iteration 每次迭代 | Continue with Last value 继续使用最后一个值 | NA |
Sequential 顺序的 | Once 一旦选择一直用当前值 | NA | NA |
Random 随机的 | Each Iteration 每次迭代 | NA | NA |
Random 随机的 | Once 一旦选择一直用当前值 | NA | NA |
Unique 唯一的 | Each Iteration 每次迭代 | Continue with Last Value | Enabled 支持数据分块 |
Unique 唯一的 | Each Iteration 每次迭代 | Continue Cyclic | Enabled 支持数据分块 |
Unique 唯一的 | Each Iteration 每次迭代 | Abort Thread | Enabled 支持数据分块 |
Unique 唯一的 | Once 一旦选择一直用当前值 | NA | NA |
Sequential | Random | Unique | |
Each Iteration | 每次迭代从参数表中取下一个值 | 每次迭代从参数表中随机取下一个值 | 每次迭代从参数表中取一个唯一值 |
Once | 每个线程在第一次迭代分配的值将用于后续迭代 | 每个线程在第一次迭代随机分配的值将用于后续迭代 | 每个线程在第一次迭代分配的唯一值将用于后续迭代 |
线程组设置
测试脚本
- String Extended = vars.get("Extended")
- String threadID = "${__threadNum}"
- sleep(1000)
- log.info("111threadID=="+threadID + " Extended==" + Extended)
CSV文件
这里暂时不考虑,Allow Quote Data 和Sharing mode 的设置,后面详细介绍
从log可以看出两个线程,都从A顺序取值,类似jmeter原始工具,当前方法可能造成并发异常
不推荐使用,尤其是多线程时,还是Unique+Once比较好
当前应该是使用次工具最大的理由,实现了并发线程,不重复的迭代取值,在Auto Allocate 可以实现loadrunner类似的自动数据分组和手动分组
Unique+Once设置,比较常见的使用场景,如在5并发时,使用固定的不重复的5条登录信息
Allow Quoted Data / Sharing mode(允许引用数据/共享模式)
插件作者并没有详细的介绍Allow Quoted Data功能,在脚本测试中发现,主要区别在于,多个线程组时,是否共享数据,对于一个线程组执行时,用处不大。
并且需要配合Sharing mode使用当前线程组还是全部线程
请看下面示例:
Out of Values与loadrunner一样支持三种模式
Continue with Last Value:在所用数据用完后,一直使用最后一个参数,类似与A,B,C...用到J用完了,线程会一直J,J,J,J....下去
Continue Cyclic:在所用数据用完后,重新从A开始循环
Abort Thread:在所用数据用完后,终止线程,结束执行
CSDN下载
jmeterCSV插件ExtendedCSVdatasetconfig-系统安全文档类资源-CSDN文库
也可留言,直接邮箱发你
下载后放在
../apache-jmeter-5.4.3/lib/ext/di-extended-csv-1.1.jar