『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

时间:2022-07-26 22:29:20

我们在使用JMeter进行测试的时候,测试数据是一项重要的准备工作,当每次迭代的数据不一样的时候,就需要进行参数化,也就是从参数化数据文件中来读取测试数据。

JMeter中的参数化方式有多种,我们之前讲过了使用CSV 数据文件设置组件,从.cvs.txt文件中读取数据。

今天我们来说一下,使用函数助手实现JMeter的参数化,其实方法很类似,只是调用数据的方式略有不同。

需求:我们以一个登陆接口为例。

发送登录请求的时候,我们需要传递两个参数:phonepassword

针对这个登录接口设计5条用例,如下:

  1. 正常登录。
  2. 手机号未注册,即:手机号填写错误。
  3. 手机号不合法,即:手机号填写错误位数不对或为空。
  4. 手机号或密码错误,即:密码错误。
  5. 密码不合法,即:密码为空。

1、测试计划中的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
  3. 在线程组里面,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
  4. 在线程组里面,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树

最终测试计划中包含的元件如下:

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

2、数据文件内容

创建一个.csv文件,名为login_data.csv,然后根据需求编辑数据文件内容。使用函数助手实现参数化的时候,我们不在数据文件的第一行添加列表明,这样方便我们取值。

然后使用Notepad++打开该文件,点击“编码” —> 转为UTF-8编码,防止中文乱码。

最终所得到的.csv格式文件的内容如下:

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

3、函数助手配置

(1)函数助手的打开方式

在JMeter中打开函数助手界面的方式有两种:

第一种:选项 ——> 函数助手对话框

第二种:在工具栏中常用功能的快捷按钮,如下图:

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

(2)函数助手界面介绍

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

界面说明:

  • 选择一个功能:这里是选择你要使用的函数。
  • 函数参数:每个函数需要的函数参数都是不一样的。

    我们以__CSVRead函数为例:

    1)CSV file to get values from | *alias:填写数据文件路径。

    2)CSV文件列号| next| *:标识在CSV文件中读取第几列中的数据,从0开始,第一列0、第二列1、第三列2,依次类推。
  • 点击生成按钮,生成获取参数值的函数表达式,可以在下方中看到生成的结果,生成的结果即为从数据文件中拿到的参数值。
  • Reset Variables:重置变量。
  • The result of the function is:当我们文件路径和参数值的列号填写后、点击“生成”按钮,就会将读取到的值显示在这里。
  • Current JMeter Variables:当前的JMeter变量相关信息。

说明:Current JMeter Variables中的内容说明。

(1)预定义变量

大多数变量都是通过函数调用和测试元件(如用户自定义变量)来设置的,在这种情况下用户拥有对变量名的完整控制权。

但是有些变量是JMeter内置的,例如:JMeterThread.last_sample_ok:最近的采样是否可以(true/false)。

(2)预定义变量属性

JMeter属性集是在JMeter启动时通过系统属性初始化的,还有其他补充的JMeter属性来自于jmeter.propertiesuser.properties或者命令行中。

JMeter还另外定义了一些内置属性,从方便的角度考虑,属性START的值会被复制到同名变量中去。

下面是具体列表:

  • START.MS:以毫秒为单位的JMeter启动时间;
  • START.YMD:JMeter启动日期格式yyyyMMdd
  • START.HMS:JMeter启动时间格式HHmmss
  • TESTSTART.MS:以毫秒为单位的测试启动时间;

请注意:START变量/属性表征的是JMeter启动时间,而非测试的启动时间,它们主要用于文件名之中。

(3)编辑后的函数助手界面

因为我们使用函数助手实现JMeter中的参数化,所以我们要使用__CSVRead函数。

然后我们需要把数据文件的绝对路径填入第一个输入框中,在第二个输入框选择取第几列的数据。

最后我们点击“生成”按钮,就会生成一个函数表达式。

如下图所示:

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

提示几点

  1. The result of the function is的输入框中要看到参数文件中的值,算是成功。
  2. 把生成函数字符串,复制到请求元件中需要参数化的地方。
  3. 文件数据中的每一列数据,都要生成一个函数字符串。(其实就是最后的列数不一样)

4、HTTP请求组件内容

编辑HTTP请求组件中的内容,然后把需要使用参数化变量的地方,引用函数助手中生成的函数字符串表达式。

如下图所示:

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

5、线程组元件内容

如果需要使用CSV文件中所有的数据,需要设置线程数。

因为没有了CSV数据文件设置组件的参与,所以这里只能使用线程数进行设置,才能实现变量的循环应用。

如果使用循环次数进行设置,效果就是使用同一用户,执行几次登陆操作。

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

6、脚本运行结果

该测试脚本运行结果如下图所示:

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化

我们可以看到,一个发送了5次请求,每次请求使用的参数值都是不同的,并且返回结果的预期也与我们设想的一样。

这样就演示了,使用函数助手实现JMeter中的参数化。

7、总结JMeter函数助手使用步骤

  1. 点击JMeter页面的函数助手。
  2. 选择需要使用的函数。
  3. 设置函数相关参数。
  4. 点击生成可被引用的函数字符串。
  5. 复制函数字符串。
  6. 粘贴到需要使用的位置。