逻辑控件器
逻辑控制器: 请求过程中,需要一些进行逻辑处理的控制器。如: 用户必须是登录成功后,才可访问个人信息页面
Critical Section Controller
- 关键部分控制器,用于核心部分的控制,但此部分的内容在一个线程中仅会执行一次
- 应用场景: 用户登录
- 
    配制说明 - Lock name: 仅配制名,不启实际作用 
 
- 示例代码: CriticalSectionController.jmx
Foreach Controller
- 遍历变量中的所有值
- 应用场景: 遍历变量的所有值。如:获取用户ID列表,再依次查看用户用户信息
- 
    配制说明 - Input variable prefix: 需要遍历的变量
- Start index for loop(exclusive): 从哪个索引开始,不填表示从第一个元素开始
- End index for loop(inclusive): 从哪个索引结束,不填表示遍历至变量内容的最后一个元素
- Output variable name: 遍历出来结果的变量,在控制器中使用的变量名
- Add "_" before number ?: 在数字前添加- _,默认勾选。如果是使用正则表达式提取的变量,一定要勾选此项 
 
- 示例参考: ForEachController.jmx
If Controller
- If状态判断控制器
- 
    配制说明 - Condition(default Javascript):- If的判断条件,默认支持- Javascript语法
- Interpret Condition as Variable Expression?: 勾选后,表达式的结果要为- 真时,才算判断成功。
- Evaluate for all children?: 是否对所有的子控制器进行校验 
 
- 示例参考: IfController.jmx
Include Controller
- 引用外部测试计划控制器
- 应用场景: 测试过程中,需要引用外部的测试计划
- 
    配制说明 - Include Test Plan-Filename: 选择需要引入的外部测试计划文件 
 
- 示例参考: IncludeController.jmx
Interleave Controller
- 间隔控制器,每个线程用户仅执行一次控制器内的请求,线程用户依据循环的次数请求控制器中的请求数
- 
    配制说明 - ignore sub-controller blocks: 是否忽略子控制器 
 
- 示例代码: Interleave.jmx
Loop Controller
- 循环控制器
- 应用场景: 指定循环次数或无限次循环
- 
    配制说明 - Loop Count:- Forever勾选后,则控制器一直循环;不勾选时,可直接设置循环的- 次数 
 
- 示例代码: LoopController.jmx
Module Controller
- 模块控制器,用于跳转到选定的控制器位置并执行对应的控制器
- 应用场景: 业务逻辑的跳转
- 
    配制说明 - Module to Run: 选择需要跳转到的目标控制器 
 
- 示例代码: ModuleController.jmx
Once Only Controller
- 每个线程用户仅运行一次
- 应用场景: 在线程中仅需要运行一次,后续不需要再次运行。如: 创建用户
- 
    配制说明 - 控制器不额外配制,将需要执行一次的内容放到控制器内,即可 
 
- 控制器不额外配制,将需要
- 示例参考: OnceOnlyController.jmx
Random Controller
- 随机控制器,随机选择控制器中的请求进行执行
- 应用场景: 页面的随机访问
- 
    配制说明 - ignore sub-controller blocks: 忽略子控制器 
 
- 示例代码: RandomController.jmx
Random Order Controller
- 随机顺序执行,与Random Controller不同的是,这个控制器会先将需要随机的内容均执行一遍,但次序不定
- 应用场景: 页面的随机访问,但均需要访问,且次序不限
- 
    配制说明 - ignore sub-controller blocks: 忽略子控制器 
 
- 示例代码: RandomOrderController.jmx
Recording Controller
- 
    录入控制器,直接使用JMeter的代理来录入 浏览器的请求信息- 录入时,需要设置浏览器的代理地址及端口
 
- 录入时,需要设置浏览器的
- 应用场景: 针对浏览器的请求信息进行录入
- 
    配制说明 - Recording Controller自身不需要配制,但需要- HTTP(S) Test Script Recorder和- HTTP Request Defaults的配制
- HTTP Request Defaults: 配制- Web Server-Server Name or IP中配制需要录入的- 目标地址的根URL
- 
        HTTP(S) Test Script Recorder- Port: 代理所需要使用的端口号
- Test plan content--Target Controller: 录入内容需要存放的位置
- Test plan content--Grouping: 录入内容的分组策略
- URL Patterns to Include: 过滤需要录入的URL地址,支持正则表达式
- URL Patterns to Exclude: 过滤不需要录入的URL地址,支持正则表达式
- 设置浏览器的代理地址及端口,点击HTTP(S) Test Script Recorder下方的Start后,在浏览器中输入地址,即可开始录入
  
 
 
- 示例代码: RecordingController.jmx
Runtime Controller
- 运行时间控制器,设置控制器中的请求运行时间,单位:秒
- 应用场景: 对业务请求时间进行限制
- 
    配制说明 - Runtime(seconds): 配制需要设置的运行时间,单位- 秒 
 
- 示例代码: RuntimeController.jmx
Simple Controller
- 简单控制器,不提供任何逻辑控制功能
- 应用场景: 请求的管理
- 
    配制说明 - 此控制器不需要配制 
 
 
- 此控制器不需要配制 
- 示例代码: SimpleController.jmx
Switch Controller
- 跳转控制器,类似编程语言中的Switch语法功能
- 应用场景: 满足条件执行的控制器
- 
    配制说明 - Switch Value: 配制需要跳转第几个的元素,元素值从0开始 
 
- 示例代码: SwitchController.jmx
Throughput Controller
- 别被名字迷惑了,跟吞吐量没任何关系。用于控制多久执行一次,有两种方式: 百分比和执行次数
- 应用场景: 限制请求的执行比率或执行次数
- 配制说明
    - 
        执行类型 - Total Executions: 整个测试计划中总计执行次数
- Percent Executions: 整个测试计划中总计执行百分比
- Throughtput: 设置的数值
 
- 
        Per User: 依据网上的说明在选择Total Executions时,勾选时会在每个线程中执行的次数。 
 
- 
        
- 示例代码: ThroughputController.jmx
Transaction Controller
- 事务控制器,类似LR中的事务
- 应用场景: 完成一个完整的页面请求或一组请求
- 
    配制说明 - Generate parent sample: 勾选后,所有的结果将在父结点中展示
- Include duration of timer and pre-post processors in generated sample: 是否包括准备发送数据的CPU生成样例时间,默认不勾选 
 
- 示例代码: TransactionController.jmx
While Controller
- 循环控制器,与开发语言中的While功能一致。直到条件为false时,停止运行
- 应用场景: 循环执行一个请求,仅判断一种状态下退出循环
- 
    配制说明 - Condition(function or variable): 可配制为空/- LAST/变量或方法 
 
- 示例代码: WhileController.jmx