在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次。