17种JMeter 逻辑控制器

前言

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

控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;

对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。

一、JMeter逻辑控制器——共17种

图片

图片

二、JMeter逻辑控制器介绍

01 如果(If)控制器

作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断(如下图红框内的文字)。

参数:Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写) Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式。

图片

Jmeter的If控制器支持__jexl3或者是groovy语言,在Jmeter的if控制器中填入表达式时,不能直接编写表达式语言,而是要借用Jmeter的函数生成器,生成指定语言的表达式。

示例一:

使用变量表达式的方式进行判断:

图片

示例二:

选中 Interpret Condition as Variable Expression?,使用变量的方式判断:

图片

图片

02 事务控制器(transaction controller)

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

事务响应时间是我们衡量业务性能的主要指标,事务控制器可以把其节点下的取样器执行消耗时间累加在一起,便于我们统计。同时我们对每一个取样器的执行时间进行统计。

如果事务控制器下的取样器有多个,那么只有每一个取样器都运行成功了,整个事务控制器定义的事务才算成功,这是充分必要条件。

图片

03 循环控制器

作用: 指定其子节点运行的次数,可以使用具体的数值,也可是设置为变量(截图描述更详细)。

如果在线程组中也设置了执行次数,那么循环控制器下的元件的执行次数是:

循环控制器下的元件的执行次数 = 线程组执行次数 * 循环控制器执行次数

图片

04 While控制器

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

图片

05 ForEach 控制器(遍历循环控制器)

作用: ForEach 控制器一般和用户自定义变量一起使用,其在用户自定义变量中读取一系列相关的变量。该控制器下的取样器或控制器都会被执行一次或多次,每次读取不同的变量值。

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

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

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

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

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

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

图片

06 Include控制器

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

图片

07 Runtime控制器

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

图片

08 临界部分控制器

作用:

(1)确保它的子元素(取样器/控制器等)在执行控制器的子程序之前,只执行一个线程作为指定的锁。

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

图片

09 交替控制器

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

图片

10 仅一次控制器

作用:在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,登录场景经常会使用到这个控制器。

注意:将Once Only Controller作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行。

图片

11 录制控制器

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

图片

12 简单控制器

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

这是Jmeter里最简单的一个控制器,它可以让我们组织归整我们的采样器和其它逻辑控制器(即:分组功能),提供一个块的结构和控制,不具有任何的逻辑控制和运行时的功能。

在这里插入图片描述

13 随机控制器

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

图片

14 随机顺序控制器

作用:随机执行其下的所有子结点,与Random Controller不同的是,这个控制器会先将需要随机的内容均执行一遍,但次序不定。

图片

15 吞吐量控制器

作用:控制其下的子节点的执行次数与负载比例分配,别被名字迷惑了,跟吞吐量没任何关系。jmeter自带的翻译这里是错误的,因为它并不能控制吞吐量(吞吐量的概念请访问百度);其实质作用是允许用户控制执行的频率;也有两种方式:百分比执行和总执行。

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

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

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

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

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

图片

16 转换控制器(Switch Controller)

作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:

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

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

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

图片

17 模块控制器(Module Controller)

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

模块控制器,用于跳转到选定的控制器位置并执行对应的控制器

应用场景:业务逻辑的跳转

配制说明

Module to Run: 选择需要跳转到的目标控制器

图片

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LVS+Keepalived高可用负载均衡群集

目录 一.高可用群集相关概述 1.高可用(HA)群集与普通群集的比较 普通群集 高可用群集(HA) 两者比较 2.Keepalived高可用方案 3.Keepalived的体系模块及其作用 4.Keepalived实现原理 二.LVSKeepAlived高可用负载均衡集群的…

github 本地仓库上传及报错处理

