【问题标题】:JMeter - Passing the number of threads to multiple thread groupsJMeter - 将线程数传递给多个线程组
【发布时间】:2017-01-11 00:41:24
【问题描述】:

我有一个文件,我在其中指定每个线程组的线程数。
我的目标是使用从文件中读取的线程数同时运行所有线程组。

我当前的算法:我在测试计划中有第一个线程组,称为设置。
我将数据文件读取到局部变量中。
使用 BeanShell 采样器,我将这些变量转换为属性变量。
在每个线程组中,线程的数量是通过属性变量定义的。

如果我连续运行线程组,则没有问题。
但我需要并行运行它们。我想线程组可以在设置组完成读取该组的线程数之前尝试运行。那么该组将永远不会运行。

感谢任何想法和建议。

【问题讨论】:

    标签: jmeter jmeter-plugins


    【解决方案1】:

    您可以通过 JMeter 属性至少以另外 2 种方式定义线程数:

    1. user.properties文件中(该文件位于JMeter的“bin”文件夹中,需要重启JMeter才能获取属性)

      threads=100
      
    2. 或者您可以通过-J 命令行参数执行相同的操作,即将 JMeter 启动为:

      jmeter -Jthreads=100 -n -t ....
      

    在您的线程组中,您可以通过__P() function 引用该属性,例如:

     ${__P(threads)}
    

    也可以使用“默认”值,以防“线程”属性未定义:

    ${__P(threads,50)}
    

    参考资料:

    【讨论】:

    • Dmitri,我需要从一个 JSON 文件中读取每个线程组的线程数。而且我需要并行运行所有测试组。如果我在测试计划的开头有一个专用的线程组(我们称之为 Config),它读取 JSON 文件并将它们转换为属性变量,我想这可能是测试线程组准备好运行的情况,但是 Config 组没有完成读取该组的线程数。这意味着该组将永远不会运行,因为尚未定义线程数。
    • 使用 setUp Thread Group 和 1 个用户和 1 个循环来读取 JSON。您可以使用HTTP Request 采样器使用file 协议和JSON Extractor 来读取值,查看How to Extract Data From Files With JMeter 以了解有关方法的详细信息
    • 谢谢你,德米特里。
    【解决方案2】:

    我当前的算法:我在测试计划中有第一个线程组 称为设置。我将数据文件读取到局部变量中。随着 BeanShell Sampler,我将这些变量转换为属性 变量。在每个线程组中,线程数通过以下方式定义 属性变量。

    您可以使用Property File Reader。这将在任何线程组启动之前加载。所以你不会遇到任何问题。

    如果您不喜欢 Property File Reader,无论您做什么 - 读取数据文件并将它们转换为属性 - 在 setUp Thread Group 中进行。

    它将在任何线程组启动之前执行

    【讨论】:

    • 我喜欢你的属性文件管理器,但我需要从 JSON 文件中读取数据,而不是键/值对。即使我想并行运行测试组,setUp 组是否在任何其他组之前执行一次?
    • “setUp 组在任何其他组之前执行一次,即使我想并行运行测试组” - 是的。这将首先执行。
    • 谢谢你,Vinoth。
    • @Vladimir,很高兴它有帮助
    • @vins 但组之间没有相关性
    猜你喜欢
    • 1970-01-01
    • 2015-06-08
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多