【问题标题】:JMeter 1 Thread group performs 10% of other Thread groupJMeter 1 线程组执行 10% 的其他线程组
【发布时间】:2017-01-07 17:12:19
【问题描述】:

我正在测试网络应用程序。基本上我有 1 个线程组(我们称它们为附属),他们平均每秒需要执行 2.5 个请求(每个请求都是对虚构广告的请求)。第二个线程组(最终用户)需要“点击”10% 的关联公司请求的这些广告。

我有以下设置:

Test setup

每个线程组的加速时间为 1(s)。 第一个线程组(Affiliates)的恒定计时器为 400 毫秒(1 秒 / 2.5clicks = 每 0.4 秒 1 次点击 = 每 400 毫秒 1 次点击)。如果我理解正确,这应该确保每个会员每 400 毫秒点击一次。

第二个线程组有一个 4000ms 的恒定计时器(因为计时器是一个延迟,所以 4000ms 应该会导致第一个线程组的 10% 请求)。

使用一个用户进行测试时,结果很好,但是随着我增加用户数(例如,每个线程组有 150 个用户(总共 300 个用户)),结果不再是 AdClick 占 AdRequest 的 10%。

运行我的测试 1 分钟,我得到以下信息: AdsRequest = 4695 个样本 AdsClicked = 1568 个样本

AdsClicked 应该是大约 470 个样本

所以我的问题是:我怎样才能设置我的测试,以不断有 10% 的 AdRequest 样本用于 Adclicked,而不管当前有多少用户正在使用该系统。

【问题讨论】:

    标签: jmeter performance-testing web-testing


    【解决方案1】:
    1. 就常量计时器的位置而言,您的设置不是很正确。根据Timers Documentation

      请注意,计时器在发现它们的范围内的每个采样器之前之前处理;如果同一范围内有多个计时器,则所有计时器将在每个采样器之前处理。

      定时器仅与采样器一起处理。与采样器不在同一范围内的计时器根本不会被处理。 要将计时器应用于单个采样器,将计时器添加为采样器的子元素。计时器将在采样器执行之前应用。要在采样器之后应用计时器,请将其添加到下一个采样器,或者将其添加为测试操作采样器的子级。

    2. 如果您需要控制吞吐量(每秒请求数),最好考虑Constant Throughput TimerThroughput Shaping Timer

    3. 由于您无法保证使用计时器来满足此要求的 10% 精确匹配:

      无论当前有多少用户正在使用该系统

      您可以考虑将两个采样器移动到单个线程组下,并使用Throughput ControllerSwitch Controller 使您的AdsClicked 请求恰好是AdRequests 的10%。有关该方法的更多详细信息,请参阅Running JMeter Samplers with Defined Percentage Probability 文章。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多