JMeter快速入门知识系列(5)----JMeter参数化之CSV Data Set Config

5.1 参数化的定义

所谓参数化,就是将客户端发送给服务器处理的数据预先保存到一个参数中的过程。

一般来说,对于功能测试,当用不同的数据测试相同的功能时,我们可以使用参数化来精简测试;对于性能测试,为了真实模拟多个用户的操作行为或应对系统对多个用户同时操作的特殊限制(比如数据唯一性要求),需要使用参数化来解决这些问题。

JMeter提供了非常多的参数化的方式和手段,常见有:

1.配置元件 CSV_Data_Set_Config

2.内置参数化函数,比如__CSVRead()

5.2 CSV_Data_Set_Config

配置项
1.Filename:
要读取的数据文件的路径或名称。可以使用绝对路径或相对路径。
当使用相对路径表示文件路径时,测试计划所在目录为当前目录。
当JMeter以分布式模式运行时,参数化的数据文件需要复制到每台Slave中,并且要设置相同的目录结构。
2.File Encoding:
若没有设置则以操作系统的字符编码去读取数据文件。
可以指定以何种编码去读取数据文件,以防止出现乱码。
比如操作系统默认字符编码为GBK,而数据文件(CSV文件)的编码为UTF-8,
则读出来的数据肯定为乱码,在此情况下要设置File Encoding为“UTF-8”才能读取成功。
3.Variable Names(comma-delimited):
用于保存数据文件列值的变量名列表。变量名之间用,(逗号)分隔。
若变量名列表为空,JMeter则将数据文件的第一行各字段值作为各个变量名(不论是否忽略第一行)。
比如数据文件中有如下两行值:
张三,男,25
李四,女,20
在没有设置变量名列表的情况下,会将第一行的三个值当做变量名:张三,男,25
{张三},{男},KaTeX parse error: Undefined control sequence: \t at position 333: …Delimiter (use'\̲t̲'for tab): 数…{__threadNum}来获取,
则数据文件名可设置为: testdata${__threadNum}.csv
5.3 应用案例

这里以前面介绍过的查询被购买商品总金额接口为例来讲解。

参数化步骤
1.确定接口参数中哪些请求参数需要进行参数化
在设计测试用例时,我们针对商品编号,商品规格,商品数量来准备数据,
故对id,attr,number参数化
2.将测试数据放在外部一个文档保存,文件类型为csv或txt --> *.csv or *.txt
新建一个testdata.csv,一行写一个用例,多个参数值默认用,分隔:
case_name,id,attr,number
case1,9,226,3
case2,226,1
case3,9,1
case4,9,226,
3.添加并配置CSV Data Set Config配置元件
4.在请求中将写死的数据用第3步中定义的变量进行替换
data --> ${varName}
比如 ${attr}
5.配置参数化
5.1 将线程数设置为用例的个数
5.2 循环控制请求的次数
a.添加一个循环控制器,设置其循环次数为测试用例个数
b.将CSV Data Set Config配置元件与请求移到循环控制器下面
JMeter快速入门知识系列(5)----JMeter参数化之CSV Data Set Config