Baolu CSV Data Set Config

1.背景

大家在平常使用JMeter测试工具时,对CSV Data Set Config 配置元件肯定不会陌生。如果我们的压测场景涉及到数据库更新操作(如:转账接接口)则需要对参数化数据进行分块,可就犯难了。如果不进行数据分块那么数据库会出现大量锁等待,造成我们测试结果可信度大大降低。今天宝路就聊下JMeter如何优雅的做到数据分块。

2.初衷

前面说到数据分块,大家可能会优先想到传统商业压测工具LoadRunner,因为LR是比较完美的支持数据分块的。

看了今天的文章的主题,相信大家心中应该就有答案了。其实早在宝路刚转这个行不久时就已经开发了这个功能,只不过当时是在官方源码的基础改动,每当升级JMeter版后,还要把这些新增代码移植到新版上,甚是麻烦。。。。。。关于实现逻辑大家可以参考下我早期写的 CSV Data Set Config 拓展开发 这篇文章。

最近宝路把这个功能做成了插件,代码也进行了重构优化,插件下载详见“宝路测试手记”微信公众号,下面我们就来揭开它的神秘面纱。

3.实战

插件截图:

 

0

本插件是在JMeter源生的 CSV Data Set Config 进了拓展开发,新增参数说明:

 

 

参数

说明

Allocate data for each thread When it is true (default false), the parameterized file is partitioned by threads, and each thread is allocated with different block data
Automatically allocate block size Only Allocate data for each thread set true
Set block size for each threads Only Allocate data for each thread set true and automatically allocate block size set false

 

重要的事情说三遍,插件支持中文释义、插件支持中文释义、插件支持中文释义。。。

 

1

 

实战验证--脚本结构图:

 

2

 

实战验证--测试结果(一):

 

3

 

4

 

从结果图可以看出,当采用自动分配数据块时,宝路设置线程组共启动5个线程,此时每个线程固定分2条数据。那么我们再把线程大小调整到10看看运行结果。

 

5

 

嗯!此时每个线程固定分配1条数据。

   实战验证--测试结果(二):

 

6

 

7

 

从结果图可以看出,当采用手动指定线程分配数据块时,宝路设置线程组共启动2个线程,设置每个线程分配5条数据,此时第一个线程只会读取前5条数据,第二个线程仅会读取后5条数据。

如果保持线程组仍启动2个线程,设置每个线程分配6条数据,会是什么样的结果呢?

 

8

 

可以看到出现了<EOF>值,其实不难看出是因为数据不够分了。。。。宝路这边采用EOF标记来提示。

插件下载以及后续优化方向:

由于JMeter分布式压测试模式的原因,目前仍需手动将参数化文件copy到指定slave机目录,后续宝路考虑可能会加入同步salve机参数化文件的功能,或者单独开发一个同步文件插件。

实际使用中可能还有从指定行开始读取数据的场景,比如:某个参数化文件里面存放的是消耗型数据,在某次场景执行完毕后消耗了100行,那么后续再次执行场景时,应该从101行开始读取数据,这样就不用测试人员花大量时间去准备好多参数化文件。

关于Baolu CSV Data Set Config插件,大家如果有任何疑问或建议,欢迎给宝路留言。

posted @ 2020-10-21 10:08  宝路  阅读(220)  评论(0编辑  收藏  举报