Jmeter - 吞吐量控制器下的“每用户”复选框的功能是什么?

Kes*_*hav 4 jmeter performance-testing throughput

我需要将应用程序的负载划分为一些百分比,即登录模块 - 60%,帐户 - 10%,其他模块 - 30%。经过一番研究后,我在 jmeter 的吞吐量控制器部分下找到了一个选项,使用它我可以控制这些百分比。我在那里找到一个名为“每个用户”的复选框。现在我没有得到这个复选框。

根据 blazemeter 博客,我尝试了如下一种场景,并选中了“每用户”复选框。

  • 从下拉列表中选择“总执行”。
  • 将吞吐量标记为 40。
  • 使用的线程 - 10,循环计数 1

现在,根据博客,特定事务应该执行 400 次。但该交易的执行为零。

我尝试了另一种情况,选中了“每用户”复选框。

  • 从下拉列表中选择“总执行”。
  • 将吞吐量标记为 60。
  • 使用的线程 - 10,循环计数 1

现在,根据博客,特定事务应该执行 600 次。但它执行了10次。

那里的专家可以分享我在这里做错了什么吗?或者需要更清楚地了解此复选框的工作原理。

Nav*_*R B 5

要了解吞吐量控制器(TC),只需添加一个 TC 和一个采样器(在 TC 内部)并Aggregate Report组合起来即可。然后,使用Throughput Controller.

来自官方文档:

执行总数:在发生一定数量的执行后,导致控制器停止执行。

每个用户:如果选中,每个用户将导致控制器计算是否应该在每个用户(每个线程)的基础上执行。如果未选中,则计算将对所有用户进行全局计算。例如,如果使用总执行模式,并取消选中“每个用户”,则给出的吞吐量数将是执行的总数。如果选中“每个用户”,则执行总数将是用户数乘以给定的吞吐量数。

仔细阅读这两个声明多次。

在您指定的两种场景中,最大执行次数均为 10。(线程数 * 循环数)。尽管您将总执行次数指定为 40 或 60,但首先,您应该提供超过 60 个,以便看到所有 40/60 迭代都得到执行。因此,始终指定比总执行次数更多的迭代(使用线程计数和循环计数)。

You have to consider Percentage Executions instead of Total Executions to match your requirements。再次,我建议模拟一个样本并通过改变百分比来了解行为。


以下是一些场景和预期行为 (EB)。

场景:1

线程组 - 10,循环计数 - 1,吞吐量 - 40(执行总数),每个用户 - 已选中。

EB:Sampler 将仅运行 10 次。

场景:2

线程组 - 40,循环计数 - 1,吞吐量 - 40(执行总数),每个用户 -已选中

EB:Sampler 将仅运行 40 次。

场景:3

线程组 - 40,循环计数 - 1,吞吐量 - 40(执行总数),每个用户 -未选中

EB:Sampler 将仅运行 40 次。

场景:4

线程组 - 100,循环计数 - 1,吞吐量 - 40(执行总数),每个用户 -已选中

EB:Sampler 将仅运行 100 次。计算每个用户是否执行了40次。由于未达到限制,因此将执行全部 100 次迭代。

场景:5

线程组 - 100,循环计数 - 1,吞吐量 - 40(执行总数),每个用户 -未选中

EB:Sampler 将仅运行 40 次。按全球水平计算。当所有线程的采样器达到 40 次时,停止执行它。

场景:6

线程组 - 100,循环计数 - 40,吞吐量 - 40(执行总数),每个用户 -已选中

EB:采样器将运行 400 次(每个用户 -> 40 次,100*40)。计算每个用户是否执行了40次。在这里,甚至每个用户限制也达到了,并且在 40 后不再执行。

场景:7

线程组 - 100,循环计数 - 1,吞吐量 - 40(执行总数),每个用户 -未选中

EB:Sampler 将仅运行 40 次。按全球水平计算。当所有线程的采样器达到 40 次时,停止执行它。