参数化的定义:
将客户端发送给服务器处理的数据预先保存到一个参数中的过程. 一般来说,当用不同的数据测试相同的功能时,我们可以使用参数化来精简测试.
JMeter提供了非常多的参数化的方式和手段,常见有:
1.配置元件 CSV_Data_Set_Config
2.内置参数化函数,比如__CSVRead()
CSV_Data_Set_Config参数化:
参数化步骤
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},也就是说,在csv data set congif 配置的时候,变量名如果设置的是usr,那么在请求的时候,就用${usr}替换
5.配置参数化
5.1 将线程数设置为用例的个数(如果采用多线程的方式,就不要进行添加逻辑控制器,也可以读取得到每一行数据)
5.2 循环控制请求的次数(如果有多组数据,但是线程数只设置为一个,就可以采用循环控制器)
- a.添加一个循环控制器,设置其循环次数为测试用例个数
- b.将CSV Data Set Config配置元件与请求移到循环控制器下面
CSV Data Set Config配置项说明
注意:
在填写文件路径的时候,尽量不要写绝对路径,要写相对路径,这样以后换一个运行环境或者文件更改地址之后,脚本是不需要变化的,那么相对路径的写法就是:./文件名
共享模式说明
All threads∶所有线程共享同一个文件.每个线程组下的每个线程读取的参数值都不同. Current thread group∶当前线程组.对于包含该参数的每个线程组,每个参数文件都仅打开一次. Current thread∶当前线程.每个线程都单独打开一个参数文件.
注意:
在使用CSV_Data_Set_Config参数化的时候,可以使用txt文件,也可以使用csv文件,但是在做性能测试的时候,建议使用txt文件,原因有如下两点:
- 因为打开txt文件消耗的资源比csv文件少
- 使用csv的时候,有可能中文乱码,而txt默认编码模式是utf-8,
csv默认的分隔符是英文的逗号