如何在 24 小时内处理 OAuth 令牌过期和生成 Jmeter 中的耐久性测试

How to handle OAuth Token Expiration & generation during 24 hours Endurance test in Jmeter

提问人:k pavan kalyan 提问时间:11/7/2023 最后编辑:k pavan kalyan 更新时间:11/7/2023 访问量:58

问:

我正在对使用 OAuth 机制的 API 进行性能测试。

**问题:**

  1. 在测试开始时生成令牌(AP1)并将令牌传递给API2。
  2. 代币的有效期为12小时。
  3. 在测试开始时触发令牌 API1 并将令牌传递给 API2,所以我必须在测试中途重新生成令牌 (API1) 并将令牌传递给 API2。
  4. 耐久性测试总持续时间 : 24 小时

注意:令牌生成时间在令牌生成 API 响应中不存在。

参考了以下博客,但没有成功:

仅在到期时重新运行 getToken(authorization) 请求 - Jmeter

如何在 JMeter 中的负载测试期间处理令牌过期和重新生成

任何人都可以提出解决方案

JMerter 性能测试

评论


答:

0赞 Dmitri T 11/7/2023 #1

您可以执行以下操作:

  1. 在一个执行身份验证的线程组中获取令牌,并使用流控制操作采样器设置延迟,即 11 小时 30 分钟
  2. 将令牌传递给正在执行耐久性测试的主线程组,方法是将其保存到第一个线程组的 JMeter 属性中,然后在第二个线程组中使用 __P() 函数读取它

详细信息:将 JMeter 变量用于多个线程组

评论

0赞 k pavan kalyan 11/8/2023
1. 执行身份验证的第一个线程组触发了令牌。假设如果我们设置 60 秒的延迟。2. 第二个线程组,即主线程组执行,直到延迟 60 秒完成才启动。3.您能否告诉我们如何执行第二线程组(即主线程组)并行。
0赞 Dmitri T 11/8/2023
您可以使用 if,即 Controller 等待令牌在主线程组中可用。另一种选择是使用线程间通信插件
0赞 k pavan kalyan 11/8/2023
正如您所说,遵循线程间通信插件方法。尝试了以下测试计划。1. 身份验证线程组 -> 生成令牌 API 1 HTTP 请求采样器 -> Json 提取器 ->BeanShell 断言存储令牌值 -> jp@gc - 线程间通信 后处理器使用 fifoput 方法 -> 流量控制动作诱导延迟 11 小时 30 分钟
0赞 k pavan kalyan 11/8/2023
2. 主线程组 -> API 2 HTTP Request Sampler -> ${__property(valueToPass)} in Header Manager fields -> jp@gc - Inter-Thread Communication PreProcessor .注意:主线程组必须运行 24 小时,然后身份验证线程组必须在测试开始时一次性发出令牌,并在 11 小时 45 分钟到期之前重新生成令牌。上述方法对我不起作用,您能否提出任何解决方案