JMeter参数化详解:用户定义变量、CSV数据集与函数应用
JMeter参数化详解:用户定义变量、CSV数据集与函数应用
JMeter参数化是性能测试中一个非常重要的概念,它允许我们使用不同的测试数据调用相同的测试方法,从而提高测试的效率和覆盖率。本文将详细介绍JMeter中常见的参数化方式,包括用户定义变量、用户参数、CSV数据集配置以及函数方法,并通过具体的练习步骤和案例,帮助读者掌握这些技术。
JMeter参数化
本质
使用参数的方式来替代脚本中的固定测试数据。
实现方式
- 定义变量(最基础)
- 文件定义的方式(所有测试数据都是固定的情况下)
- 数据库的方式(灵活)
- 函数方式(灵活)
参数化测试
把测试数据组织起来,用不同的测试数据调用相同的测试方法。
JMeter中常见的参数化方式
- 用户定义变量
- 用户变量
- CSV Data Set Config
- 函数
用户定义变量
全局变量
作用:定义全局变量
位置:测试计划->线程组->配置元件->用户定义的变量
练习
请求:https://www.baidu.com:443
要求:使用用户定义的变量配置被测系统的协议、域名和端口
操作步骤
- 添加线程组
- 添加用户定义的变量。格式:变量名-变量值
- 添加HTTP请求,引用定义的变量名。格式:${变量名}
- 添加查看结果树
用户参数
每个用户取不同的值
作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划->线程组->前置处理器->用户参数
练习
请求:https://www.baidu.com
要求:第一个用户请求附带参数:name="张三"&age=28;第二个用户请求附带的参数:name="李四"&age=30
操作步骤
- 添加线程组,线程数设置为2
- 添加用户参数
- 添加HTTP请求
- 查看结果树
小结
(1)什么时候使用用户参数?
针对同一组参数,当不同的用户来访问时,可以获取到不同的值
(2)使用"用户参数"进行参数化步骤?
- 添加线程组,设置线程数为n(表示模拟用户数)
- 添加用户参数:
- 第一列添加多个变量名。
- 后续每一列为一组用户的数据
- 添加HTTP请求,引用定义的变量名。格式:${变量名}
- 添加查看结果树
CSV数据文件设置
每个用户每次循环取不同的值
作用:让不同用户在多次循环时,可以取到不同的值
位置:测试计划->线程组->配置元件->CSV数据文件设置
参数:
练习:
请求:https://www.baidu.com
要求:循环请求3次,每次请求时附带参数username,password,code的值不同
操作步骤:
- 定义CSV数据文件
- 添加线程组,设置循环次数为3
- 添加CSV数据文件设置
- 添加HTTP请求
- 查看结果树
案例
- 定义CSV数据文件
- 添加线程组,设置循环次数为2
- 添加CSV数据文件设置
- 添加HTTP请求
因为使用的是body请求体,所以需要加上http信息头管理器 - 查看结果树
小结
(1)什么时候使用CSV数据文件设置?
当不同的用户,或者同一个用户多次循环时,都可以获取到不同的值。
(2)使用"CSV数据文件设置"进行参数化的步骤?
- 定义CSV数据文件
- 添加线程组
- 添加CSV数据文件设置
- 添加HTTP请求,引用定义的变量名。格式:${变量名}
- 添加查看结果树
函数(__counter)
- TRUE:每个用户分别计数,FALSE:所以用户使用全局计数
作用:计数函数,一般做执行次数统计使用
位置:在菜单中->选项(或工具)->函数助手对话框
练习
请求:访问百度首页 https://www.baidu.com/S?num=1
要求:每个用户每次循环执行该脚本都可以使用不同的值
操作步骤
- 添加线程组,设置虚拟用户数和循环次数
- 生成__counter函数
- 添加HTTP请求,使用__counter函数
- 添加查看结果树
小结
(1)什么时候使用__counter函数?
自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义
(2)使用"counter函数"进行参数化的步骤?
- 添加线程组,设置虚拟用户数和循环次数
- 生成__counter函数
- 添加HTTP请求,使用__counter函数,格式:${__counter(False,)}
- 添加查看结果树
案例
某支付系统需要1000个不同的用户登录,并且使用不同的测试金额数据访问支付接口
步骤:
- 添加线程组
- 添加配置元件- csv数据文件设置,读取csv文件数据中的用户名和密码
- 添加HTTP请求-登录,引用CSV文件设置中的变量
- 添加HTTP请求- 支付,使用counter函数传入不同金额的测试数据
- 添加查看结果树
