在我的测试计划中,我有24个吞吐量控制器具有不同的执行百分比,最少为1%。 10个不同的吞吐量控制器执行率为1%。每个吞吐量控制器下都有许多事务控制器。当我运行测试1小时时,在一些最小百分比吞吐量控制器下定义的采样器甚至不会执行一次。我确保所有24个吞吐量控制器的总数增加到100%。如何确保在所有吞吐量控制器中定义的所有采样器至少执行一次?
对于吞吐量最低的控制器,我将它们更改为" Total Executions"但是,在这些总执行次数下定义的采样器总是在测试开始后首先执行,这不是我需要的。
答案 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
作为测试迭代的总数。如您所见,它不依赖于其他控制器,也不会检查各种控制器的总百分比。
所以解释
为什么要指定&#34; Total Executions&#34;如1 ,它将在第一次迭代时执行,而不会再次执行:在第一次迭代executions=0 < getMaxThroughputAsInt()
上,您将其设置为1,因此控制器下的采样器将运行。在以后的所有迭代中executions=1
,所以什么都不会运行。
使用特定百分比配置控制器时会发生什么。例如,配置为以1%运行的控制器需要至少51次迭代才能运行一次:(100 * 0 + 50) / (50 + 1) < 1
。如果您的测试运行的迭代次数较少,则1%的吞吐量控制器将永远不会运行。
如何确保每个控制器至少运行一次(源自前一点):确保迭代次数足够。
同时确保控制器中的每用户设置正确无误,并符合您的期望:
如果未选中,则所有用户的计算都是全局的&lt; ...&gt;为吞吐量给出的数字将是执行的总执行次数。如果&#34;每个用户&#34;如果选中,则执行总数将是用户数乘以吞吐量的数量。
答案 1 :(得分:0)
吞吐量控制器不保证其子代将被执行,如果您需要确保每个采样器至少执行一次,您需要考虑转移到Switch Controller并通过{{3定义吞吐量逻辑}}
有关详细信息,请参阅Switch statement。