51Testing软件测试论坛

标题: Jmeter系列(三)之你没想到的参数化 [打印本页]

作者: lsekfe    时间: 2020-10-26 10:52
标题: Jmeter系列(三)之你没想到的参数化
 说到Jmeter,大家都知道是做接口测试性能测试的一个工具。很多人脑中会浮现参数化、集合点、检查点等名词,前两篇已经介绍了Jmeter的入门操作,那今天我们就来看如何修改我们的脚本来实现参数化。
  举例是我一贯的风格,之前举例截图中,Jmeter都是中文版的操作界面,但是小白根据我的文章进行搭建环境后,发现是英文版的。其实Jmeter自带语言转换功能。操作如下:
  点击”Options”->”Choose Language”->”Chinese(Simplified)”
[attach]130328[/attach]
还有一种方法,在Jmeter的bin目录下,找到jmeter.properties文件,右键编辑如下图:
  其中#language=en,#代表注释,language=en代表语言设置为英文。其实此时这个配置是不生效的,只不过Jmeter默认使用英文。我们可以把前面的#删除,使这项配置生效。把en改成zh_CN,就是把语言改成了中文。

[attach]130329[/attach]
推荐大家使用第二种方法,就是在配置文件jmeter.properties中修改。因为第一种方法是临时的,关闭Jmeter后再次打开,又变成了英文。而第二种方式是永久的。
  言归正传,接下来我们就来谈谈参数化。参数化的方法有很多种,比如CSV Data Set Config、函数、计数器、用户定义变量等。我们就一个一个来练练手吧。
  一、CSV Data Set Config

[attach]130330[/attach]
说到参数化,可能网上的一些教程只会告诉你CSV Data Set Config,但是我认为参数化一共有4类,这4类中常用的有7种。那么我们就先聊聊烂大街的方法CSV Data Set Config。还是以中信银行的基金搜索接口为例,在线程组鼠标右键选择”添加”->”配置元件”->”CSV Data Set Config”
[attach]130331[/attach]
[attach]130332[/attach]
1.文件名:可以输入参数文件的绝对路径或相对路径,参数文件可以保存在txt或csv文件里,比如D:\apache-jmeter-5.3\project\data.txt。若脚本文件和参数化的文件在同一个目录下,如下图:
[attach]130333[/attach]
[attach]130334[/attach]
那么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个不常用,使用默认配置就行了。

[attach]130335[/attach]
[attach]130336[/attach]
[attach]130337[/attach]
可以看到第三次请求调用的就是第三组的参数A和3。
  二、用户定义变量
  这次我们加一个接口,产品搜索接口,产品搜索界面如下。

[attach]130338[/attach]
用户定义变量有两个地方可以设置,第一个是测试计划、第二个是配置元件。首先看一下测试计划,点击测试计划节点,点击添加,输入变量名称和变量值,接口应用变量的方式和CSV一样,${key}
[attach]130339[/attach]
第二个配置元件,线程组鼠标右键”添加”->”配置元件”->”用户定义变量”
[attach]130340[/attach]
两者区别在于测试计划中设置的变量,是针对所有线程,所有请求的。而配置元件添加的用户定义变量,是根据他的上级节点决定的。若上级节点是线程,则只对这个线程起作用,若上级节点是请求,则只对这个请求起作用,若上级节点是测试计划,则对所有线程的所有请求都起作用。比如图中的配置元件,就只对“搜索有关的接口”这个线程组起作用。
  这两个接口,都有一个搜索框,功能完全相同,所以这2个接口的文本框搜索字段,都输入${key},测试时,只要修改用户定义变量里的值,就可以了,不用去逐一修改每个接口。当接口多的时候,很方便。



作者: Miss_love    时间: 2020-12-25 10:36
参数化




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2