运行时自定义JMeter属性的限制值

问题描述

我们有一个分布式JMeter设置,如此处所述-How to Change JMeter´s Load During Runtime

测试计划(JMX文件)由用户提供。因此,我们不知道其中使用的属性名称。在运行时,用户可以提供属性名称和值,我们将通过beanshell脚本直接将这些名称和值传递给JMeter设置。

在这种设置中,我们可以对用户可以在运行时更改的某些JMeter属性(可能会影响我们提供的资源)的值设置限制/上限吗?

例如我们不希望系统的总RPS随时超过300 RPS。或者,如果用户提供了#threads的运行时更改功能,那么我们不希望它们在任何计算机上随时超过100。

我们要避免在系统中存储任何用户定义的属性名称来提供这种验证。

解决方法

您可以将Constant Throughput TimerPrecise Throughput TimerThroughput Shaping Timer注入用户提供的.jmx脚本中,并在其中放置最大允许的并发量。

即使测试计划中有多个计时器,JMeter也会应用最慢​​的吞吐量,因此,如果原始RPS低于最大计时器,您就不会进行测试太快反之亦然,无论RPS用户希望什么,它都永远不会高于您定义的300 RPS。

相同的方法适用于线程组中的线程数。