『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化
我们在使用JMeter进行测试的时候,测试数据是一项重要的准备工作,当每次迭代的数据不一样的时候,就需要进行参数化,也就是从参数化数据文件中来读取测试数据。
JMeter中的参数化方式有多种,我们之前讲过了使用CSV 数据文件设置组件,从.cvs
和.txt
文件中读取数据。
今天我们来说一下,使用函数助手实现JMeter的参数化,其实方法很类似,只是调用数据的方式略有不同。
需求:我们以一个登陆接口为例。
发送登录请求的时候,我们需要传递两个参数:phone
和password
。
针对这个登录接口设计5条用例,如下:
- 正常登录。
- 手机号未注册,即:手机号填写错误。
- 手机号不合法,即:手机号填写错误位数不对或为空。
- 手机号或密码错误,即:密码错误。
- 密码不合法,即:密码为空。
1、测试计划中的元件
添加元件操作步骤:
- 创建测试计划。
- 创建线程组:
选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组
。 - 在线程组里面,添加取样器“HTTP请求”组件:
选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求
。 - 在线程组里面,添加监听器“察看结果树”组件:查看结果,
选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树
。
最终测试计划中包含的元件如下:
点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
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.properties
、user.properties
或者命令行中。JMeter还另外定义了一些内置属性,从方便的角度考虑,属性START的值会被复制到同名变量中去。
下面是具体列表:
START.MS
:以毫秒为单位的JMeter启动时间;START.YMD
:JMeter启动日期格式yyyyMMdd
;START.HMS
:JMeter启动时间格式HHmmss
;TESTSTART.MS
:以毫秒为单位的测试启动时间;请注意:START变量/属性表征的是JMeter启动时间,而非测试的启动时间,它们主要用于文件名之中。
(3)编辑后的函数助手界面
因为我们使用函数助手实现JMeter中的参数化,所以我们要使用__CSVRead
函数。
然后我们需要把数据文件的绝对路径填入第一个输入框中,在第二个输入框选择取第几列的数据。
最后我们点击“生成”按钮,就会生成一个函数表达式。
如下图所示:
提示几点:
- 在
The result of the function is
的输入框中要看到参数文件中的值,算是成功。 - 把生成函数字符串,复制到请求元件中需要参数化的地方。
- 文件数据中的每一列数据,都要生成一个函数字符串。(其实就是最后的列数不一样)
4、HTTP请求组件内容
编辑HTTP请求组件中的内容,然后把需要使用参数化变量的地方,引用函数助手中生成的函数字符串表达式。
如下图所示:
5、线程组元件内容
如果需要使用CSV文件中所有的数据,需要设置线程数。
因为没有了CSV数据文件设置组件的参与,所以这里只能使用线程数进行设置,才能实现变量的循环应用。
如果使用循环次数进行设置,效果就是使用同一用户,执行几次登陆操作。
6、脚本运行结果
该测试脚本运行结果如下图所示:
我们可以看到,一个发送了5次请求,每次请求使用的参数值都是不同的,并且返回结果的预期也与我们设想的一样。
这样就演示了,使用函数助手实现JMeter中的参数化。
7、总结JMeter函数助手使用步骤
- 点击JMeter页面的函数助手。
- 选择需要使用的函数。
- 设置函数相关参数。
- 点击生成可被引用的函数字符串。
- 复制函数字符串。
- 粘贴到需要使用的位置。
『动善时』JMeter基础 — 27、通过JMeter函数助手实现参数化的更多相关文章
- 『动善时』JMeter基础 — 28、JMeter函数助手详解
目录 1.函数助手介绍 2.函数助手中的函数分类 3.常用函数介绍 (1)__Random函数 (2)__counter函数 (3)__time函数 (4)__property函数 (5)__setP ...
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 8、JMeter主要元件介绍
目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...
- 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...
- 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作
目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...
- 『动善时』JMeter基础 — 2、JMeter的安装和启动
1.安装Java环境 由于JMeter是纯Java的桌面应用程序,因此它的运行环境需要Java环境,即需要安装JDK或JRE.(也就是安装JDK环境) 步骤简要说明: 下载并安装JDK 配置环境变量 ...
- 『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
目录 1.默认语言设置 2.配置默认编码格式 3.GUI图标放大比例设置 4.功能区工具栏图标大小设置 5.视图区目录树图标大小设置 6.内容区编辑字体设置 7.添加JMeter元素快捷键设置 8.捕 ...
- 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)
目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...
- 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化
目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...
随机推荐
- Spring学习笔记(五):JDBCTemplate+事务管理
1 概述 Spring为开发者提供了JDBCTemplate,可以简化很多数据库操作相关的代码,本文主要介绍JDBCTemplate的使用以及事务管理功能. 2 JDBC Template 2.1 配 ...
- 八戒转世投胎竟然是Java设计模式:桥接模式
目录 示例 代码实例 桥接模式 定义 意图 主要解决问题 何时使用 优缺点 八戒转世投胎的故事 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1.比如有 ...
- 开坑:mysql相关问题
一. 先过滤后连表和先连表后在mysql中选择的哪一种? 二. left join 和inner join使用场景有什么区别? 三. 第二个问题的衍生问题:left join中where 条件使用对n ...
- 熟知Mysql基本操作
本文是学习 Mysql必知必会 后的笔记 学习之前需要创建一个数据库,然后导入下面两个mysql脚本 create database db1 charset utf8; ############### ...
- JavaWeb请求与响应 Cookie&Session
1.请求与响应 &Cookie&Session 1.1.请求与响应 HTTP协议 概念:英文全称:HyperText Transfer Protocol 中文全称:超文本传输协议 ...
- hdu2482 字典树+spfa
题意: 给你一个地图,地图上有公交站点和路线,问你从起点到终点至少要换多少次公交路线. 思路: 首先上面的题意说的和笼统,没说详细是因为这个题目叙述的很多,描述起来麻烦, 下面 ...
- hook Android系统调用的乐趣和好处
翻译:myswsun 0x00 前言 Android的内核是逆向工程师的好伙伴.虽然常规的Android应用被限制和沙盒化,逆向工程师可以按自己希望自定义和改变操作系统和内核中行为.这给了你不可多得的 ...
- 使用BurpSuite抓取HTTPS网站的数据包
昨天面试,技术官问到了我如何使用BurpSuite抓取https网站的数据包,一时间没能回答上来(尴尬!).因为以前https网站的数据包我都是用Fiddler抓取的,Fiddlert自动帮我们配置好 ...
- Win64 驱动内核编程-20.UnHook SSDT
UNHOOK SSDT 要恢复 SSDT,首先要获得 SSDT 各个函数的原始地址,而 SSDT 各个函数的原始地址,自然是存储在内核文件里的.于是,有了以下思路: 1.获得内核里 KiService ...
- springboot项目部署(war包)
将springboot项目打包成war,并且部署到tomcat.比较麻烦,自己踩的坑也比较多.算了一下,找bug的时间,有两天熬到凌晨2点. 修改pom.xml使得打包成war <groupId ...