Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入

1.简介

Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”。

意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。

JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套别的种类的逻辑控制器。

2.逻辑控制器分类

JMeter中的Logic Controller分为两类:
(1)控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;
(2)对测试计划中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。

3.预览逻辑控制器 

首先我们来看一下JMeter的逻辑控制器,路径:线程组(用户)->添加->逻辑控制器(Logic Controller);我们可以清楚地看到JMeter5中共有17个逻辑控制器,如下图所示:

如果上图您看得不是很清楚的话,宏哥总结了一个思维导图,关于JMeter5的逻辑控制器类型,如下图所示: 

 通过以上的了解,我们对逻辑控制器有了一个大致的了解和认识。下面宏哥就给小伙伴或则童鞋们分享讲解一些通常在工作中会用到的逻辑控制器。 

4.常用逻辑控制器详解

  这一小节,宏哥就由上而下地详细地讲解一下常用的逻辑控制器。

4.1Runtime Controller

运行控制器用来控制其子元件的执行时长。市场单位是秒。

 1、我们先来看看这个Runtime Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 运行控制器,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Runtime:默认为1,去掉1则默认为0,此时不执行其节点下的元件。 与线程组中的调度器的持续时间 效果一致。不填 或 0,不会执行样例

4.1.1Runtime控制器控制其下取样器执行2s

1、创建测试计划,设置 Runtime 控制器的运行时间 为 2,线程组设置默认不变,如下图所示:

Runtime 控制器设置

线程组设置

2、配置好以后,运行JMeter,然后查看结果树,如下图所示:

4.1.2使用线程组中的调度器控制样例运行3s

1、创建测试计划,设置 Runtime 控制器的运行时间 为 2,线程组设置运行时间3,如下图所示:

线程组设置

Runtime 控制器设置

2、配置好以后,运行JMeter,然后查看结果树,如下图所示:

线程组设置3,Runtime控制器设置2,但是运行时间是2s。所以从上边的运行时间得出结论:如果线程组中设置了持续时间,Runtime 控制器也设置了 运行时间,那么会优先于线程组中的设置。

4.2Simple Controller

Simple Controller用来指定了一个执行单元,它不改变元件的执行顺序。在它下边还可以嵌套其他控制器。简单控制器可以编辑只有名称和注释。就像他的名字一样,简单,可以理解为一个文件夹,就是分组用的,没有其他特殊功能,但相比不添加简单控制器,区别在于简单控制器可以被模块控制器所引用。其作用就是分组,比如QQ好友列表,可分为家人、同学、等。一般是请求较多,需要分组时采用。

 1、我们先来看看这个Simple Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 简单控制器,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空。

4.2.1简单实例

1、创建测试计划,线程组设置循环10,如下图所示:

2、配置好以后,运行JMeter,然后查看结果树,如下图所示:

4.3Throughput Controller

用来控制其下元件的执行次数,并无控制吞吐量的功能,想要控制吞吐量可以使用Constant Throughput Timer,后边会讲解到。吞吐量控制器有两种模式:Total Executions:设置运行次数与Percent Executions:设置运行比例(1~100之间)。

1、我们先来看看这个Throughput Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 吞吐量控制器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Total Executions:执行百分比(1-100);

percent Executions:执行数量;

Throughput:根据上边选择的方式填写,百分比为0~100;

Per User:线程数,当选Total Executions时,是线程数;当选percent Executions时,是线程数*循环次数。

4.3.1不勾选Per User

1、线程组中设置 线程数量 2,循环次数 10,吞吐量控制器 设置 Total Executions,吞吐量设置为 2,其下添加一个取样器,如下图所示:

2、配置好以后,运行JMeter,然后查看结果树(执行了2次),如下图所示:

3、现在将 吞吐量控制器 设置为百分比的控制方式,吞吐量设置为:50%,如下图所示:

4、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了10次,计算方式:10=吞吐量50% * 循环次数10 * 线程数 2),如下图所示:

4.3.2勾选Per User

1、线程组中设置 线程数量 2,循环次数 10,吞吐量控制器 设置 Total Executions,吞吐量设置为 2,其下添加一个取样器,勾选Per User,如下图所示:

线程组设置

吞吐量控制器

2、配置好以后,点击“保存”,运行JMeter,然后查看结果树(总共执行了4次,其中吞吐量设置为2,执行2次,线程设置为2,执行2次,总共4次),函数 __threadNum 只是简单地返回当前线程的编号,如下图所示:

3、现在将 吞吐量控制器 设置为百分比的控制方式,吞吐量设置为:50,如下图所示:

4、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了10次,计算方式:10=吞吐量50% * 循环次数10 * 线程数 2),如下图所示:

