jmeter组件---逻辑控制器1

一,组件简介

1、Loop Controller

循环控制器,控制在其下面的子元素循环执行。

在这里插入图片描述
在这里插入图片描述

1,设置循环次数,其下的所有请求会循环执行设置好的次数
2,如果在线程组里也有循环数字,执行他们两个相乘的次数
在这里插入图片描述

在这里插入图片描述

2、ForEach Controller

遍历一组相关变量的值。

需求:有一组关键字(N1,N2,N3)要依次取出,并在百度搜索
用户定义的变量必须是N_数字的格式

在这里插入图片描述
配置控制器(红色箭头由上往下数做注释)

1)自己(。・∀・)ノ゙嗨的上面的名字,不要_和数字
2)左闭右开(在用户定义的变量中,我们是按照1,2,3这样的顺序下去的,但是计算机解析是从0开始的,
然后我们在逻辑控制器中这个左闭右开,右边那个4是取不到的,输出值是有name_4的原因是因为计算机从0对应name_1开始算)
这样我们左取0对应上面的name_1,1对应name_2这样下去
3)提取完上面这两数字区间内的数据后再自(。・∀・)ノ゙嗨一个名字

在这里插入图片描述
在这里插入图片描述
请求的执行格式

1)前面(。・∀・)ノ゙嗨
2)调用定义后的名字方法
3)这两个调用都可以

在这里插入图片描述
在这里插入图片描述

参数解释:
1.输入变量前缀:就是“用户定义的变量”中的一系列变量的前缀。
2.Start index for loop:“用户定义的变量”中变量的下划线之后的数字,此处设置为0,意思是,数字必须大于等于0。
3.End index for loop:“用户定义的变量”中变量的下划线之后的数字,此处设置为4,意思是,数字必须小于4。
4.Output variable:被这个控制器下面的Samplers使用。
5.Use Separator:勾选后,会根据“_”来匹配,就如同上面示例。如果不勾选,则直接是变量前缀和数字拼接。

在这里插入图片描述

在这里插入图片描述

3、While Controller

循环执行其下面的测试元件,直到写入的条件为False。

和开发语言中的While作用是一样的,当条件(Condition中写的)为false的时候,就停止执行,退出循环。
在这里插入图片描述

Condition写入条件:

  • 为空(什么的都不写的时候):循环中的最后一个请求执行失败才退出循环
  • LAST:直到最后一个请求请求失败才退出循环。(和为空的区别是:如果在循环开始之前的最后一个请求失败了,就不会开始循环)
  • 其他内容:条件值等于“false”时,退出循环。也就是只要满足条件,就一直循环执行
  • Contion可以输入计算结果等于“false”的变量或者函数

案例:

1、 LAST

  • 直到最后一个请求请求失败才退出循环
  • 当里面的请求断言失败后就会跳出循环
  • 如果该控制器前面的最后一个请求是失败的则不进入循环

1.1)直到最后一个请求请求失败才退出循环
当最后一个请求是正确的时候,就进入无限循环模式了:
在这里插入图片描述
执行:
在这里插入图片描述

1.2)如果该控制器前面的最后一个请求是失败的则不进入循环

注:这个请求失败,是包括请求失败了和断言失败了

eg:
新建一个脚本:

在这里插入图片描述
在这里插入图片描述

执行结果:While控制器里的请求都不执行

在这里插入图片描述

再加一个请求成功但是断言失败的请求:

在这里插入图片描述

执行结果:While控制器里的请求都不执行

在这里插入图片描述

把断言修改成正确的:While控制器里的请求都执行

在这里插入图片描述
在这里插入图片描述

2、其他内容

${__javaScript()}  在()中写入判断条件就可以了
例如:
	1,	${__javaScript("${num}"<"8")}	:变量num小于8执行,一旦等于大于8就退出循环
	2,	${__javaScript("${num}"=="8")}	:变量num等于8执行,其他都不执行
	3,	${__javaScript("${num}"!="8")}	:变量num不等于8执行,一旦等于8就退出循环
	4,	${__javaScript("${num}"!=4&&"${num}"<"8",)}	:变量num小于8且不等于4执行,一旦大于等于8或者等于4,满足一样就退出循环

举个栗子:

设置一个脚本,添加一个计数器和请求都在While控制器下面
在这里插入图片描述
组件配置为:
计数器配置从1开始,最大到10,引用变量名num:
在这里插入图片描述
1)While控制器写:

