Baolu CSV Data Set Config
1.背景
大家在平常使用JMeter测试工具时,对CSV Data Set Config 配置元件肯定不会陌生。如果我们的压测场景涉及到数据库更新操作(如:转账接接口)则需要对参数化数据进行分块,可就犯难了。如果不进行数据分块那么数据库会出现大量锁等待,造成我们测试结果可信度大大降低。今天宝路就聊下JMeter如何优雅的做到数据分块。
2.初衷
前面说到数据分块,大家可能会优先想到传统商业压测工具LoadRunner,因为LR是比较完美的支持数据分块的。
看了今天的文章的主题,相信大家心中应该就有答案了。其实早在宝路刚转这个行不久时就已经开发了这个功能,只不过当时是在官方源码的基础改动,每当升级JMeter版后,还要把这些新增代码移植到新版上,甚是麻烦。。。。。。关于实现逻辑大家可以参考下我早期写的 CSV Data Set Config 拓展开发 这篇文章。
最近宝路把这个功能做成了插件,代码也进行了重构优化,插件下载详见“宝路测试手记”微信公众号,下面我们就来揭开它的神秘面纱。
3.实战
插件截图:

本插件是在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 |
重要的事情说三遍,插件支持中文释义、插件支持中文释义、插件支持中文释义。。。

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

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


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

嗯!此时每个线程固定分配1条数据。
实战验证--测试结果(二):


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

可以看到出现了<EOF>值,其实不难看出是因为数据不够分了。。。。宝路这边采用EOF标记来提示。
插件下载以及后续优化方向:
由于JMeter分布式压测试模式的原因,目前仍需手动将参数化文件copy到指定slave机目录,后续宝路考虑可能会加入同步salve机参数化文件的功能,或者单独开发一个同步文件插件。
实际使用中可能还有从指定行开始读取数据的场景,比如:某个参数化文件里面存放的是消耗型数据,在某次场景执行完毕后消耗了100行,那么后续再次执行场景时,应该从101行开始读取数据,这样就不用测试人员花大量时间去准备好多参数化文件。
关于Baolu CSV Data Set Config插件,大家如果有任何疑问或建议,欢迎给宝路留言。
Baolu CSV Data Set Config的更多相关文章
- JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置
众所周知,在进行接口测试的过程中,需要创建不同的场景(不同条件的输入,来验证不同的入参的返回结果).因而,在日常的自动化接口监控或商品监控等线上监控过程中,需要配置大量的入参来监控接口的返回是否正确. ...
- Jmeter—6 CSV Data Set Config 通过文件导入数据
线程组循环次数大于1的时候,请求里每次提交的数据都相同.有的系统限制了不能提交相同数据,我们通过 CSV Data Set Config 加载csv文件数据. 1 创建一个文本文件,输入参数值保存为. ...
- Jmeter组件1. CSV Data Set Config
位置:Test Plan | Add | Config Element | CSV Data Set Config 意义: 脚本参数化 节省CPU跟内存(可以准备好数据文件去代替动态生成数据,节约CP ...
- JMeter脚本参数化和断言设置( CSV Data Set Config )
用Badboy录制了Jmeter的脚本,用Jmeter打开后形成了原始的脚本.但是在实际应用中,为了增强脚本的多样性,就要使脚本参数化.这里我以登录为例,参数化用户账号与用户密码. 图1 :原始脚本 ...
- jmeter参数化之CSV Data Set Config
在jmeter中,可以用CSV Data Set Config实现参数化. 1.准备参数化数据
- 转:Jmeter之使用CSV Data Set Config实现参数化登录
在使用Jemeter做压力测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录: 首先通过Te ...
- 转:CSV Data Set Config 中文乱码问题
从csv读取中文一直乱码. CSV Data Set Config的File encoding为GB2312,对应参数化文件编码也为GB2312,但读取出变量值一直为乱码,后发现是Allow quot ...
- 配置 CSV Data Set Config 来参数化新增客户信息操作
1.首先根据新增客户信息的http请求,来确定需要参数化的变量,选取符合测试需求且经常变化或未来会变化的变量为需要参数化的变量,如本文中的客户端名称(sys_name).描述(description) ...
- jmeter笔记(5)--参数化--CSV Data Set Config
为了保证脚本的可移植性,我们需要把数据提取出来作为变量,变量可以分为两类: 公用变量:IP.端口.附件路径.CSV文件路径等: 测试变量:用户名.密码.用户ID.商品ID等 使用CSV Data Se ...
随机推荐
- [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题
[记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 目录 [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题 0x00 摘要 0x01 引言 0x02 ...
- ribbon源码(2) 负载均衡器
负载均衡器对外提供负载均衡的功能,本质上是是维护当前服务的服务器列表和服务器状态,通过负载均衡算法选取合适的服务器地址. 用户可以通过实现ILoadBalancer来实现自己的负载均衡器,ribbon ...
- HotSpot VM执行引擎的实现
Java代码的执行分类: 第一种是将源代码编译成字节码文件,然后再运行时通过解释器将字节码文件转为机器码执行 第二种是编译执行(直接编译成机器码).现代虚拟机为了提高执行效率,会使用即时编译技术(JI ...
- Java源码赏析(六)Java String 三顾
在大致了解了String之后,可能有的读者发现了,我们并没有谈到CharSequence接口. 原因是在这一节,CharSequence要和StringBuilder(Java1.5).StringB ...
- 刷题[网鼎杯 2020 朱雀组]phpweb
解题思路 打开是一个蛮有意思的背景,众生皆懒狗,是自己没错了.源代码看一看,啥都没有.抓个包 诶,一看到func和p两个参数,想到了call_user_func(). 尝试着把date改成system ...
- Linux 虚拟机绑定静态 IP
环境介绍 Machine: NUC8i5BEK OS: macOS Catalina 10.15.6 VirtualBox: 6.1.12 r139181 (Qt5.6.3) CentOS: 8.2. ...
- PHP正则表达式核心技术完全详解 第1节
作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 B站视频 : Bilibili.com 个 ...
- 基础篇:详解锁原理,volatile+cas、synchronized的底层实现
目录 1 锁的分类 2 synchronized底层原理 3 Object的wait和notify方法原理 4 jvm对synchronized的优化 5 CAS的底层原理 6 CAS同步操作的问题 ...
- 搭建 Spring 源码阅读环境
前言 有一个Spring源码阅读环境是学习Spring的基础.笔者借鉴了网上很多搭建环境的方法,也尝试了很多,接下来总结两种个人认为比较简便实用的方法.读者可根据自己的需要自行选择. 方法一:搭建基础 ...
- --initialize specified but the data directory has files in it. Aborting
出错版本: mysql 5.7 why? yum 安装数据库时候,默认数据存放目录为 /var/lib/mysql,然而这个目录下有数据 way? 进入 /var/lb/mysql 目录下清空该目录下 ...