Jmeter 控制器

在JMeter中最常用的控制器有:

  • Simple Controller

  • Loop Controller

  • Once Only Controller

  • Throughput Controller

  • Interleave Controller

  • If Controller

  • While Controller

一、简单控制器

Simple Controller, 即"简单控制器",本身不具备任何特定功能。

Simple Controller可以视作为一个容器,把某个业务中涉及的接口请求放在一起,便于理解。

例如,我们可以把登录业务涉及到的一系列接口放在一个Simple Controller, 把订单业务涉及到的一系列接口放在另一个Simple Controller中。

  • Simple Controller设置

  • 当前线程组设置

  • 执行结果当前仅一个线程,每个请求仅执行一次

二、循环控制器

当你希望某些特定请求运行的次数,多余线程组中指定的迭代次数,这个时候,就可以把这些请求放到循环控制器中,并在控制器设置中对应的循环次数。

当前循环控制器内有两个接口请求——订单列表和订单开单,循环控制器计数为5,即当前循环控制器中的请求会迭代2次。

所以,订单列表和订单开单都会执行2次。

  • 当前线程组设置

当前线程组中仅一个线程,整个线程组中的请求需要迭代执行3次。

当前线程组中共有3个请求,登陆请求不在循环控制器内。

  • 执行结果

当前线程组设置循环次数为3——针对每一个当前线程,登陆请求会执行3次。

循环控制器中设置循环次数为2——针对每一个当前线程,订单列表和订单开单会执行3*2,即6次。

 三、只执行一次控制器

Once Only Controller,即"只执行一次控制器"。

即便当前线程组中设置了多次循环,如果有这样一个请求,你只想它执行一次即可,这时就需要用Once Only Controller。

例如 “登陆”,实际应用中,我们只会发起一次获取登陆的请求,而其他请求(例如商品列表、添加到购物车等)会多次执行。

我们可以把仅希望执行一次的接口请求放在Once Only Controller中,在该控制器下的请求,当前线程只会执行一次,即便父类线程组设置了多次循环。

  • Once Only Controller设置

  • 当前线程组设置

当前线程组中仅一个线程,整个线程组中的请求需要迭代3次。

当前线程组中共有3个请求,登陆请求在Once Only Controller中。

  • 执行结果_1

当前线程组设置循环次数为3——针对每一个当前线程,订单开单、订单列表会执行3次。

线程组中有一个Once Only Controller——针对每一个当前线程,登陆请求只会执行1次。

  • 执行结果_2

如果把当前线程组中的线程数改为2,线程组的循环次数还是3。

那么有如下结果,当前线程组设置循环次数为3:

  • 针对每一个当前线程,订单列表和订单开单 会执行3次。

  • 由于线程组中有2个线程,订单列表和订单开单一共会执行2*3,即6次。

线程组中有一个Once Only Controller:

  • 针对每一个当前线程,登陆请求只会执行1次。

  • 由于线程组中有2个线程,登陆请求一共会执行2*1,即2次。

原文地址:https://www.cnblogs.com/keenajiao/p/15769679.html