Jmeter性能测试(9)--逻辑控制器

2023-05-16

jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。

jmeter提供了17种逻辑控制器,它们各个功能都不尽相同,大概可以分为2种使用类型:

①.控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller(循环控制器)、If Controller(如果if控制器)等;

②.对测试计划中的脚本进行分组,方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等

jmeter提供如下17种逻辑控制器:

一、临界区控制器(critical section Controller)

作用:临界区控制器确保其子节点下的取样器或控制器将被执行(只有一个线程作为一个锁)

名称和注释很简单,就是给控制器添加一个备注,使人明白这个控制器的解释含义的意思

Lock name:锁名称,这里可以填入其子节点下执行的线程的名称,这个线程作为一个全局锁存在

2、遍历循环控制器(ForEach Controller)

作用:用来遍历当前元素的所有可执行场景;在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值;

输入变量前缀:在其中输入需要遍历的用户参数(User Parameter)

Start index for loop(exclusive):循环指数开始(唯一)→ 遍历查询的变量范围,开始的值(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)

End index for loop(inclusive):循环指数结束(包含)→ 遍历查询的变量范围,结束的值

输出变量名称:将遍历查询到的符合条件的用户参数赋值给输入变量(Vname),然后就可以在控制器下的取样器使用,格式为${输出变量名}

Add”_”before number:输入变量名称中是否使用“_”进行间隔

PS:这个控制器一般配合配置元件→ 正则表达式提取器来一起使用,可对页面上的某些元素进行重复处理。

3、包含控制器(Include Controller)

作用:用于引用外部的Jmx文件;从而控制多个测试计划组合

include Test Plan:包含测试计划的文件名,可以点击浏览,从文件夹保存的JMX文件夹目录下选择对应的JMX文件

使用方法:创建一个测试计划,下面可添加取样器/控制器等,然后保存测试计划,为了方便起见, 线程组也可以添加外部JMX文件中用于调试;

如果测试使用Cookie或用户定义的变量,这些应放置在顶层(包括文件),否则无法正常工作;此元素不支持变量/函数在文件名字段中;但是,如果属于包含控制器定义的内容,则使用前缀路径名。

当使用包含控制器中包含相同的JMX文件,则要确保文件名不同,以避免无法读取;如果文件不能被发现,那么控制器会尝试打开文件名相对于JMX启动目录。

4、生命周期/运行周期控制器(Runtime Controller)

作用:用于控制该控制器下的取样器/控制器的运行时间

Runtime(seconds):运行时间,单位为:秒

5、转换控制器(Switch Controller)

作用:通过给该控制器中的value赋值,来指定运行哪个取样器(也可以理解为开关控制器)

Switch value:控制器具体赋值的value值字段

有两种赋值方式:

①.第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。

②.第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

当Value为空时,默认执行第1个子节点元素。

6、当/判断控制器(While Controller)

 作用:运行其子节点下的取样器/控制器,直到条件为“假”

Condition(function or variable):条件(函数或变量):里面可填入判断依据的条件,参照

使用方法:可能的条件值有:

①.空白:最后一个示例循环失败时退出循环

②.最后一个值:最后一个示例循环失败时退出循环。 如果之前的最后一个示例只是循环失败,不进入循环。

③.否则:退出时(或不输入)循环条件等于字符串“ 假 ”

条件可以是任何变量或函数,最终等于字符串” 假 ”。需要注意的是:条件是评估两次,一次取样前,一次随机取样

7、事务控制器(transaction controller)

作用:生成一个额外的采样器来测量其下测试元素的总体时间;值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的

Generate parent sample:生成父样本(不同的模式选择)

include duration of timer and pre-post processors in generated sample:包含时间的计时器和前后处理器生成的示例(不同的模式选择)

对于Jmeter2.3以上的版本,有两种模式的操作

①.事务采样器是添加到其下采样器后面的

②.事务采样器是作为其下采样器的父采样器

生成的事务采样器的测量的时间包括其下采样器以及其他的一切时间。由于时钟频率问题,这个时间可能略大于单个采样器的时间之和;

