说到Jmeter,大家都知道是做接口测试和性能测试的一个工具。很多人脑中会浮现参数化、集合点、检查点等名词,前两篇已经介绍了Jmeter的入门操作,那今天我们就来看如何修改我们的脚本来实现参数化。
举例是我一贯的风格,之前举例截图中,Jmeter都是中文版的操作界面,但是小白根据我的文章进行搭建环境后,发现是英文版的。其实Jmeter自带语言转换功能。操作如下:
点击”Options”->”Choose Language”->”Chinese(Simplified)”
还有一种方法,在Jmeter的bin目录下,找到jmeter.properties文件,右键编辑如下图:
其中#language=en,#代表注释,language=en代表语言设置为英文。其实此时这个配置是不生效的,只不过Jmeter默认使用英文。我们可以把前面的#删除,使这项配置生效。把en改成zh_CN,就是把语言改成了中文。
推荐大家使用第二种方法,就是在配置文件jmeter.properties中修改。因为第一种方法是临时的,关闭Jmeter后再次打开,又变成了英文。而第二种方式是永久的。
言归正传,接下来我们就来谈谈参数化。参数化的方法有很多种,比如CSV Data Set Config、函数、计数器、用户定义变量等。我们就一个一个来练练手吧。
一、CSV Data Set Config
说到参数化,可能网上的一些教程只会告诉你CSV Data Set Config,但是我认为参数化一共有4类,这4类中常用的有7种。那么我们就先聊聊烂大街的方法CSV Data Set Config。还是以中信银行的基金搜索接口为例,在线程组鼠标右键选择”添加”->”配置元件”->”CSV Data Set Config”
1.文件名:可以输入参数文件的绝对路径或相对路径,参数文件可以保存在txt或csv文件里,比如D:\apache-jmeter-5.3\project\data.txt。若脚本文件和参数化的文件在同一个目录下,如下图:
那么CSV Data Set Config的文件名还可以输入相对路径,例如”data.txt”和”./data/data.csv”都是可以的。Jmeter5.3版本,我测试过,路径名输入正斜杠或反斜杠,都可以找到参数文件,大家再也不用担心斜杠输错了。
2.文件编码:大部分情况下都是UTF-8,如果出现中文乱码可以尝试下GBK。
3.变量名:接口请求时,引用这个参数化的变量名称,多个变量用英文逗号隔开
4.忽略首行:若参数文件的数据量较小,可以设置成FALSE。若较多建议设置成TRUE(实际上就是表头)
5.分隔符:参数文件里多个参数之间用分隔符隔开,默认情况下是英文逗号,但是如果你的参数带逗号比如第一个参数是”hello,we go”,第二个参数是”你好,我们走”,此时若使用默认分隔符,系统会认为有4个参数,第一个是hello第二个是we go,第三个是你好,第四个是我们走;这时要修改CSV Data Set Config里的分隔符,观察发现两个参数中都不含”==”,所以我们可以把分隔符改成== ,分隔符如何设置全凭个人喜好,只要参数中没有这个符号即可。
后面4个不常用,使用默认配置就行了。
可以看到第三次请求调用的就是第三组的参数A和3。
二、用户定义变量
这次我们加一个接口,产品搜索接口,产品搜索界面如下。
用户定义变量有两个地方可以设置,第一个是测试计划、第二个是配置元件。首先看一下测试计划,点击测试计划节点,点击添加,输入变量名称和变量值,接口应用变量的方式和CSV一样,${key}
第二个配置元件,线程组鼠标右键”添加”->”配置元件”->”用户定义变量”
两者区别在于测试计划中设置的变量,是针对所有线程,所有请求的。而配置元件添加的用户定义变量,是根据他的上级节点决定的。若上级节点是线程,则只对这个线程起作用,若上级节点是请求,则只对这个请求起作用,若上级节点是测试计划,则对所有线程的所有请求都起作用。比如图中的配置元件,就只对“搜索有关的接口”这个线程组起作用。
这两个接口,都有一个搜索框,功能完全相同,所以这2个接口的文本框搜索字段,都输入${key},测试时,只要修改用户定义变量里的值,就可以了,不用去逐一修改每个接口。当接口多的时候,很方便。
作者:合肥人真帅
来源:51Testing软件测试网原创