在jmeter中以一定间隔运行特定取样器

在jmeter中以一定间隔运行特定取样器,jmeter,performance-testing,load-testing,Jmeter,Performance Testing,Load Testing,我正在jmeter中运行负载测试。我有登录服务和一个serviceX要测试。我想从登录服务运行serviceX。代币每分钟到期一次。目前,我在同一线程组中拥有登录服务,并且运行的服务与serviceX一样多。我不想再这样下去了。我想在单线程中每分钟运行一次登录服务,并将令牌传递给serviceX,serviceX运行定义数量的线程和时间。如何实现这一点?使用来实现这一点。此控制器仅在其内部对每个线程执行一次请求,并在测试计划的进一步迭代过程中传递其下的任何其他请求 因此,您可以将登录服务放在一次

我正在jmeter中运行负载测试。我有登录服务和一个serviceX要测试。我想从登录服务运行serviceX。代币每分钟到期一次。目前,我在同一线程组中拥有登录服务,并且运行的服务与serviceX一样多。我不想再这样下去了。我想在单线程中每分钟运行一次登录服务,并将令牌传递给serviceX,serviceX运行定义数量的线程和时间。如何实现这一点?

使用来实现这一点。此控制器仅在其内部对每个线程执行一次请求,并在测试计划的进一步迭代过程中传递其下的任何其他请求

因此,您可以将登录服务放在一次性控制器内,并将
serviceX
放在控制器外。您必须为迭代相应地配置线程组,或者您可以将您的
serviceX
包装在下面

示例:

比方说,您只想
登录
第一个线程一次,然后想运行
serviceX
10次,下面是测试计划示例:

请记住,由于您希望每分钟登录一次,并且每个线程上只有一个控制器工作,因此您必须使用相应的线程组。假设有2个线程,它们将以一分钟的间隔登录,那么线程组配置如下:

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

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

希望这有帮助

用于实现此目的。此控制器仅在其内部对每个线程执行一次请求,并在测试计划的进一步迭代过程中传递其下的任何其他请求

因此,您可以将登录服务放在一次性控制器内,并将
serviceX
放在控制器外。您必须为迭代相应地配置线程组,或者您可以将您的
serviceX
包装在下面

示例:

比方说,您只想
登录
第一个线程一次,然后想运行
serviceX
10次,下面是测试计划示例:

请记住,由于您希望每分钟登录一次,并且每个线程上只有一个控制器工作,因此您必须使用相应的线程组。假设有2个线程,它们将以一分钟的间隔登录,那么线程组配置如下:

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

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


希望这有帮助

如果您在所有线程(虚拟用户)中仅使用一个令牌,则有必要将另一个具有1个线程和无限多个循环的令牌添加到您的测试计划中,并向其中添加一个采样器以及相关的抽取令牌。还可以添加一个来添加请求之间的暂停,即使用
55000
毫秒作为线程延迟值

一旦您拥有了令牌,就可以通过以下方式将其转换为JMeter属性


在“主”线程组中,您可以使用

读取当前令牌值,如果您在所有线程(虚拟用户)中仅使用一个令牌,则有必要向测试计划中添加另一个具有1个线程和无限多个循环的令牌,并向其添加一个采样器以及相关的抽取令牌。还可以添加一个来添加请求之间的暂停,即使用
55000
毫秒作为线程延迟值

一旦您拥有了令牌,就可以通过以下方式将其转换为JMeter属性


在“主”线程组中,您可以使用

读取当前令牌值,非常感谢。它帮助我实现了我想要的。非常感谢。它帮助我实现了我想要的。这真是太棒了。这也帮助我了解控制器是如何工作的。感谢您花时间用截图详细回答。这是很棒的Jahan。这也帮助我了解控制器是如何工作的。感谢您花时间用截图详细回答问题。