逻辑控制器:可以控制取样器的执行顺序(分支+循环)的一种组件。
类似于计算机语言的流程控制语句,流程控制就是控制代码的执行顺序(分支+循环)
可实现多样的业务逻辑。
类别1:分支控制器 ----- if控制器:符合条件就执行
类别2:往复控制器 ----- forEach控制器 + 循环控制器:循环执行
作用域:只对其子节点的sampler有效。
概念:Jmeter逻辑控制器是可以控制采样器(Sampler)的执行顺序,它由多个逻辑控制语句封装成不同功能的组件组成。
需求1: 测试计划中三个 http 请求,分别访问百度、淘宝和京东,不是无差异的都执行,而是有选择性的执行,定义一个用户定义的变量,如果值是 百度,就访问百度,是淘宝就访问淘宝
1. 如果(If)控制器
位置:线程组--逻辑控制器(if控制器)
条件为真,则执行其下的http请求,条件为假则不执行。
需求2: 有一组关键字 [hello,python,测试] 要依次取出,并在百度搜索
2. ForEach控制器
用户定义一组变量,上面if控制器时定义的只是一个变量。
1)、使用用户定义的变量存储一组数据
规则:同一变量前缀_编号
2)、在线程组中添加一个 forEach 控制器,遍历步骤1中的数据,将数据设置进 http 请求
注意索引: 左闭右开的
3)、输出变量名称,就是为获取到的值统一存放至一个变量,以被http请求调用。(囊括了name_1、name_2等)
1. 输入前缀变量:输入要遍历变量前缀
2. Start index for loop(exclusive):遍历变量开始的索引(从0开始)
3. End index for loop(inclusive):遍历变量结束的索引(不包括结束索引)
4. 输出变量名称:定义要被引用的变量名称
需求3:循环查询信息10次
3. 循环控制器
线程组属性(循环次数)可以控制循环次数,其实和循环控制器的效果一样,那么循环控制器有什么用:
循环控制器更灵活,线程组循环是组内所有请求都循环执行,循环控制器可以只是让组内指定的请求循环。前者作用域更大,后者只作用于其下的请求,作用域更小更灵活。