【问题标题】:Refreshing Auth Token while keep the requests running in JMeter 3.3在保持请求在 JMeter 3.3 中运行的同时刷新 Auth Token
【发布时间】:2018-02-12 14:20:46
【问题描述】:

我使用 Jmeter 3.3 有以下场景:

我想每 2.5 分钟运行一次“Get auth token”,同时不停地运行[GET] 线程组。

换句话说,[GET] 正在从第一个线程组获取身份验证令牌,我想并行运行它们,并且只在 2.5 分钟时更改一次令牌。

我尝试向第一个线程添加一个常量计时器,但第二个线程在计时器过去之前没有运行。

我怎样才能让[GET] 不间断运行,而“Get Auth token”只在 2.5 分钟运行一次?

LE:

[GET] 线程用于负载测试,应该与大约 100 个活跃用户一起运行(全部使用相同的令牌)

HTTP Sampler 下添加了常量定时器

> Get Auth token
>> [POST] Auth token
>>> HTTP Header Manager
>>> Regular Expression Extractor
>>> Response Assertion
>>> Constant Timer

LE2: 我尝试在第一个线程组下添加一个测试操作。在 Thread 1 延迟之后,我没有设法让 Thread 2 运行而不等待。

【问题讨论】:

  • 你添加常量定时器的时候,是不是把它作为HTTP采样器的子代?
  • 是的,我做到了。正好在“[POST] Auth token”下的“Response Assertion”下。问题是,对于线程 1,我应用了延迟,但是当延迟生效时,线程 2 也处于暂停状态。我希望线程 2 同时运行。
  • 它对我来说工作正常,但是您可以尝试另一件事,在您的第一个线程组中的 HTTP 采样器之后添加一个测试操作采样器,并将其配置为暂停您想要的持续时间和删除计时器并尝试一下。
  • 不走运。我开始认为它与线程间通信有关。如果我复制线程 2 并删除线程 1 中获得的身份验证令牌,它可以正常工作。
  • 你的 if 语句是什么?您能否在您的 if 控制器之前添加一个调试采样器并使用测试操作配置运行,观察视图结果树,看看线程是否根本没有执行或者它没有进入 if 控制器。

标签: multithreading authentication jmeter refresh token


【解决方案1】:

根据Functions and Variables用户手册章节

属性与变量不同。 变量是线程本地的;属性对所有线程都是通用的,需要使用__P或__property函数来引用。

所以我建议通过 Get auth token 线程组中的 __setProperty() function 将您的 authToken 转换为 JMeter 属性,并使用 __P() function 引用 Get 线程组中的值,因此一旦 authToken 值全部更新线程将使用新值而不是旧值。

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

【讨论】:

  • 感谢您的清晰解释。这与测试操作一起解决了问题。
猜你喜欢
  • 2016-12-19
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多