一.本地文件上传 这里为上传部分,关于gitbash安装配置,读者可自行搜索,由于已经安装完成,未进行截图保存,这里便不做赘述。 1.登录git账号并创建一个仓库 点击仓库打开后会看到这个仓库的网址链接(这个链…

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[1]-最新版快速实践并部署(检索增强生成RAG大模型)

基于LangChain-Chatchat实现的RAG-本地知识库的问答应用[1]-最新版快速实践并部署(检索增强生成RAG大模型) 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。 1.介绍 一种利用 langchain思想实现的基于本地知…

U盘文件删除如何恢复?4个实用技巧(含图文)

“我的u盘里保存了很多重要的文件,但是不知道为什么部分文件丢失,有什么方法可以帮我快速恢复u盘文件的吗?希望大家帮帮我!” U盘作为我们日常存储和传输数据的重要工具,其数据的安全性和可恢复性尤为重要。当U盘中的文…

redis 一些笔记1

redis 一、redis事务二、管道2.1 事务与管道的区别 三、主从复制3.13.2 权限细节3.3 基本操作命令3.4 常用3.4.1 一主几从3.4.2 薪火相传3.4.3 反客为主 3.5 步骤3.6 缺点 一、redis事务 放在一个队列里,依次执行,并不保证一致性。与mysql事务不同。 命…

光储充一体化充电站:能源革新的绿色引擎

在这个科技日新月异的时代,一场绿色能源的革命正悄然兴起。 光储充一体化充电站,作为这场革命中的璀璨明星,正以其独特的魅力,引领我们走向更加环保、高效的未来。 光储充一体化充电站,顾名思义,将光伏发电…

kotlin之foreach跳出循环

1.创建函数跳出循环。 fun breakTest() {(0..10).forEachIndexed { index, i ->Log.d("test start index$index,i$i")if (index > 7) {return}Log.d("test end index$index,i$i")}}2.通过run语句,将会在if判断语句为true的时候跳出run代…

争取比ChatGPT多知道一点,如何创建和使用embedding?

如何生成embedding? 这个问题很简单,可以直接问ChatGPT。即使是3.5的版本,也可以得到不错的回复: 我这里贴一下它给出的代码,首先是TensorFlow2版本: 接着是pytorch版本: 这两个版本的embeddin…

node配置热更新nodemon

nodemon 安装 全局或者开发依赖都可以 npm install nodemon -g npm install nodemon -D配置 文件配置nodemon.json {"watch": [ // 改动后需要编译成es5的源文件目录和配置等目录以及文件"./src","./conf",".env"],"ext&quo…

【Unity】RPG2D龙城纷争(一)搭建项目、导入框架、前期开发准备

更新日期:2024年6月12日。 项目源码:后续章节发布 免责声明:【RPG2D龙城纷争】使用的图片、音频等所有素材均有可能来自互联网,本专栏所有文章仅做学习和教程目的,不会将任何素材用于任何商业用途。 索引 【系列简介】…

java(JVM)

JVM Java的JVM(Java虚拟机)是运行Java程序的关键部件。它不直接理解或执行Java源代码,而是与Java编译器生成的字节码(Bytecode)进行交互。下面是对Java JVM更详尽的解释: 1.字节码: 当你使用J…

VR虚拟仿真技术模拟还原给水厂内外部结构

在厂区的外围,我们采用VR全景拍摄加3D开发建模的方式,还原了每一处细节,让你仿佛置身于现场,感受那份宁静与庄重。 当你踏入厂区,我们为你精心策划了一条游览路线,从门口到各个重要场景,一一为…

LabVIEW Actor架构特点与适用范围

LabVIEW的Actor架构提供了一种基于消息传递的并行任务管理方式,适合复杂系统的模块化设计。其特点包括高可扩展性、灵活的消息传递和并行处理能力。维护和修改要求较高,适合有一定经验的开发人员。对于中小型项目,可考虑选择更简单的状态机架…

【原创教程】三菱Q与MERLIN II LS激光打标机控制说明

一、控制流程说明 1.硬件连接→2.软件通讯连接→3.编写远程控制PLC程序→4.编写通讯命令。 二、硬件连接1.用RJ45口普通网线将PLC和打标机连接。 三、软件通讯连接 1.打标机侧工控机-更改操作权限-点击菜单栏Setup,在下拉菜单中,点击Level,在下一级菜单点击Supervisor(左下…

C++中的结构体——结构体案例1_2

案例描述 学校正在做毕设项目,每位老师指导5名学生,总共有3名老师,需求如下 设计学生和老师的结构体,其中在老师的结构体中,有老师的姓名和一个存放5名学生的数组作为成员 学生的成员有姓名、考试分数,创…

51.Python-web框架-Django开始第一个应用的增删改查

目录 1.概述 2.创建应用 创建app01 在settings.py里引用app01 3.定义模型 在app01\models.py里创建模型 数据库迁移 4.创建视图 引用头 部门列表视图 部门添加视图 部门编辑视图 部门删除视图 5.创建Template 在app01下创建目录templates 部门列表模板depart.ht…

uniapp条件编辑语法

uniapp中的“条件编译”:#ifdef详细解释_uniapp #ifdef-CSDN博客 uniapp 多端兼容 #ifdef #ifndef #endif 和 平台标识 - 简书

计算机图形学入门10:着色

1.真实的世界 经过前面的变换,再到三角形遍历,深度缓存后,屏幕上每个像素都有了对应的颜色,显示的结果大概是如下左图的样子,我们发现物体每个面的颜色都一样,看起来不够真实。而如下右图显得更加真实&…

2024年中漫谈

不知不觉,2024年已来到了6月,博主不禁感叹时光易逝,岁月的车轮滚滚向前,永不止步,此刻无关贫穷与富裕,伟大与平凡。 于是乎,宇宙(时空)看似毫无终点,一望无垠…

哈默纳科Harmonic谐波减速机应用领域有哪些

在制造设备中,精确控制速度与位置的需求日益凸显,这为谐波减速机的广泛应用提供了广阔的舞台。哈默纳科Harmonic谐波减速机以结构紧凑、高精度、高刚度、高可靠性、便于安装维护等优势,在工业机器人和自动化系统中发挥着举足轻重的作用。 一、…