间隔在jmeter中运行特定的采样器

Posted

技术标签:

【中文标题】间隔在jmeter中运行特定的采样器【英文标题】:Running specific sampler in jmeter in intervals 【发布时间】:2019-02-28 19:43:30 【问题描述】:

我正在 jmeter 中运行负载测试。我有 login 服务和一个待测试的 serviceX。我希望登录服务中的 Authtoken 运行 serviceX。令牌每分钟到期。目前,我在同一个线程组中拥有登录服务,并且运行与 serviceX 一样多。我不想继续这个。我想在单线程中每分钟运行一次登录服务,并将令牌传递给 serviceX,ServiceX 运行定义的线程数和时间。如何做到这一点?

【问题讨论】:

【参考方案1】:

使用Once Only Controller 来实现这一点。该控制器仅在其内部执行一次请求per thread,并在通过测试计划的进一步迭代期间传递其下的任何其他请求。

因此,您可以将登录服务放在 Once Only 控制器内,将serviceX 放在控制器外。您必须为迭代相应地配置您的线程组,或者您可以将您的 serviceX 包裹在 Loop Controller 下。

示例:

假设你只想login你的第一个线程一次,然后想运行serviceX 10次,这里是下面的测试计划示例:

请记住,由于您想在一分钟内登录一次,并且一旦唯一的控制器在每个线程上工作,因此您必须相应地使用加速线程组。假设有 2 个线程,它们会每隔一分钟登录一次,那么线程组配置如下:

现在,如果您想在第一个线程登录后运行 serviceX 5 次,请将您的 serviceX 放在循环控制器范围内,并将循环计数值设置为 5

这是这个样本测试计划的结果:

希望这会有所帮助!

【讨论】:

这太棒了贾汗。这也有助于我了解控制器的工作原理。感谢您花时间用截图详细回答。【参考方案2】:

如果您在所有线程(虚拟用户)中仅使用一个令牌,则可以在您的测试计划中添加另一个带有 1 个线程和无限数量循环的 Thread Group,并在其中添加一个 HTTP Request 采样器以及相关的Post-Processor 提取令牌。还要添加一个Constant Timer 来添加请求之间的暂停,即使用55000 毫秒作为线程延迟值。

获得令牌后,您可以通过__setProperty() function 将其转换为 JMeter 属性

在您的“主”线程组中,您可以使用__P() function 读取当前令牌值

【讨论】:

非常感谢德米特里。它帮助我实现我想要的。

以上是关于间隔在jmeter中运行特定的采样器的主要内容,如果未能解决你的问题,请参考以下文章

如何针对多个请求顺序运行jmeter采样器

jmeter控制器

Junit测试用例在STS中成功运行,但无法通过Jmeter运行。

我如何从服务器捕获多个响应,并且我必须检查 jmeter 中 JSR223 采样器的特定响应?

Jmeter-线程组中线程的启动间隔

如何设置循环遍历CSV文件中每个值的jmeter测试?