Skip to content

控制器

控制器

简介

在 JMeter 中,逻辑控制器是一种测试元素,用于控制测试计划中其他测试元素(如请求、定时器等)的执行顺序和条件。逻辑控制器通过逻辑条件来决定是否执行其下面的子元素,从而模拟真实用户行为或者特定的测试场景。

常用的控制器

  • Transaction Controller(事务控制器)
  • If Controller(条件控制器)
  • Loop Controller(循环控制器)
  • Random Controller(随机控制器)

添加元件步骤:

alt text

Transaction Controller

Transaction Controller(事务控制器) 是 JMeter 中一种逻辑控制器,它允许用户将多个 Sampler 组合成一个逻辑事务,表示一个业务流程或用户操作。Transaction Controller 可以帮助用户统计和管理这些逻辑事务的性能数据,例如请求响应时间、吞吐量、错误率等指标。

alt text

相关配置参数介绍:

  • Generate Parent Sample:如果选中,事务控制器将作为其他取样器的父级样本,否则事务控制器仅作为独立的样本。一个事务下包含多个请求,如果一个请求失败了,那这个事务就失败了。

    • 勾选之后只会显示事务控制器的相关指标:
    • 未勾选还会显示每个请求的相关指标:
  • Include duration of timer and pre-post processors in generated sample:如果选中,在生成的样本中包括计时器,预处理和后处理的延迟时间,否则不包含。

以访问百度首页为例,展示 Transaction Controller 的使用。

1. 步骤一:添加线程组,在线程组中配置并发数为 5,线程组中添加 Transaction Controller,然后在 Transaction Controller 下添加 4 个相同的 HTTP Request,都为请求访问百度首页,最后添加 Aggregate Report 查看响应结果。

alt text

2. 步骤二:点击运行查看勾选 Generate Parent Sample 与否的区别:

alt text

If Controller

If Controller(条件控制器)允许在执行测试计划时根据某个条件来选择是否执行其子元素。例如,可以根据前一个请求的响应结果是否包含某个关键字来决定是否执行下一个请求。

Interpret Condition as Variable Expression? 勾选与不勾选的情景:

  • 勾选:alt text
  • 未勾选:alt text

相关参数配置说明:

  • Condition (evaluated with javascript):默认情况下,该条件被解释为返回"true"或"false"的 JavaScript 代码。
  • Expression (must evaluate to true or false):表达式(值必须是 true 或 false)
  • Interpret Condition as Variable Expression?:如果选择了这个,那么条件必须是一个计算值为"true"的表达式。
  • Evaluate for all children?:
    • 勾选:表达式会在 if controller 节点下的每个取样器之前执行一次,根据表达式结果判断是否执行该取样器。
    • 不勾选:只在 if controller 入口处执行一次,根据结果判断是否执行下面的脚本。

以访问百度首页为例,展示 If Controller 的使用。

1. 步骤一:添加线程组,线程组中添加 HTTP Request 和 If Controller,然后在 If Controller 下添加 HTTP Request,两个请求都为访问百度首页,最后添加 View Results Tree 查看响应结果。

alt text

2. 步骤二:在 If Controller 中进行相关配置:

alt text

3. 步骤三:当作为条件的请求通过时,在 View Results Tree 中展示响应结果:

alt text

4. 步骤四:当作为条件的请求失败时,在 View Results Tree 中展示响应结果:

alt text

循环控制器

Loop Controller 是 Apache JMeter 中一种循环控制器,用于控制其子元素(如采样器、定时器、逻辑控制器等)的执行次数。通过 Loop Controller,可以指定子元素需要被执行的循环次数,从而实现对测试逻辑的循环执行。

相关参数配置说明如下图:

alt text

以访问百度首页为例,展示 Loop Controller 的使用。

1. 步骤一:添加线程组,线程组中添加 Loop Controller,然后在 Loop Controller 下添加访问百度首页的 HTTP Request,然后设置 Loop Controller 的循环次数为 10,最后添加 View Results Tree 查看响应结果。

alt text

2. 步骤二:点击运行查看结果:

alt text

随机控制器

Random Controller(随机控制器)是 JMeter 中的一种逻辑控制器,用于在其子元素中随机选择一个进行执行。在性能测试中,Random Controller 可以帮助模拟用户行为的随机性,从而更接近真实场景。

相关参数配置说明如下图:

  • Ignore sub-controller block(忽略子控制器模块):勾选后,子控制器失效,由随机控制器代替。

alt text

以访问百度首页为例,展示 Random Controller 的使用。

1. 步骤一:添加线程组,线程组中的并发数设置为 4,线程组中添加 Random Controller,然后在 Random Controller 下添加四个访问百度首页的 HTTP Request,最后添加 View Results Tree 查看响应结果。

alt text

2. 步骤二:点击运行查看结果:

alt text

总结

  • 常见控制器的介绍
  • 常见控制器的使用