前言:
jmeter对于控制事务比例一直以来都存在一个痛点,自身内置的吞吐量控制器只能精确到1%,无法满足实际工作中的交易比例控制需要;如果是有IF控制器等逻辑控制器,在以往工作中遇到过IF控制器大量占中压力机资源从而导致压力发起异常。
Weighted Switch Controller插件主要解决jmeter控制器的此类痛点下面是GitHub机翻:
加权开关控制器
此控制器获取有关子元素的信息,并提供对它们的相对权重的管理。相对权重表示在线程迭代期间执行子元素的频率。请注意,每个线程都有独立的迭代计数器。
映射到子名称的相对权重,即使子名称的顺序已更改,也会保存值。在添加新子项或重命名现有子项的情况下,将设置此子项的相对权重的默认值。如果禁用子元素,则此元素的相对权重将不会计入测试中。
Random Choice
- 在每次迭代插件上都会随机选择一个项目。此复选框不能保证子元素的实际执行百分比与预期相同(测试中的增量不超过 0.5%)
使用场景:
设置一个有4个接口或事务的线程组
通过 Weighted Switch Controller插件设置各事务交易比例
执行10000次迭代后聚合报告:
这里有一个事项: Random Choice 开源作者解释为在每次执行时是否随机选择事务,我们知道,jmeter默认执行各接口时,是顺序执行的,
Random Choice选项能够让各接口随机执行,并接近实现预期业务比例,作者表示随机模式下会有0.5%的误差,作为java的伪随机数来说,此误差似乎是无法避免的,下面是实际测试数据:
目前使用中针对00.00%级别的测试中不选则Random Choice能够尽量规避误差,但是否贴合业务逻辑,可以酌情选择。
总结 :
这种模式下,将原jmeter的吞吐量控制提高一个量级,并且使用此插件,可以在一个组件内完成所有交易比例的配置,更有利于后期维护;
下载:
jmeter-plugins-wsc-0.7.jar-jmeter吞吐量插件-其它文档类资源-CSDN文库
github:jmeter-bzm-plugins/WeightedSwitchController.md at master ·Blazemeter/jmeter-bzm-plugins (github.com)