时钟开始时间介于控制器记录开始时间与第一个采样器开始之间,时钟结束时间亦然。

事务采样器只有在其子采样器都成功的情况下才显示成功。

在父模式下,事务控制器下的各个采样器只有在结果树里才能看到;同时,子采样器的数据也不会在CSV文件中显示,但是在XML文件中可以看到。

8、交替控制器(creatleave controller)

作用: 交替控制,使得该控制器包含的取样器步骤交错执行在每个循环中

忽略子控制器模块(Ignore sub-contorller blocks):如果勾选此项,交错控制器将sub-controllers像单一请求元素一样,一次只允许一个请求/控制器

使用方法:假使该控制器下有2个取样器A和B,交替执行A和B2个请求,即每次传递一个子请求到这个测试,按子元件的排列顺序

9、仅一次控制器(once only controller)

作用:在多线程循环的时候,将使其子节点下的取样器请求只运行一次

10、流量控制器(throughput controller)

作用:jmeter自带的翻译这里是错误的,因为它并不能控制吞吐量(吞吐量的概念请自行百度);其实质作用是允许用户控制执行的频率

总共有两种执行模式:百分比执行和总执行

总执行(Total Executions):使控制器停止执行一定数量的测试计划

百分比执行(Percent Executions):使控制器按一定比例执行迭代的测试计划

流量(Throughput):对应上面的执行数量或者比例

每个用户(Per User):每个用户

如果勾选此项,将导致控制器计算是否应该执行在每个用户(每个线程)的基础上;如果不加以控制,那么将计算全球所有用户

11、IF控制器(If Controller)

作用:允许用户控制该控制器下面的取样器/控制器是否执行该节点下的子节点;

