【问题标题】:JMeter share setUp Thread Group variables with normal Thread GroupJMeter 与普通线程组共享设置线程组变量
【发布时间】:2017-07-26 18:43:03
【问题描述】:

假设我有一个简单的测试计划,如下所示:

setUp Thread Group
-- Http Request
---- JSON Extractor

Thread Group
-- Http Request

tearDown Thread Group
-- Http Request

默认情况下,在setUp Thread Group 中提取的变量将无法在普通Thread Group 或tearDown Thread Group 中访问。变量的内容每个用户都不同,不能预先计算并加载到测试计划中。无法使用单个用户模拟正确的负载。

如何从相应的线程组中访问每个线程的 setUp 变量并进行拆解?

【问题讨论】:

    标签: jmeter jmeter-3.2


    【解决方案1】:

    JMeter 变量范围仅限于当前线程组,如果需要在不同线程组之间传递一些数据,则需要将 JMeter 变量转换为 JMeter 属性:

    更多信息:Knit One Pearl Two: How to Use Variables in Different Thread Groups

    【讨论】:

    • 属性是全局权限,它们不会对每个用户都是单独的吗?
    • 是的,属性对于整个 JVM 都是全局的,如果您需要它们是特定于用户的,您可以使用即 __threadNum() function 作为前缀或后缀,因此虚拟用户 #1 将有一个值,虚拟用户#2 另一个值,等等。
    • 你能提供一个例子来说明它是如何工作的吗?以这种方式设置的属性数量是否存在性能或编码限制?
    • 给你:i.stack.imgur.com/632vw.png。您可能还会发现Inter-Thread Communication 插件很有趣,它可以用于在不同的 JMeter 线程甚至线程组之间传递变量。您可以使用JMeter Plugins Manager 安装插件
    • 谢谢,这适用于 2 个线程。不过,我仍然担心规模,比如说 5000 个分布式线程会发生什么?该插件似乎实现了一个队列,这对于一个变量来说非常有用,但对于传输多个变量来说并不好,无需实现自定义代码来组合和拆分它们。
    【解决方案2】:

    你在cmets中说

    5000 个分布式线程.. 传输多个变量...

    也许JDBC Requests 将帮助您将变量保存(插入)到数据库并获取(选择)变量和删除/更新变量,无论您在哪里进行测试。

    【讨论】:

    • 我想这可能会表现得更好,是的,尽管对于在所有 3 个阶段中保留相同线程 ID(例如 1-1、1-2)的单个线程来说,看起来仍然有很多不必要的同步。更不用说设置这个数据库的努力了......
    猜你喜欢
    • 2023-03-25
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多