在这里插入图片描述
执行得:
后面的请求9和请求10不会执行,到8结束
在这里插入图片描述
2)While控制器写:
在这里插入图片描述

执行得:
什么都没运行,因为我们是从1开始的,打从第一个请求就不满足
在这里插入图片描述
3)While控制器写:
在这里插入图片描述

执行得:
在这里插入图片描述
4)While控制器写:
在这里插入图片描述

执行得:
在这里插入图片描述

4、Alternate controller

交替控制器,交替执行其下面的测试元件。

每次循环执行该控制器下的一个采集器,下次循环,按顺序执行下一个采集器
在这里插入图片描述
此处举例说明。如下图:
在这里插入图片描述
某线程,第1次循环,只执行该控制器下的“交替1”;
第2次循环,只执行该控制器下的“交替2”;
第3次循环,只执行该控制器下的“交替3”;
第4次循环,只执行该控制器下的“交替1”;
……

忽略子控制器块(此处应该是汉化错误_
1.交替控制器下有一个简单控制器,且勾选该选项
当执行轮到这个简单控制器的时候,会执行这个控制器下面所有的采集器。而这个执行过程,交替控制器会当作它下面的控制器是一个整体。
2.交替控制器下有一个简单控制器,不勾选该选项
当执行轮到这个简单控制器的时候,会执行这个简单控制器下面第1个采集器,以此类推。而这个执行过程,这个简单控制器对于交替控制器来说,是透明的。

在这里插入图片描述

5、Random Controller

随机控制器,每次循环随机执行一个。

在线程数和循环数都是1次的情况下,该控制器下面无论几个请求,都是只随机请求一个
在这里插入图片描述
栗子:
在这里插入图片描述
第一次执行:
在这里插入图片描述
第二次执行:
在这里插入图片描述

6、Random Order Controller

随机顺序控制器,其下面的测试元件全部执行,但是顺序是随机的

该控制器下面的所有请求都会执行,但是是随机执行

  • 和简单控制器的区别是,一个顺序执行全部请求,一个随机执行全部请求
  • 和随机控制器的区别是,一个随机执行一个请求,一个随机执行全部请求

在这里插入图片描述
栗子:

在这里插入图片描述
第一次执行:
在这里插入图片描述

第二次执行:
在这里插入图片描述

7、如果(if)控制器

If控制器允许用户控制其下方的测试元件(其子元件)是否运行。

If控制器将在内部使用javascript来计算条件,但这会导致性能下降。

根据控制器设置的条件,进行判断,如果符合条件,则执行该控制器下面所有的子节点,否则不执行。如果什么条件都不设置,则不会执行它下面的节点。
在这里插入图片描述

  • Interpret Condition as Variable Expression?:如果选中,则条件必须是计算结果为“true”的表达式(忽略大小写)。例如,${FOUND}${__jexl3(${VAR} > 100)}。与JavaScript情况不同,仅检查条件是否匹配“true”(忽略大小写)。
    对于性能测试,建议在条件中使用__jexl3__groovy函数
  • Evaluate for all children:是否应对所有子元件进行评估?如果未选中,则仅在输入时评估条件。就是假如这个控制器下面,有3个HTTP请求。如果需要在执行每个HTTP请求前,进行判断是否满足控制器中的条件,则需要勾选该复选框。

8、Switch Controller

Switch控制器的作用类似于交替控制器,它在每次迭代时运行一个子元件,但控制器运行顺序不是按排列顺序,而是按switch value定义

在这里插入图片描述
填的内容:

  • 0:执行第一个请求,1:执行第二个请求,依次类推
  • -1:无效,不会执行任何请求
  • 要是填的数字超过取值范围了,就默认是0
  • 不填:默认执行数字0的请求,即顺位第一个请求
  • 非数字:可以填请求的名字来匹配,但是必须是完整的名字

举个栗子

创建一个脚本:
在这里插入图片描述
依次填入下列的值,并执行

不填:
在这里插入图片描述
-1:
在这里插入图片描述
0:
在这里插入图片描述
2:
在这里插入图片描述
2号:
在这里插入图片描述
请求2号:
在这里插入图片描述

9、Throughput Controller

吞吐量控制器,控制该控制器下采集器执行的频率

10、Runtime Controller

运行时长控制器,控制其下面的测试元件运行执行的时间

二,其他组件

全组件目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值