条件(默认JavaScript)(Condition(default javascript):使用JavaScript的函数或变量进行评估判断条件为真或假

条件解释为变量表达式(interpret condition as variable expression):如果勾选该项,那么变量表达式会进行求值,并与“ture”或“false”进行比较,而无需使用JavaScript

对所有子条件执行(evaluate for all children):如果勾选该项,则该controller在没一个子节点执行时执行一次;

默认情况下,该控制器可以对包含在其下面的所有可运行的元素进行执行,但只在入口执行一次

12、录制控制器(Recording Controller)

作用:类似代理服务器的作用,在测试执行期间记录测试样本

清除所有记录的样本(Clear all the recorded samples):点击可以清除所有已经记录的测试样本

一般情况下,在测试执行时候,它没有效果,但是在执行HTTPS测试脚本时,会记录下所有测试样本

13、循环控制器(Loop Controller)

作用:该控制器下的取样器请求可以循环运行

循环次数(Loop Count):在输入框中输入需要循环的次数,控制器下的请求即可循环运行

永远(forever):如果勾选该项,那么控制器下的请求可一直运行

14、模块控制器(Module Controller)

作用:测试控制器子节点下的某一个模块,而不是整个测试计划

 

寻找目标元素(Find target element):寻找测试计划中需要特定测试的元素,模块;也可理解为该控制器可以控制已经封装好的模块元素

△ :一个测试计划由一个控制器和所有的测试元素(取样器等)组成,测试计划可以位于任何线程组或工作台;如果计划位于线程组,则可以禁用其他控制器,防止正在运行的测试计划被影响(除了模块控制器)

     模块控制器的优势在于:当存在多个线程组时,该控制器可以轻松切换,只需要选择对应的取样器,方便快捷,替代了创建很多测试计划的繁琐操作

△ :任何一个模块所用的控制器名字必须唯一,因为其名字被用来找到目标控制器时重新加载;出于这个原因,最好保证控制器名字不同,否则执行测试时候可能发生意外

△ :模块控制器与远程测试不应使用或非gui测试与工作台部件,因为工作台测试元素并没有测试计划的一部分 jmx 文件。 任何这样的测试就会失败

15、简单控制器(Simple Controller)

 作用:用来组合取样器和其他逻辑控制器

简单控制器是最基本的控制器,对jmeter测试运行没有任何影响,可用来命名某些操作

16、随机控制器(Random Controller)

作用:类似交替控制器,但该控制器随机选取某一个取样器请求并执行

忽略子控制器模块(Ignore sub-controller blocks):如果勾选此项,交错控制器将sub-controllers像单一请求元素一样,一次只允许一个请求/控制器

17、随机顺序控制器(Random Order Controller)

作用:类似于简单控制器,将执行每个子节点下的取样器请求一次,但是执行是随机的

查询了很多资料,参考了其他博客作者的内容,可以说结果很不理想,大部分都是直接将jmeter官网文档用翻译词典翻译出来就贴上去了,错别字,解释语句不通;

官网文档地址:http://jmeter.apache.org/usermanual/component_reference.html#logic_controllers

Jmeter性能测试(10)--参数化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jmeter性能测试(9)--逻辑控制器 的相关文章

  • 我们可以通过jmeter.bat和ApacheJMeter.jar打开JMeter。有什么不同?

    我们可以通过以下方式打开JMeterjmeter bat and ApacheJMeter jar 它们之间有什么区别 ApacheJMeter jar 文件是一个可执行 jar 因此如果它与 java 应用程序关联 则可以通过在 wind
  • 如何从 WebDriver Sampler 中设置 JMeter Vars?

    I had previously used a CSS JQuery extractor to get a URL from a page and add it to JMeter vars accessing it here var pa
  • JMeter 基本身份验证

    我试图暗示使用 JMeter 的 Web 服务的基本身份验证过程 但每次它都会抛出错误 401 Unauthorized 我尝试使用 HTTP 标头管理器向其添加标头授权和值 但它仍然不起作用 我还尝试过使用 HTTP 授权管理器 还是没有
  • 循环访问多个正则表达式提取器输出

    您能告诉我如何循环遍历返回多个值的正则表达式后处理器的结果吗 Example JSON 响应消息 reply code 111 status SUCCESS customerID 222 a b 333 44 4 s 555 666 777
  • CentOS 中的 JMeter 整数表达式预期错误

    在 CentOS 中执行 JMeter 脚本时出现以下错误 我的JMeter版本是4 0 Java是1 8 我的脚本在 Windows 中运行良好 这是我的 JMeter 命令和我收到的错误 root localhost bin sh jm
  • JMeter 框架

    我最近开始学习 JMeter 来对我们的应用程序进行性能测试 我有一个测试计划 jmx 并使用 Jenkins Ant 定期运行它 到目前为止一切都很好 我的问题是 我们有一个关键字驱动的框架 TestNG 等用于功能测试工具 QTP Se
  • JMeter 使用什么 Maven 插件? jmeter-maven-plugin 还是 chronos-jmeter-maven-plugin?

    我需要设置由 CI 系统自动触发运行的性能测试 为此 我想使用 JMeter 因为已经存在一些脚本和经验 并且我想将其与 Maven 结合起来 在我对合理插件的研究过程中 我发现存在两个插件 jmeter maven 插件 http wik
  • Jmeter:jmeter中jmeter.sh和jmeter无扩展文件的区别

    我需要澄清 jmeter sh 和 jmeter 文件 不带 ext 它们位于 bin 文件夹中 举例来说 1 如果我在jmeter和jmeter sh文件中设置不同的HEAP大小 将考虑哪一个 2 以上是否取决于我如何运行测试 例如 jm
  • 使用Jmeter调用API时如何传递表单数据?

    我想使用 Jmeter 进行 API 调用 在我的 API 调用中 我发送一个带有请求的文件 我需要将文件名指定为表单数据 e g when I call the same API from postman 当我从 Jmeter 进行上述调
  • 在 Jmeter 中使用 JsonPath 和 != 条件从 JSON 中提取一些值

    我有以下 JSON 我需要获取没有 type Jenkins 的实例的 id 值 data id 35002399 6fd7 40b7 b0d0 8be64e4ec09c name 94Jenkins url http 127 0 0 1
  • JMeter 在性能测试期间挂起

    我试图模拟 4 个不同用户的 100 个线程请求 所有 97 个请求均已发送和接收 但其余 3 个请求仍显示为正在执行 我必须手动停止 Jmeter 然后只传递剩余的请求 为什么会发生这种情况 您的计算机可能没有资源来执行请求 或者 Jav
  • Jmeter中的“延迟时间”与“连接时间”有什么区别?

    我是jmeter 3 1用户 我不清楚 延迟时间 与 连接时间 的区别 事实上 在jmeter官方文档中 是这样说的 新的连接时间指标 connectTime 表示建立连接的时间 默认情况下 它不会保存到 CSV 或 XML 要保存它 请添
  • jmeter-如何获取当前日期和时间(以秒为单位)

    我想计算当前时间 以秒为单位 并将其用作我的 jmeter 测试计划中的参数 默认情况下 时间以毫秒为单位 有人可以帮我吗 您可以使用 time 函数 http jmeter apache org usermanual functions
  • 如何在 JMeter 中使用命令行参数

    我正在使用 Jmeter 测试 API 我想从终端参数化项目的路径 然后我想在 JMeter 中使用此参数 我通过命令行发送的参数 jmeter n t your script jmx Jurl abcdef com 我在用户定义变量中使用
  • 通过 Jmeter 从 Phantomjs 收集客户端性能指标

    在整个 PhantonJS 驱动程序配置中 我们有什么方法可以通过 phantomjs 使用 Jmeter DomLoad WindLoad ResourceCount 资源大小来捕获以下客户端性能指标 Thanks 我建议使用捕获指标WD
  • Jmeter 下降的最佳方法?

    我们都知道 Jmeter 并不是最擅长在运行期间更改活动线程的数量 除非您喜欢并创建以不同时间间隔触发的单独线程组 有没有人想出一个好的解决方案来在测试结束时降低速度 例如 我从 50 个线程开始 在 30 分钟内我想要 0 个活动线程 查
  • 在 JMeter 中,“将响应保存到文件”中,如何在将自定义后缀附加到文件名末尾的同时增加文件名

    在 JMeter 中 当使用 将响应保存到文件 来存储 http 响应时 如何在将自定义后缀附加到文件名末尾的同时增加文件名 这是我的场景 使用记录控制器和 HTTP S 测试脚本记录器记录文件转换和从网站下载的 http 流量 然后 我将
  • JMeter:来自 Jenkins 的九个以上参数

    我试图将超过九个参数从 Jenkins 传递到 JMeter4 0 当我阅读时 我发现 JMeter 不接受超过 9 个参数 作为解决方法 我想将所有参数作为字符串传递 并在 JMeter BeanShell 中将其拆分 java jar
  • 如何从后处理器获取父控制器的名称

    我的 Jmeter 项目结构如下所示 我有一个 Beanshell 后处理器作为子节点 如何获取父控制器的名称 简易控制器01 来自 BeanShell 后处理器 非常感谢您的帮助 Thread Group Simple Controlle
  • Apache JMeter:在请求正文中添加随机数据

    我正在 Apache JMeter 中对我们的应用程序进行压力测试 我想到调用注册用户方法 该方法将在数据库中添加用户 但如果电子邮件已存在 则不会发生数据库操作 如何在身体数据中添加随机数 或者有其他方法可以对与数据库连接的应用程序进行压

随机推荐

  • 行内存放数据属性data-id

    data 61 39 data 39 为行内存放数据的属性 xff0c 可通过事件源中的currentTarget dataset获取data 存放的值 另外css可通过 data 放置的标签名 data 61 39 data 39 设置
  • js常用封装方法

    span class token comment 生成随机数 64 length 指定长度 return 随机数 span span class token keyword export span function span class t
  • 计数器组件

    涉及事件 64 longpress 长按时触发 xff0c 64 touchend 手指从屏幕上离开时触发 1 计数器为文本标签的子组件 lt template gt lt view class 61 34 counter box 34 g
  • rich-text 富文本

    rich text 富文本 普通的text文件不能显示格式 xff0c 富文本格式rtf文件可以显示出很多格式信息 xff0c 比如可以在一个文本包含不同颜色 不同字号的文本 官方 lt rich text nodes 61 34 cont
  • uni-app实现全局组件注册

    uni app 全局注册组件三种方式 1 传统vue组件需要创建 引用 组成三个步骤 2 在page json中对应page设置 34 globalStyle 34 34 autoscan 34 true 和pages同级 3 HBuild
  • Vue--混入(Mixin)

    Vue 混入 Mixin 当不同组件有相同功能时 xff0c 不必重复定义属性和方法 xff0c 可使用vue中的混入 Mixin 来分发 Vue 组件中的可复用功能 一个 mixin 对象可以包含任意组件选项 xff0c 即data me
  • uni-app--tabs切换swiper

    父组件 span class token operator lt span template span class token operator gt span span class token operator lt span view
  • 关于移动端 html5诸多事件

    1 点击事件 64 click与 64 tap的区别 xff1a 64 click 在web手机端上点击 xff0c 有300ms延迟再被触发 64 tap具有事件穿透特点 而 64 click没有 事件冒泡 xff1a 当父元素有点击事件
  • vuex状态管理

    vue 1 下载vuex依赖 2 创建store目录store js xff0c 然后在js中引入 span class token keyword import span span class token module Vue span
  • Jmeter性能测试(8)--断言

    jmeter xff08 8 xff09 断言 jmeter中有个元件叫做断言 xff08 Assertion xff09 xff0c 它的作用和loadrunner中的检查点类似 xff1b 用于检查测试中得到的响应数据等是否符合预期 x
  • Class类

    class类的基本写法 es6引入了class类的概念 xff0c 可通过class关键字来定义类每个类都会有一个构造函数 xff0c 即constructor 方法 xff0c 用于创建和初始化class对象要注意 xff0c 如果一个类
  • install与directive

    install Vue option Vue js提供install方法 xff0c 可用于开发新插件以及全局注册组件等 span class token keyword export span span class token keywo
  • STC15W4K56S4学习笔记——LCD12864滚动显示

    STC15W4K56S4学习笔记 LCD12864滚动显示 最近在准备学校的单片机校赛 xff0c 重新回顾了一遍51单片机 xff0c 上手了STC15W4K56S4试验箱 xff0c 写一些笔记来记录一下 xff0c 水平有限 xff0
  • STM32用XCOM调试助手打印不出数据

    STM32用XCOM调试助手打印不出数据 被困扰了一段时间的串口终于解决了 xff0c 用STM332F103ZET6写串口 xff0c 但是不懂为什么打开串口调试助手就是打印不出数据 首先检查了代码有没有错 xff0c 因为是按照网上的代
  • OpenCV-python学习笔记(十二)——图像轮廓

    十二 图像轮廓 图像轮廓是指将边缘连接起来形成的一个整体 xff0c 用于后续的计算 因为边缘检测得到的边缘是不连续的 查找图像内的轮廓信息 xff1a cv2 findContours 绘制轮廓 xff1a cv2 drawContour
  • k210——maix bit串口通信

    k210 串口通信 k210 一共有3个 uart xff0c 每个 uart 可以进行自由的引脚映射 一 API函数介绍 1 1 register pin function force 61 True K210 可以通过映射来改变引脚功能
  • k210——Maixhub 云端模型训练

    k210 Maixhub 云端模型训练 一 前言 k210的模型训练可以在Maixhub 上进行 xff0c 只需要准备好需要训练的数据集 xff0c 不需要搭建训练环境和代码 xff0c 上传训练数据即可快速训练出模型 Maixhub 有
  • 自动控制原理MATLAB常用函数总结

    自动控制原理MATLAB常用函数总结 一 控制系统的数学模型 1 传递函数数学模型 G xff08 s xff09 61
  • MCS-51汇编软件实验

    MCS 51汇编软件实验 实验一 内存块移动 将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去 移动3000H起始的256个字节到4000H起始的256个字节 代码示例 xff1a ORG 0000H MOV DPTR 300
  • Jmeter性能测试(9)--逻辑控制器

    jmeter中逻辑控制器 xff08 Logic Controllers xff09 的作用域只对其子节点的sampler有效 xff0c 作用是控制采样器的执行顺序 jmeter提供了17种逻辑控制器 xff0c 它们各个功能都不尽相同