【问题标题】:JMeter Loop CountersJMeter 循环计数器
【发布时间】:2017-05-31 10:47:55
【问题描述】:

我是 JMeter 的新手,正在尝试设置一个测试计划,我需要针对每个请求传递可变数据。例如,我有 10,000 个具有连续唯一 ID(PD1...PD10000)的产品。我也有 250 条价格记录以及顺序唯一 ID(PR1....PR250)。 我希望我的请求以每个产品 ID 针对价格记录循环 250 次的方式发送。 我尝试将线程(用户)计数设置为 250 和循环计数 10,000 并使用标准函数 $(__counter(FALSE,)} 但这只会增加并超过 10,000 的限制。 有人可以告诉我如何设置两个变量或循环控制器,以便我可以传递重复的数据,例如

{ ProductId : ${ProductId}, 
  PriceId : ${PriceId} 
}

ProductId 在 1 - 10000 之间循环,PriceId 在 1-250 之间循环。 谢谢

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    如果您需要每个产品执行 250 次迭代,则线程(用户)计数应为 10000,循环计数应为 250。假设要替换的值是 PD1、PD2 等,创建单独的计数器(配置元素 -> Counter) 用于产品 ID 和价格 ID,参考名称分别为 product_id 和 price_id,使用如下

    { 
    ProductId : PD${product_id}, 
    PriceId : PR${price_id} 
    }
    

    计数器参考http://jmeter.apache.org/usermanual/component_reference.html#Counter

    否则使用 CSV 数据集配置并从 csv 文件中检索产品和价格 ID。 参考:http://jmeter.apache.org/usermanual/component_reference.html#CSV_Data_Set_Config

    【讨论】:

    • 我尝试使用上述方法,但出现内存不足异常,因为我相信我的客户端机器无法创建 10,000 个线程。
    • 尝试增加 jmeter.bat (windows) 中的堆内存 - 默认为 512MB set HEAP=-Xms512m -Xmx512m 。或者添加远程生成器 [link] jmeter.apache.org/usermanual/remote-test.html
    【解决方案2】:

    我相信While Controller会更容易使用,示例配置:

    • 当控制器时,条件:${__javaScript(${counter} < 250,)}

      • Counter配置为:

      • 您的请求在这里

    请参阅Using the While Controller in JMeter 文章以获取更详细的解释和更多 While Controller 用例。

    我不建议使用线程(虚拟用户)数来控制循环数,它需要用于仅控制负载,您需要在这样的情况下设计测试计划一种方法,无论定义了多少虚拟用户,它都会执行相同的场景。例如,如果您有 1 个虚拟用户,它应该遍历所有 10 000 条产品 ID 记录并每循环 250 次。如果您有 2 个虚拟用户 - 他们需要记录不同的记录,以便测试以 2 倍的速度完成,等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多