Jmeter >>每个用户的确切N个请求>>我们要控制/发送确切数目的请求时使用哪个线程组

问题描述

我的组织有5个http请求。 R1,R2至R5。每个http请求都将Addr和City以及用户ID用作输入。 csv表中有500个用户可用于这5个请求。我们希望每个用户大约有50个请求,或将其精确分成50个api请求。并且附加条件是R1应该在50 req中具有更大的权重 看起来像这样

User1 >> R1=20Request,R2=10Request,R3=10Request,R4=5Request,R5=5Request >> 50
User2 >> R1=20Request,R5=5Request >> 50
User3 >> R1=20Request,R5=5Request >> 50
..
User500 >> R1=20Request,R5=5Request >> 50

我尝试了遵循测试计划

Test plan 1 (10 Thread,loop count 5,loop controller loop count 1)
>>CSV Data Config Users
>>CSV Data Config Addr
>>CSV Data Config City
>>Thread Group 
 >> loop controller
  >> R1
  >> R2
  >> R3
  >> R4
  >> R5
Test plan 2 ( Using % distribution for Throughput controller with 5min run)
>>CSV Data Config Users
>>CSV Data Config Addr
>>CSV Data Config City
>>Ultimate Thread Group 
 >> Throughtput controller
  >> R1
>> Throughtput controller
  >> R2
>> Throughtput controller
  >> R3
>> Throughtput controller
  >> R4
>> Throughtput controller
  >> R5
Test plan 3 (10 Thread,loop controller loop count 1)
>>CSV Data Config Usrs
>>setUp Thread Group
>>CSV Data Config Addr
>>CSV Data Config City 
 >> loop controller
  >> R1
  >> R2
  >> R3
  >> R4
  >> R5
Test plan 4 (10 Thread,loop controller 1 loop count 1,LC2 count 2)
>>CSV Data Config Users
>>CSV Data Config Addr
>>CSV Data Config City
>>Thread Group 
 >> loop controller 1
  >> R2
  >> R3
  >> R4
  >> R5
>> loop controller 2
  >> R1
  

问题陈述:

  1. 在TestPlan1、3和4中,我们可以使用CSV中的所有用户,但请求数根本不会达到50个
  2. 在TestPlan2中,来自csv的所有用户都没有被使用,并且请求计数有时超过50,有时甚至低于50

解决方法

最简单的选择是添加另一个R1副本,例如:

Test plan 1 (10 Thread,loop count 5,loop controller loop count 1)
>>CSV Data Config Users
>>CSV Data Config Addr
>>CSV Data Config City
>>Thread Group 
 >> loop controller
  >> R1
  >> R1 (another copy)
  >> R2
  >> R3
  >> R4
  >> R5

您可以定义一个包含此R1请求的Test Fragment并使用Module Controller对其进行两次引用,而不是“愚蠢”的复制和粘贴HTTP请求采样器

如果您的“体重”标准较为复杂,建议改用Weighted Switch Controller