间隔在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中运行特定的采样器的主要内容,如果未能解决你的问题,请参考以下文章
Junit测试用例在STS中成功运行,但无法通过Jmeter运行。