【性能测试】Jmeter 配置元件(一):计数器

Jmeter 配置元件(一):计数器

在 Jmeter 中,通过函数 ${__counter(,)} 可以实现每次加 1 1 1 的计数效果。但如果步长不为 1 1 1,则要利用到我们的计数器。

函数 作用
${__counter(,)} 计数器,每次加 1
${__dateTimeConvert(,)} 时间格式转换
${__intSum(,)} 整数相加
${__P(,)} 获取属性
${__setProperty(,)} 设置属性
${__Random(,)} 随机数
${__threadNum} 线程编号
${__time(,)} 获取当前时间戳
${__V(,)} 拼接

我们首先添加一个 线程组。我们设置 线程数 为 5 5 5,Ramp-Up 时间为 1 秒,为了便于观测,循环次数 设为 3 3 3。

既然要了解计数器,首先给线程组添加一个 计数器。操作:线程组(右键添加)➡️ 配置元件 ➡️ 计数器。

我们对计数器做出如下设置:

  • 开始值Starting value):给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器。
  • 递增Increment):每次迭代后,给计数器增加的值。
  • 最大值Maximum value):达到最大值时,自动重置初始值;默认的最大值为 2 63 − 1 2^{63}-1 263−1,即 Long.MAX_VALUE
  • 数字格式Number format):可选格式,比如 000,格式化为 001,002 ... 三位,不足补 0;默认格式为 Long.toString(),但是默认格式下,还是可以当作数字使用。
  • 引用名称Exported Variable Name):用于控制在其它元素中引用该值,比如:变量名称为 reference_name,形式:${reference_name}
  • 与每用户独立的跟踪计数器Track Counter Independently for each User):如果不勾选,即全局的计数器,比如用户 #1 获取值为 1 1 1,用户 #2 获取值则为 2 2 2;如果勾选,即独立的计数器,则每个用户有自己的值:比如用户 #1 获取值为 1 1 1,用户 #2 获取值也为 1 1 1(:网上很多帖子这个参数都解释反了,估计是某一篇说错了,然后其他人直接搬过去都没有验证过,本文有验证)。
  • 在每个线程组迭代上重置计算器Reset counter on each Thread Group Iteration):可选,仅勾选与每用户独立的跟踪计数器时可用。

为了方便观察输出,我添加了一个 JSR223 Sampler

我们再添加一个 查看结果树,并允许将所有数据写入一个文件(待会有用)。

现在我们可以执行看一看。

首先来看一下 日志

再看一下结果树:

因为前面我们并未勾选 与每用户独立的跟踪计数器,所以它是一个全局的计数器,所有的线程会共享这个计数器。

现在我们勾选上 与每用户独立的跟踪计数器

再来看看结果

可以看到,线程之间并没有共享计数器,而是独立的计数器。

现在我们再勾选上 在每个线程组迭代上重置计算器

我们再来看看结果。

因为线程之间独立,且每一次循环也独立,所以结果全部都是一样的。

我们再把 最大值 改小一点看看。

查看结果树。

我们会发现,当超过最大值以后,计数器会重新从头开始计算(取 ≤ 最大值的数据)。

再来一个好玩的。 10 10 10 个线程一直循环,且不设最大值。跑一会,看看会得到啥?


我大概跑了二三十秒。

结果树不方便查看,所以写入到了 CSV 文件中,很快就生成了 100 多 MB 大小的文件。

打开来看一看。

我们检查一下 label 是否有重复项。

为什么博主要做这样一个的实验呢?因为博主踩过一个坑。我需要创建大量的测试数据,且名字不能重复,我用了给名字后缀添加计数器的方式,但是设置了最大值 10000 10000 10000,跑了一会很快就发现有重名的出现。

如果我们不设置最大值,即使超过了格式上的设置,比如下图中是 5 5 5 位数的格式,Jmeter 也会自动扩充数位。


相关推荐
小码哥说测试26 分钟前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
小钱c74 小时前
Mac下安装Apache JMeter并启动
jmeter·macos·apache
古人诚不我欺7 小时前
jmeter常用配置元件介绍总结之函数助手
jmeter
川石课堂软件测试7 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
古人诚不我欺7 小时前
jmeter常用配置元件介绍总结之取样器
jmeter
十叶知秋7 小时前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
我非夏日7 小时前
JMeter基础篇
jmeter
茶馆大橘16 小时前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
土小帽软件测试1 天前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习
土小帽软件测试1 天前
jmeter基础03_汉化jmeter界面
测试工具·jmeter·软件测试学习