【Jmeter】常用的函数

JMeter 的函数是其强大功能的核心之一,它们可以动态生成数据、操作字符串、进行逻辑判断等,极大地增强了测试脚本的灵活性和威力。

以下是最常用和最有价值的 JMeter 函数清单,分为 “必会核心函数”“实用高级函数”,并附上具体用法和场景。


一、必会核心函数(几乎每个脚本都会用到)

这些函数用于生成最基本、最通用的动态数据。

1. __Random:生成随机整数
  • 功能:在指定范围内生成一个随机整数。
  • 语法${__Random(min, max, variableName)}
  • 示例与场景
  • ${__Random(1, 100, orderId)} 生成 1 到 100 之间的随机数,并存储在 orderId 变量中。
  • 使用场景:模拟大量用户注册(用户名唯一)、生成随机的商品ID或订单ID进行查询。
  • 结果:每次调用都会返回一个新值,如 45
2. __time:获取当前时间戳
  • 功能:返回当前时间的毫秒数(Unix 时间戳)。
  • 语法
  • ${__time} -> 返回 13 位时间戳,如 1718172830123
  • 使用场景:通常用于确保请求的唯一性,避免服务器缓存。比如在测试缓存穿透、接口幂等性或作为唯一标识。
  • 使用场景:参数化需要唯一标识或时间概念的请求。
3. __threadNum:获取当前线程编号
  • 功能:返回当前正在执行的线程号(从 0 或 1 开始,取决于配置),非常适合用在登录场景中,模拟不同线程使用不同用户名。
  • 语法${__threadNum}
  • 示例与场景
  • 用户名参数化为:testuser${__threadNum}
  • 结果:线程1 -> testuser1,线程2 -> testuser2… 这样就能轻松模拟大量不同用户。
  • 结果:线程1 返回 1,线程2 返回 2
4. __counter:计数器
  • 功能:生成一个递增的数字。
  • 语法
  • ${__counter(FALSE, refName)}:每个用户各自独立计数(如线程1:1,2,3,…)。
  • 使用场景:需要生成唯一且有序的编号,如订单号、流水号。
  • ${__counter(TRUE, refName)}:全局计数器,所有用户共用。
  • 示例与场景
  • 用户名参数化为:user${__counter(FALSE,)} -> 1,2,3…

二、实用高级函数(解决特定复杂问题)

这些函数在特定场景下非常强大。

5. __StringFromFile:从文件读取字符串
  • 功能:按顺序或随机从文件中读取一行。
  • 语法${__StringFromFile(filename.txt,,,)}
  • 使用场景:文件上传/下载接口,需要参数化不同的文件名。
  • 示例与场景
  • 创建 users.txt 文件,每行一个用户名。
  • 语法${__UUID}
  • 示例与场景
  • 订单ID参数化为:${__UUID}
  • 结果:生成一个唯一的 UUID 字符串,如 550e8400-e29b-41d4-a716-446655440000
  • 结果:如 e4d1c6a8-3b2f-4e1a-8c5a-123456789abc
  • 使用场景:需要绝对的全局唯一ID时。
7. __RandomString:生成随机字符串
  • 功能:生成指定长度的随机字符串。
  • 语法${__RandomString(10, abcdefg123)}

三、函数的使用方法与技巧

1. 如何调用函数
  • 方法一:直接输入
    在任何可以输入文本的地方(如 Path、Parameters、Body Data),直接输入函数表达式即可。
  • 方法二:使用函数助手对话框
  1. 菜单栏 → 工具 → 函数助手对话框
  • 函数:在下拉列表中选择所需函数,例如 __Random
  • 参数:根据下方的提示输入所需的参数。
  • 生成:点击“生成”按钮,表达式会自动复制到剪贴板,然后粘贴到需要的地方。
2. 综合实战案例:用户注册并查询订单

目标:模拟 10 个用户,每个用户注册一个唯一账号,然后用这个账号登录并查询自己的订单。

步骤

  1. 线程组设置:线程数 = 10,循环次数 = 2。

  2. CSV 数据文件设置:指向一个包含 20 个不同邮箱的 CSV 文件。

请求 1:注册 (HTTP POST)

  • 用户名test${__threadNum}_${__counter(TRUE,)}
  • 这个组合能确保在并发环境下生成全局唯一的用户名。

请求 2:查询订单 (HTTP GET)

  • Path/orders/${__BeanShell(vars.get("orderId_${__threadNum}")}

通过熟练掌握这些函数,你可以让 JMeter 脚本摆脱静态数据的束缚,真正实现高度动态化、逼真的压力测试。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值