JMeter 1线程组执行其他线程组的10%

时间:2017-01-07 17:12:20

标签: jmeter performance-testing web-testing

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

我有以下设置:

Test setup

每个线程组的上升时间为1(s)。 第一个线程组(附属机构)的常量计时器为400毫秒(1秒/ 2.5点击=每0.4秒点击1次=每400毫秒点击1次)。如果我理解正确,这应该确保每个联盟会员每400ms点击一次。

第二个线程组有一个4000ms的常量定时器(因为定时器是一个延迟,然后4000ms使得应该导致第一个线程组的10%请求。)

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

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

AdsClicked应该是大约470个样本

所以我的问题是:如何设置我的测试以不断获得Adclicked的10%AdRequests样本,无论当前有多少用户使用该系统。

1 个答案:

答案 0 :(得分:0)

  1. 就定时器位置而言,您的设置不是很正确。根据{{​​3}}:

      

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

         

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

  2. 如果您需要操纵吞吐量(每秒请求数),最好考虑Timers DocumentationConstant Throughput Timer

  3. 由于您没有使用此计时器的计时器保证完全匹配10%:

      

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

    您可以考虑在单个线程组下移动两个采样器,并使用Throughput Shaping TimerThroughput Controller使AdsClicked请求恰好是AdRequests的10%。有关该方法的更多详细信息,请参阅Switch Controller文章。