最近,遇到了一个困扰很多人的问题。情景如下:
业务流程:登录一个网站,反复进行充值。
通常的做法是使用jmeter对登录和充值的接口进行反复的执行:
但是实现的方法却不能完美的贴合业务流程。并且,在进行压测的时候,总不可能把登录接口也一起压了吧。
因此,就需要用到jmeter的逻辑控制器了。那啥是逻辑控制器呢?
Jmeter官网对逻辑控制的解释是:Logic Controllers determine the order in which Samplers are processed。
翻译一下:逻辑控制可以控制采样器(samplers)的执行顺序。
那么,Show time!!!
1、线程组->添加->逻辑控制器->仅一次控制器
ps:如果是英文版的jmeter,Thread Group->add->logic Controller->Once Only Controller
概念:测试计划执行期间,该控制器下的子结点对每个线程只执行一次
2、在仅一次控制器下添加接口请求。到此,实现登录接口的一次运行
(ps:由图可见,登录接口是在仅一次控制器下面的)
3、线程组->添加->逻辑控制器->循环控制器
ps:如果是英文版的jmeter,Thread Group->add->logic Controller->Loop Controller
概念:指定其子节点运行的次数,可以使用具体的数值(如下图,设置为4次),也可以使用变量
4、在循环控制下添加充值请求。并设置循环次数,到此,即实现了登录一次却循环执行了多次充值接口的目的。
(ps:由图可见,充值接口是在循环控制器下面的)
5、运行察看结果树,完美!
!!!!!!!重点来了,老师敲黑板了阿!!!!!!!
循环控制器:
1、永远选项:勾选上这一项表示一直循环下去
2、如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的下面的接口运行的次数为两个数值相乘的结果。
仅一次控制器:
将仅一次控制器作为循环控制器的子节点,仅一次控制器在每次循环的第一次迭代时均会被执行。