Jmeter参数化
本质:使用参数的方式来替代脚本中的固定的测试数据
实现方式:
-
定义变量(最基础)
-
文件定义的方式(所有测试数据都是固定的情况下)
-
数据库的方式(灵活)
-
函数方式(灵活)
参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法
JMeter中常见的参数化方式
- 用户定义的变量
- 用户参数
- CSV Data Set Config
- 函数
用户定义的变量
作用:定义全局变量
位置:测试计划–>线程组–>配置元件–>用户定义的变量
练习
请求:https://www.baidu.com:443
要求:使用用户定义的变量配置被测系统的协议、域名和端口
操作步骤:
- 添加线程组
- 添加用户定义的变量。格式:变量名-变量值
- 添加HTTP请求,引用定义的变量名。格式:${变量名}
- 添加查看结果树
用户参数
作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划->线程组->前置处理器->用户参数
练习:
请求:https://www.baidu.com
要求:第一个用户请求附带参数:name=“张三”&age=28;第二个用户请求附带的参数:name=“李四”&age=30
操作步骤:
1.添加线程组,线程数设置为2
2.添加用户参数
3.添加HTTP请求
4.查看结果树
小结
(1)什么时候使用用户参数?
- 针对同一组参数,当不同的用户来访问时,可以获取到不同的值
(2)使用”用户参数“进行参数化步骤?
- 添加线程组,设置线程数为n(表示模拟用户数)
- 添加用户参数
- 第一列添加多个变量名
- 后续每一列为一组用户的数据
- 添加HTTP请求,引用定义的变量名。格式:${变量名}
- 添加查看结果树
CSV数据文件设置
作用:让不同用户在多次循环时,可以取到不同的值
位置:测试计划–>线程组–>配置元件–>CSV数据文件设置
参数:
练习:
请求:https://www.baidu.com
要求:循环请求3次,每次请求时附带参数username,password,code的值不同
操作步骤:
- 定义CSV数据文件
- 添加线程组,设置循环次数为3
- 添加CSV数据文件设置
- 添加HTTP请求
小结
(1)什么时候使用CSV数据文件设置?
- 当不同的用户,或者同一个用户多次循环时,都可以获取到不同的值
(2)使用”CSV数据文件设置“进行参数化的步骤?
-
定义CSV数据文件
-
添加线程组
-
添加CSV数据文件设置
-
添加HTTP请求,引用定义的变量名。格式:${变量名}
-
添加查看结果树
函数(__counter)
作用:计数函数,一般做执行次数统计使用
位置:在菜单中–>选项(或工具)–>函数助手对话框
参数:
练习:
请求:访问百度首页 https://www.baidu.com/S?num=1
要求:每个用户每次循环执行该脚本都可以使用不同的值
操作步骤:
1.添加线程组,设置虚拟用户数和循环次数
2.生成__counter函数
3.添加HTTP请求,使用__counter函数
4.添加查看结果树
小结
(1)什么时候使用__counter函数?
- 自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义
(2)使用”counter函数“进行参数化的步骤?
- 添加线程组,设置虚拟用户数和循环次数
- 生成__counter函数
- 添加HTTP请求,使用
__counter
函数,格式:${__counter(False,)}
- 添加查看结果树
练习:
某支付系统,需要用1000个不同的用户登录,并使用添加不同的测试金额数据访问支付接口?
答案:
- 添加线程组
- 添加配置元件-CSV数据文件设置,读取CSV文件数据中的用户名密码
- 添加HTTP请求-登录,引用CSV数据文件设置中的变量
- 添加HTTP请求-支付,使用counter函数传入不同金额的测试数据
- 添加查看结果树