JMeter中的吞吐量控制器

时间:2017-08-24 17:10:20

标签: jmeter

在我的测试计划中,我有24个吞吐量控制器具有不同的执行百分比,最少为1%。 10个不同的吞吐量控制器执行率为1%。每个吞吐量控制器下都有许多事务控制器。当我运行测试1小时时,在一些最小百分比吞吐量控制器下定义的采样器甚至不会执行一次。我确保所有24个吞吐量控制器的总数增加到100%。如何确保在所有吞吐量控制器中定义的所有采样器至少执行一次?

对于吞吐量最低的控制器,我将它们更改为" Total Executions"但是,在这些总执行次数下定义的采样器总是在测试开始后首先执行,这不是我需要的。

2 个答案:

答案 0 :(得分:2)

决定何时在控制器下运行样本的整个逻辑如下所示(来自ThroughputController.java

/**
 * Decide whether to return any samplers on this iteration.
 */
private boolean decide(int executions, int iterations) {
    if (getStyle() == BYNUMBER) {
        return executions < getMaxThroughputAsInt();
    }
    return (100.0 * executions + 50.0) / (iterations + 1) < getPercentThroughputAsFloat();
}

其中executions作为控制器下的采样器运行的次数传入,而iterations作为测试迭代的总数。如您所见,它不依赖于其他控制器,也不会检查各种控制器的总百分比。

所以解释

  1. 为什么要指定&#34; Total Executions&#34;如1 ,它将在第一次迭代时执行,而不会再次执行:在第一次迭代executions=0 < getMaxThroughputAsInt()上,您将其设置为1,因此控制器下的采样器将运行。在以后的所有迭代中executions=1,所以什么都不会运行。

  2. 使用特定百分比配置控制器时会发生什么。例如,配置为以1%运行的控制器需要至少51次迭代才能运行一次:(100 * 0 + 50) / (50 + 1) < 1。如果您的测试运行的迭代次数较少,则1%的吞吐量控制器将永远不会运行。

  3. 如何确保每个控制器至少运行一次(源自前一点):确保迭代次数足够。

  4. 同时确保控制器中的每用户设置正确无误,并符合您的期望:

      

    如果未选中,则所有用户的计算都是全局的&lt; ...&gt;为吞吐量给出的数字将是执行的总执行次数。如果&#34;每个用户&#34;如果选中,则执行总数将是用户数乘以吞吐量的数量。

答案 1 :(得分:0)

吞吐量控制器不保证其子代将被执行,如果您需要确保每个采样器至少执行一次,您需要考虑转移到Switch Controller并通过{{3定义吞吐量逻辑}}

有关详细信息,请参阅Switch statement