综上所述:

勾选Per User:

1.线程数*循环次数>=线程数*吞吐量时,Total Executions模式的执行次数=线程数*吞吐量。

2.线程数*循环次数<线程数*吞吐量时,Total Executions模式的执行次数=当线程数*循环次数。

不勾选Per User:

1.线程数*循环次数<=吞吐量时,Total Executions模式的执行次数=线程数*循环次数。

2.线程数*循环次数>吞吐量时,Total Executions模式的执行次数=吞吐量。

l Percent Executions:设置运行比例(1~100之间),单位为%

不管Per User是否勾选,按Percent Executions模式的执行次数都不受Per User影响,Percent Executions模式的执行次数=线程数*循环次数*吞吐量%。(循环次数=线程组循环次数*循环控制器循环次数)

l Per User:勾选该项的话则按虚拟用户数(线程数)来计算执行次数,不勾选则按所有虚拟用户数来计算执行次数

测试计划
序号线程数循环次数模式ThroughputPer User执行次数
1210Percent50Y10
2210Percent50N10
3210Total7Y14
4210Total7N7
522Total7Y4
622Total7N4

下面说明一下这6个场景:
(1)序号1和2场景,Per User 对总执行次数没有影响。
(2)序号3场景,Per User勾选,每个虚拟用户(线程)执行7次,共执行14次。
(3)序号4场景,Per User不勾选,则所有虚拟用户执行7次。
(4)序号5场景,Per User勾选,每个虚拟用户(线程)执行7次,共执行14次,由于Thread Group计划循环次数是4(2线程*2循环)次,所以最多只能执行4次。
(5)序号6场景,Per User不勾选,所有虚拟用户执行7次,由于Thread Group计划循环次数是4(2线程*2循环)次,所以最多只能执行4次。

4.4Module Controller

模块控制器可以快速的切换脚本,不用来回的新建,方便脚本调试。 

可以理解为引用、调用的意思,执行内容为Module To Run种所选的内容,引用范围为当前测试计划内的测试片段、逻辑控制器<模块控制器除外>
被引用的逻辑控制器、测试片段可以为禁用状态,被引用后仍然会被执行。
可以将模块控制器与包括控制器一起学习比较,模块控制器是从内部文件中引用,引用上相对比较灵活,可以只引用部分测试片段或模块内容,包括控制器是从外部文件引用,只能引用整个测试片段的内容。
注意:被应用的模块位置不可随意变更,变更后会执行时出现提示引用失败
找到目标元素:快速查找与跳转的作用,点击后会立即跳转到所选的逻辑控制器的内容详情

1、我们先来看看这个Module Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 >  模块控制器,如下图所示: 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Forever:勾选上这一项表示一直循环下去。

4.4.1实例

1、创建测试计划,添加两个测试片段,并且在每个测试片段下添加一个取样器,然后,添加线程组,再添加模块控制器,最后添加查看结果树,如下图所示:

2、配置模块控制器,选择第一个测试片段,如下图所示:

3、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第1个测试片段的取样器),如下图所示:

4、配置模块控制器,选择第二个测试片段,如下图所示: 

5、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第2个测试片段的取样器),如下图所示:

4.5Switch Controller

Switch Controller:开关控制器,通过其下样例顺序数值或名称 控制执行某一个样例。

 1、我们先来看看这个if Controller长得是啥样子,路径:线程组 > 添加 > 逻辑控制器 > 如果 (if) 控制器,如下图所示:

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Switch Value:指定请求的索引或者名称,索引从0开始,如果没有赋值,或者索引超过请求个数的话就执行第0个请求。可以是数字,也可以是字符,为字符时匹配取样器名称,如果匹配不上就会默认并找取样器名称为default的取样器,如果没有则不运行。

4.5.1数值

数值:表示将执行其下第 数值+1个取样器,例如:填1,将执行第2个取样器;填0或者不填,将执行第1个取样器;数值超出其下取样器数目时,执行第1个取样器。

1、创建一个测试计划,设置线程组和Switch控制器,如下图所示:

线程组

Switch控制器

2、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第3<数值+1>个取样器),如下图所示:

3、修改Switch控制器的数值为0或者不填,如下图所示:

4、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了第1<数值为0或者不填,执行第1个取样器>个取样器),如下图所示:

4.5.2字符

1、创建一个测试计划,设置线程组和Switch控制器(直接使用取样器名字),如下图所示:

线程组

Switch控制器

2、配置好以后,点击“保存”运行JMeter,然后查看结果树(执行了使用名字的取样器),如下图所示:

5.小结

