【问题标题】:How to run the jmeter thread groups one after another如何一个接一个地运行jmeter线程组
【发布时间】:2021-09-03 03:03:51
【问题描述】:

接下来的情况是:我需要使用 jmeter 运行性能测试。我已经设置了几个 Graphql 请求,对它们进行了测试,它们运行良好。接下来是流程的思路:

  1. 用户使用 graphql 突变登录平台,响应 headers 收到 accessToken,有效期为一小时。
  2. 下一个 graphql 请求必须解析生成的令牌,并使用此令牌执行下一个突变。
  3. 这个想法是用 25 万个请求测试平台,这需要 1 个多小时,并且您可能理解 - 令牌已过期。

我在脚本中做了什么:

  1. 我创建了 2 个线程组。首先,有一个 Flow is Control 动作元素,它设置为暂停持续时间 3600000 毫秒。这意味着它将每小时运行一次登录请求。
  2. 我正在使用 JSON 提取器抓取令牌,并使用 BeanShell 后处理器通过以下命令对其进行打包:

props.put("accessToken", vars.get("accessToken"));

  1. 第二个线程组有一个 Graphql 请求来执行对服务器的 250k 请求,并使用来自 HTTP 标头的令牌值: Bearer ${__P(accessToken)}

一切正常,接受这个事实,我不知道如何设置场景,在第二个线程组完成 250k 个请求之后,登录的线程组将完成其运行。 我尝试将循环控制器添加到登录,设置为无限,但是一旦第二组完成 250k 请求 - 运行将不会完成,因为登录将每小时运行一次。

有什么想法吗?

【问题讨论】:

    标签: json jmeter graphql threadgroup


    【解决方案1】:

    您可以添加 Loop Controller 或 Throughput Controller 并将它们配置为执行这 250k 请求,然后将 Flow Control Action Sampler 配置为:

    当到达采样器时 - 它会告诉所有线程组中的所有线程停止。

    还请注意since JMeter 3.1 you're supposed to be using JSR223 Test Elements and Groovy language for scripting,因此现在考虑迁移是有意义的。使用 1 个线程每小时存储一次属性不是您应该担心的事情,但对于更多资源密集型任务 Groovy behaves much better(例如它有 built-in JSON support,因此您可以丢弃 JSON 提取器)

    【讨论】:

    • 谢谢 Dmitri,我会尝试上述解决方案。
    猜你喜欢
    • 2017-07-05
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多