有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
在使用 JMeter 做压力测试的时候,我们可以使用 JMeter CSV Data Set Config 元件来实现参数化,每次请求发送不同的测试数据,模拟更真实的用户场景。
用户可通过 CSV 文件提前构造压测数据。JMeter 线程组循环时每次从 CSV 文件中读取一行作为测试数据,每次请求使用不同的测试用例。

使用 JMeter 配置参数文件

假设需要模拟给不同用户发送邮件的场景,我们提前准备好一份 CSV 格式文件,第一行作为表头,表示参数名。其他行作为测试数据。
在这个文件中我们定义了2个参数:name、email。我们可以在 JMeter 请求中通过${name}, ${email} 引用参数。
name, email
lyli,lyli@test.com
lucky,lucky@test.com
lucas,lucas@test.com
如果 CSV 文件中首行不包含参数名,则需要在 CSV Data Set Config 中额外设置参数名。
1. 右键单击测试计划,选择 Threads > Thread Group。



2. 右键单击线程组,选择 Config Element > CSV Data Set Config。


3. 配置 CSV Data Set Config. 在我们的案例中,导入 CSV 文件,其他的保留默认配置即可。此时默认以首行(name, email)作为参数名,我们可以在请求中引用 name、email 变量。


注意:
如果您的 CSV 文件首行不包含参数名,则需要设置参数名,配置如下:



在请求中引用 CSV Data Set Config 设置的参数

1. 右键单击线程组,选择 Sampler > HTTP Request


2. 配置 HTTP Sampler,发送 POST 请求。在 body 中使用${name}, ${email}引用 CSV 中配置的参数。


3. 右键单击线程组,选择 Listener > View Result Tree。通过 View Result Tree 我们可以查看每次请求发送和返回的数据,来确认以上配置的 CSV Data Set Config 是否生效。


4. 运行线程组,查看 View Result Tree 中请求发送的数据。我们可以看到一共发送了两个请求,每个请求 request Body 都不一样。
第一个请求:



第二个请求:




在 PTS 中使用 CSV 参数文件

2. 在左侧菜单栏中单击云压测 > 测试场景
3. 在创建测试场景页面选择“JMeter”压测类型,并单击开始,创建压测场景。



4. 上传刚配置的 Jmx 文件和 CSV 文件。


说明:
PTS 在运行压测时,会自动识别 Jmx 中配置的 CSV 文件路径,并替换成用户上传的同名文件。
例如:假设 Jmx 中配置的 CSV 文件路径为/Users/ke/Desktop/student.csv,在 PTS 中只需上传student.csv文件即可。PTS 在运行时会自动帮您识别同名文件,无需您更改 Jmx 中引用的文件路径。
5. CSV 文件切分:PTS 会根据用户配置的并发数,自动启动多个压测引擎,以集群化模式运行 JMeter 压测脚本。如果您希望每个引擎执行单独的测试用例,则需要用到 CSV 文件切分功能。
5.1 假设用户上传的 CSV 文件为:
name,email
lyli,lyli@test.com
lucky,lucky@test.com
lucas,lucas@test.com
5.2 勾选切分文件选项



如果用户配置的并发数较大,需要调度2个引擎执行该压测任务,则 CSV 测试数据会在2个引擎间均分。
引擎1获取的 CSV 文件为:
name,email
lyli,lyli@test.com
lucky,lucky@test.com
引擎2获取的 CSV 文件为:
name,email
lucas,lucas@test.com
6. 单击保存并运行,即可开始压测。