问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

JMeter参数化详解:用户定义变量、CSV数据集与函数应用

创作时间:
作者:
@小白创作中心

JMeter参数化详解:用户定义变量、CSV数据集与函数应用

引用
CSDN
1.
https://blog.csdn.net/weixin_42421116/article/details/145664880

JMeter参数化是性能测试中一个非常重要的概念,它允许我们使用不同的测试数据调用相同的测试方法,从而提高测试的效率和覆盖率。本文将详细介绍JMeter中常见的参数化方式,包括用户定义变量、用户参数、CSV数据集配置以及函数方法,并通过具体的练习步骤和案例,帮助读者掌握这些技术。

JMeter参数化

本质

使用参数的方式来替代脚本中的固定测试数据。

实现方式

  • 定义变量(最基础)
  • 文件定义的方式(所有测试数据都是固定的情况下)
  • 数据库的方式(灵活)
  • 函数方式(灵活)

参数化测试

把测试数据组织起来,用不同的测试数据调用相同的测试方法。

JMeter中常见的参数化方式

  • 用户定义变量
  • 用户变量
  • CSV Data Set Config
  • 函数

用户定义变量

全局变量

作用:定义全局变量
位置:测试计划->线程组->配置元件->用户定义的变量

练习

请求:https://www.baidu.com:443
要求:使用用户定义的变量配置被测系统的协议、域名和端口

操作步骤

  1. 添加线程组
  2. 添加用户定义的变量。格式:变量名-变量值
  3. 添加HTTP请求,引用定义的变量名。格式:${变量名}
  4. 添加查看结果树

用户参数

每个用户取不同的值

作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值
位置:测试计划->线程组->前置处理器->用户参数

练习

请求: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的值不同

操作步骤:

  1. 定义CSV数据文件
  2. 添加线程组,设置循环次数为3
  3. 添加CSV数据文件设置
  4. 添加HTTP请求
  5. 查看结果树

案例

  1. 定义CSV数据文件
  2. 添加线程组,设置循环次数为2
  3. 添加CSV数据文件设置
  4. 添加HTTP请求
    因为使用的是body请求体,所以需要加上http信息头管理器
  5. 查看结果树

小结

(1)什么时候使用CSV数据文件设置?
当不同的用户,或者同一个用户多次循环时,都可以获取到不同的值。

(2)使用"CSV数据文件设置"进行参数化的步骤?

  • 定义CSV数据文件
  • 添加线程组
  • 添加CSV数据文件设置
  • 添加HTTP请求,引用定义的变量名。格式:${变量名}
  • 添加查看结果树

函数(__counter)

  • TRUE:每个用户分别计数,FALSE:所以用户使用全局计数
    作用:计数函数,一般做执行次数统计使用
    位置:在菜单中->选项(或工具)->函数助手对话框

练习

请求:访问百度首页 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函数传入不同金额的测试数据
  • 添加查看结果树
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号