jmeter 17种逻辑控制器使用

一、简单控制器;通过该控制器对请求进行分组,该控制器不提供存储设备以外的功能。

二、循环控制器;该控制器下请求总数=线程数 * 线程组循环次数 * 循环控制器循环次数;

 三、仅一次控制器;该控制下的请求可以理解为:只执行其父(线程组/控制器)的第一次迭代;

如下图:线程3,线程循环2,循环控制器循环4;循环控制器下某请求总数=线程数 * 线程组循环次数 * 循环控制器循环次数=3*2*4;

循环控制器下某请求的总请求为24次,分4次循环,所以该控制器下的一次控制器下的请求,将执行6次;

四、交错控制器;交替控制器默认情况下,根据循环第几次,选择交替控制下的请求;

        选中跨线程交织,第一次迭代中,线程1将运行控制器的第一个请求;依次轮流(1,2,3,1...);

 五、随机控制器;每次随机选择该控制器下的请求;

 六、随机顺序控制器;控制器下每个请求都会被执行,但次序不定;

 七、吞吐量控制器;该控制器不控制吞吐量;

它有2种模式:1.执行百分比(1-100),执行测试计划一定百分比的迭代;

       2.执行总数:使控制器在执行一定数量后停止执行;

执行百分比如下图:吞吐量控制器下某请求执行个数=10*6*20%=12;

 执行总数如下图:吞吐量控制器下每个请求执行30次;不勾选‘每个用户’,且与线程组中的用户(线程)无关; 该控制器下某请求的次数取 线程数*循环次数、执行总数的最小值;

 吞吐量控制器选择‘执行总数’,并勾选‘Per User’,则控制器下某请求执行次数=线程数(用户数)*执行总数;该控制器下的某请求次数取 线程数*循环次数、线程数*执行总数的最小值;

 八、运行时控制器;运行时控制器控制其子代运行多长时间。控制器将运行其子级,直到超过已配置的运行时间。 

 九、如果控制器;If控制器允许用户控制其下的测试元素(其子元素)是否运行。

  默认情况下是变量表达式选项,需要使用jexl3函数;可以借助函数助手__jexls3,生成一个表达式;如下图;

 使用变量表达式,函数格式${__jexl3()},评估返回true 或 false 表达式;if控制器为true,则执行该控制器下的请求,如下图;

 取消选中“解释条件为变量表达式”,则if控制器将在内部使用javascript来评估条件;如下图;

 javascript表达式的另一种写法;使用变量参数,可借助__CSVRead函数设置变量参数,如下图;

 if控制器的设置如下,文件路径处有两种设置方式

 十、While控制器;While控制器将运行其子代,直到条件为'false';while条件可以是最终计算为字符串 "false"的任何变量或函数,允许使用__jexl3,__groovy函数,属性或变量;请注意,对条件进行了两次评估,一次是在开始对子代采样之前,一次是在子代采样结束时;

while控制器为空(什么都不填写),循环中的最后一个样本(请求)失败时退出循环;

 十一、开关控制器;

开关控制器的作用类似于交错控制器 ,因为它在每次迭代中运行一个从属元素,但不是按顺序运行它们,而是运行开关值定义的元素。开关值也可以是名称。

如果开关值超出范围,它将运行第零个元素,因此它是数字情况的默认值。如果该值为空字符串,它还将运行第零个元素。

如果该值是非数字(非空),则交换控制器将查找具有相同名称的元素(大小写有效)。如果两个名称都不匹配,则选择名为“ default ” 的元素(大小写无关)。如果没有默认值,则不会选择任何元素,并且控制器将不会运行任何内容。

十二、每个控制器;ForEach控制器遍历一组相关变量的值;

 ForEach控制器一般和用户自定义变量一起使用,用于可以遍历读取相关的返回值;该控制器下的取样器(请求)或控制器都会执行一次或多次,每次读取不同的变量值;

 ForEach控制器通常和表达式提取器一起使用;且提取器匹配数字应为-1,表示取全部值;

 十三、模块控制器;

 模块控制器下不可以添加请求,且该控制器所在的测试计划下必须有>=1个其它控制器;

 模块控制器中,运行模块选择哪个控制器,相当于是复制该控制器到模块控制器,则运行该控制器;指哪打哪;

 十四、包含控制器;

包含控制器设计为使用外部JMX文件。要使用它,请在“测试计划”下创建一个“测试片段”,并在其下方添加任何所需的采样器,控制器等,保存其为*.jmx文件;‘测试片段’下的请求,在自己的节点下不运行,被调用时会执行;

 十五、事务控制器;

不勾选‘Generate parent sample’,则事务控制器下的请求时分开的,且事务控制器结果为空;

勾选‘Generate parent sample’,会把事务控制器下的借口当做一个事务,当其中一个接口报错,则事务也报错;

事务控制器生成的样本时间 默认不包括计时器,预处理和后置处理器的时间;

使用场景:当单看主要数据和页面数据性能测试结果还是有比较大的差异的,因而在进行页面性能测试的时候,事务控制器是必不可少的利器,页面性能测试结果也会更加的准确。 另外,在API性能测试时,也经常用到事务控制器。例如:订单提交,其会调用多个接口,而有些接口又依赖前者接口的结果,因而就需要将这些接口统一看做一个事务,进行性能测试,得到的性能测试结果才会更加接近真实的场景。

 

十六、录制控制器;

记录控制器是一个占位符,指示代理服务器应将样本记录到何处。在测试运行期间,它没有任何作用,类似于简单控制器。但是在使用HTTP(S)测试脚本记录器进行记录的过程中,默认情况下,所有记录的样本将保存在“记录控制器”下。

十七、临界部分控制器;

关键部分控制器确保其子元素(采样器/控制器等)将仅由一个线程执行,因为在执行控制器的子代之前将使用命名锁。

如下图,线程组中线程数设置为6,循环次数为8;使用简单控制器,其下的请求时错乱的;使用临界部分控制器,其下的请求是有序的;

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/12482627.html