Logic Controller逻辑控制是JMeter的一个组件,决定每个sampler样本的执行顺序。他的标志是
。
下图显示的是所有的逻辑控制的类型。
>> ForEach Controller
场景:需要点击某个页面上的6个链接,如果使用Transaction Controller则要有6个samplers,每个sampler的path是不一样的。使用ForEach Controllert的话,只需要一个sampler就可以实现。
首先使用了Regular Expression Extractor 来定义了6个名字为url的变量,值为6个链接的地址,如:
六个url变量相当于如下6个:
url_1=/XXX01.jspa
url_2=/yyy02.jspa
url_3=/zzz03.jspa
url_4=/XXX04.jspa
url_5=/yyy05.jspa
url_6=/zzz06.jspa
在这个Controller定义Input variable prefix为url,即在Regular Expression Extractor中定义的变量名字。Output variable name我定义为returnVar。
在这个Controller中的Sampler的path可以使用${returnVar}。Controller会遍历6个url,也就是访问6个链接地址。
>> If Controller
场景:如果用户名为wendy,则运行Controller里面的Samplers,否则不运行。
Name:这个Controller的名字。
Condition(Default Javascript):这个是判断语句,结果为true则运行samplers,否则跳过。默认是Javascript语句。例如:用Regular Expression Extractor得到用户名username,在Condition中写"${username}" == "wendy"。
>> Include Controller
场景:如果我们需要写一个很大的测试,其中登陆部分的测试已经写过了的,但是是在另一个jmx文件里面,而我们不想重新做一遍。
Filename是你已经写过的你想重用的 jmx文件的地址和名字。
>> Interleave Controller
场景:
>> Loop Controller
场景:你需要某一个transaction循环多次。
Loop Count填写你想要循环的次数。
>> Module Controller
场景:好几个Thread Group都要用到登陆的transaction,每一个都重新录制很麻烦,而且以后要修改就要该好几个。可以使用module controller来实现重用。
1.录制一段登陆的transaction。
2.在你需要使用登陆的thread group中添加module controller。
3.在modele to run的下拉框中选择登陆的transaction。
>> Once Only Controller
场景:登陆后,要做一些操作,比如添加,修改,删除,但是登陆只需要一次就够了,不需要每次操作都登陆一次。
>> Recording Controller
>> Runtime Controller
>> Simple Controller
>> Switch Controller
场景:模拟用户点击了一个满足某个条件的链接。
>> Throughput Controller
>> Transaction Controller
这个controller的子元素既可以是controller,也可以是sampler。
>> While Controller
当条件满足的时候才会执行的controller,如上图,当flag的值为true时,才会执行这个controller下面的samplers。
Reference:
Jmeter Logic Controller - http://jmeter.apache.org/usermanual/component_reference.html#logic_controllers
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img4.ph.126.net/9_Zo_Y9_br0HSyz5LYpvkA==/2483735194512146914.jpg)
下图显示的是所有的逻辑控制的类型。
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img0.ph.126.net/FnmciB8IYN2oFwnP9oHh8Q==/1087056360073867360.jpg)
>> ForEach Controller
场景:需要点击某个页面上的6个链接,如果使用Transaction Controller则要有6个samplers,每个sampler的path是不一样的。使用ForEach Controllert的话,只需要一个sampler就可以实现。
首先使用了Regular Expression Extractor 来定义了6个名字为url的变量,值为6个链接的地址,如:
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img4.ph.126.net/ttiIjoTY_JIb2vuw7wJ1rw==/1291970143119410604.jpg)
六个url变量相当于如下6个:
url_1=/XXX01.jspa
url_2=/yyy02.jspa
url_3=/zzz03.jspa
url_4=/XXX04.jspa
url_5=/yyy05.jspa
url_6=/zzz06.jspa
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img2.ph.126.net/LXyyJm0feUPxWGChBgS6bw==/1306606841908362122.jpg)
在这个Controller中的Sampler的path可以使用${returnVar}。Controller会遍历6个url,也就是访问6个链接地址。
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img8.ph.126.net/qibOELZjNGKbHHxhPtbhqg==/1564437920575322758.jpg)
场景:如果用户名为wendy,则运行Controller里面的Samplers,否则不运行。
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img6.ph.126.net/x9hw-QMxdkEqPaVO05Vn-A==/609956274549494686.jpg)
Condition(Default Javascript):这个是判断语句,结果为true则运行samplers,否则跳过。默认是Javascript语句。例如:用Regular Expression Extractor得到用户名username,在Condition中写"${username}" == "wendy"。
>> Include Controller
场景:如果我们需要写一个很大的测试,其中登陆部分的测试已经写过了的,但是是在另一个jmx文件里面,而我们不想重新做一遍。
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img4.ph.126.net/2wefjRJ_j6eovvlsPZo-Jw==/577586652227802864.jpg)
>> Interleave Controller
场景:
>> Loop Controller
场景:你需要某一个transaction循环多次。
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img1.ph.126.net/cioOG4odTjIAB361rnZ02Q==/564638803299119421.jpg)
Loop Count填写你想要循环的次数。
>> Module Controller
场景:好几个Thread Group都要用到登陆的transaction,每一个都重新录制很麻烦,而且以后要修改就要该好几个。可以使用module controller来实现重用。
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img8.ph.126.net/uBCWEa1MW25Y1OeZku0YWg==/2667256879327712388.jpg)
2.在你需要使用登陆的thread group中添加module controller。
3.在modele to run的下拉框中选择登陆的transaction。
>> Once Only Controller
场景:登陆后,要做一些操作,比如添加,修改,删除,但是登陆只需要一次就够了,不需要每次操作都登陆一次。
>> Random Controller
场景:一个页面上有很多链接,模拟用户随机点击页面上的链接。随机点击页面上的一个链接。
场景:一个页面上有很多链接,模拟用户随机点击页面上的链接。随机点击页面上的一个链接。
>> Random Order Controller
场景:一个页面上有多个链接,模拟用户随机的点击页面上的几个链接。链接都会被点击,但是顺序是随机的。
场景:一个页面上有多个链接,模拟用户随机的点击页面上的几个链接。链接都会被点击,但是顺序是随机的。
>> Runtime Controller
>> Simple Controller
>> Switch Controller
场景:模拟用户点击了一个满足某个条件的链接。
>> Throughput Controller
>> Transaction Controller
这个controller的子元素既可以是controller,也可以是sampler。
>> While Controller
![[JMeter] Logic Controller 逻辑控制的使用(继续中。。。) - wendy - wendy的博客](http://img4.ph.126.net/ZoRynOw3gEWOER7C7Zcl5A==/109493765958275544.jpg)
Reference:
Jmeter Logic Controller - http://jmeter.apache.org/usermanual/component_reference.html#logic_controllers