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

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

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

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

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

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

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

1、测试计划中的元件

添加元件操作步骤

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

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

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

2、数据文件内容

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

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

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

3、函数助手配置

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

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

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

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

(2)函数助手界面介绍

界面说明:

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

    我们以__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函数。

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

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

如下图所示:

提示几点

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

4、HTTP请求组件内容

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

如下图所示:

5、线程组元件内容

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

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

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

6、脚本运行结果

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

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

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

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

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

『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化的更多相关文章

  1. 『动善时』JMeter基础 — 28、JMeter函数助手详解

    目录 1.函数助手介绍 2.函数助手中的函数分类 3.常用函数介绍 (1)__Random函数 (2)__counter函数 (3)__time函数 (4)__property函数 (5)__setP ...

  2. 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求

    目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...

  3. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  4. 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)

    目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...

  5. 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作

    目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...

  6. 『动善时』JMeter基础 — 2、JMeter的安装和启动

    1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...

  7. 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置

    目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...

  8. 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)

    目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...

  9. 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化

    目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...

随机推荐

  1. PBR(基于物理的渲染)学习笔记2

    相关资料 https://www.cnblogs.com/dojo-lzz/p/13237686.html 文档:PBR学习笔记.note 链接:http://note.youdao.com/note ...

  2. Day17_99_IO_FileReader文件字符输入流

    FileReader文件字符输入流 * 继承结构 Java.lang.Object - java.io.Reader; 抽象类 java.io.InputStreamReader; <转换流: ...

  3. OO_UNIT4_SUMMARY

    经过一个学期的学习,OO课程终于落下帷幕.本次博客会首先对第四单元作业的架构进行分析,再对OO课程进行总体回顾,最后是个人的建议与体会. 一.第四单元三次作业架构设计 1.第一次作业 第一次作业是对类 ...

  4. Mybatis的简单增删改查

    刚开始学习Mybatis可以先看下官方文档,MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集.MyBat ...

  5. linux下安装并使用msgfmt命令

    msgfmt安装方法: sudo apt-get install gettext 编码 po 文件为 mo 文件: msgfmt -o test.mo test.po mo 文件反编码成 po文件: ...

  6. POJ2536 二分图匹配

    题意:      有n只老鼠,m个洞,每个洞最多可以藏一只老鼠,每个老鼠的移动速度都是v,给你他们的当前坐标,和洞的坐标,突然老鹰来了,他们必须在s秒内跑到一个洞藏起来,问你最少有多少只老鼠被抓走了. ...

  7. IDS入侵检测系统

    目录 IDS入侵检测系统 入侵检测系统的作用 入侵检测系统功能 入侵检测系统的分类 入侵检测系统的架构 入侵检测工作过程 数据检测技术 误用检测 异常检测 IDS的部署 基于网络的IDS 基于主机的I ...

  8. Github搜索语法

    目录 使用 Github 进行邮件配置信息收集 使用Github进行数据库信息收集

  9. Web 服务器安全

    目录 Apache Apache出现过的漏洞 Tomcat Tomcat出现过的漏洞 Nginx

  10. 鼠标右键添加vscode

    实现效果 右键文件夹,可以使用vscode打开 右键文件,可以使用vscode打开 右键空白处,可以使用vscode打开 进行实现 下载压缩包 为了方便操作,和减少错误,将.reg文件上传到网盘中,点 ...