好了,今天关于逻辑控制器的上篇就讲解到这里,这一篇主要介绍了 Runtime Controller 、 Simple Controller 、Throughput ControllerModule Controller 和  Switch Controller

  每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

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

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

相关文章

Fully Animated Cats

这个包可以用于任何类型的游戏,作为主要角色,敌人,猎物,或其他任何东西。该软件包提供90个高质量动画、10种不同风格、实时毛发、6个LOD 控制器/动画师不包括在内。此包仅适用于模型和动画(以及纹理和材质)。 这是你可以用这个资产实现的视频(这个移动是在另一个游戏引擎…

【管理咨询宝藏83】某大型集团管控诊断报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏83】某大型集团管控诊断报告 【格式】PDF版本 【关键词】管控诊断、人力资源、组织架构 【核心观点】 - 集团跨越式发展的组织瓶颈&#xff0c…

星域社区原版APP源码/社区交友App源码/动态圈子群聊php源码

简介 初始版本是由RuleAPP规则之树开发的&#xff0c;而星域社区则是在此基础上进行了二次开发和美化。作者花了近一年的时间来打磨它&#xff0c;现在即将推出Pro版。如果你只想免费使用的话&#xff0c;可以使用原始的RuleAPP版本。但是&#xff0c;如果你想要获得更好的美观…

如何进行制造设备数据汇集,发挥数据的价值?

数字化转型正深刻推动制造企业实现远程监控、提高生产效率、降低生产成本、优化产品质量及明晰精细化方向。并且工业互联网的发展离不开工业数据的应用&#xff0c;而制造设备数据汇集正是应用的基础。但制造设备数据汇集存在以下难点及痛点&#xff1a; 1、安全把控难 关键的…

STM32之串口中断接收丢失数据

五六年没搞STM32了&#xff0c;这个项目一切都挺顺利&#xff0c;万万没想到被串口接收中断恶心到了。遇到的问题很奇怪 HAL_UART_Receive_IT(&huart1, &rx_buffer[rx_index], LCD_UART_LEN); 这个代码中 LCD_UART_LEN1的时候&#xff0c;接收过来的数据&#xff0c;数…

分享五个开发印度客户的方法

很多人不喜欢做印度市场&#xff0c;最近听到朋友说他做的业绩&#xff0c;印度的销售额是其他国家的总和&#xff0c;也有人查到他的行业里&#xff0c;产品近期的出口量印度占据其他国家总和的两倍&#xff0c;可见有些行业&#xff0c;或者说有些产品&#xff0c;印度市场需…

可疑电子邮件、可疑超链接或可疑文件在线检测工具推荐

对于有安全意识的人来说&#xff0c;收到陌生邮件里含有外链接、doc文件&#xff0c;担心自己中招&#xff0c;能不能用在线的办法提前预处理一下呢&#xff1f;答案总比办法多。 关键字&#xff1a;可疑电子邮件、可疑超链接或可疑文件在线检测工具推荐 phish.ly - 检查可疑…

临滴RK3588桌面版系统,命令行修改静态固定IP

修改文件位置&#xff1a; 打开并修改文件&#xff1a;vi Wired\ connection\ 2.nmconnection 修改IP: 修改相关信息后保存重启即可

Rstudio使用中最容易忽视的问题

从推出linux版本的Rstudio以来已经一年&#xff0c;当初推这个账号&#xff0c;本身是为了做代码复现&#xff0c;为了统一解决环境问题&#xff0c;所以我们配备配置R环境的相关服务&#xff0c;这里小编简单整理一下在使用中常遇到的问题 1、加载很慢&#xff0c;动不动刷不…

C语言学习/复习27----sizeof/strlen/数组/指针

一、数组笔试题目解析 1.一维数组 1.sizeof()操作符与int数组 注意事项1&#xff1a;sizeof()依据类型推断大小 注意事项2&#xff1a;注意区分是( )内是地址还是普通元素类型 注意事项3&#xff1a;&#xff08;&#xff09;内是单独的数组名时计算整个数组的大小&#xff0c;…

[Android]引导页

使用Kotlin Jetpack Compose创建一个左右滑动的引导页, 效果如图. 1.添加依赖项 androidx.compose.ui最新版本查询:https://maven.google.com/web/index.html com.google.accompanist:accompanist-pager最新版本查询:https://central.sonatype.com/ 确保在 build.gradle (M…

Android studio添加aidl文件时,添加按钮为黑色不可点击添加解决办法

在android studio添加aidl文件时出现下面这个情况只需要在模块的build.gradle.kts文件中的android中添加以下代码即可添加aidl android {// 设置 AIDL 支持buildFeatures {aidl true} }