0

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

  1. 用户使用 graphql 突变登录平台,并在响应标头中收到 accessToken,有效期为一小时。
  2. 下一个 graphql 请求必须解析生成的令牌,并使用这个令牌执行下一个突变。
  3. 这个想法是用 250k 个请求测试平台,这需要 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 请求 - 运行将不会完成,因为登录将每小时运行一次。

有任何想法吗?

4

1 回答 1

0

您可以添加循环控制器吞吐量控制器并将它们配置为执行这 250k 请求,然后配置如下流控制操作采样器

在此处输入图像描述

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

另请注意,从 JMeter 3.1 开始,您应该使用 JSR223 测试元素和 Groovy 语言编写脚本,因此现在考虑迁移是有意义的。使用 1 个线程每小时存储一次属性不是您应该担心的事情,但对于更多资源密集型任务,Groovy 的表现要好得多(例如,它具有内置的 JSON 支持,因此您可以丢弃 JSON 提取器)

于 2021-06-18T11:48:31.703 回答