(转)JMeter学习逻辑控制器
JMeter中的Logic Controller用于为Test Plan中的节点添加逻辑控制器。
JMeter中的Logic Controller分为两类:一类用来控制Test Plan执行过程中节点的逻辑执行顺序,如:Loop Controller、If Controller等;另一类则与节点逻辑执行顺序无关,用于对Test Plan中的脚本进行分组、方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller、Transaction Controller。
一、控制Test Plan中的节点执行顺序的Logic Controller
1、ForEach Controller:类似于编程语言中的for each语句。如下图:

通常情况下,ForEach Controller常与Regular Expression Extractor配合使用。
2、If Controller:类似于编程语言中的if语句,根据给定表达式的值决定是否执行该节点下的子节点。如下图:

注意:条件判断语句如果是字符串一点要在参数前加引号,如:a."${foreach_city}"=="beijing" b."${foreach_city}"!="beijing"
如果选中“Evaluate for all Children”选项,则该Controller在每个子节点执行时执行一次,否则,该Controller仅在入口执行一次。
3、Interleave Controller:在每次迭代时,顺序选取该节点下的一个子节点执行。如下图:

如果选中“Ignore sub-controller blocks”选项,则该Controller将其下的子Controller当成单一元素处理,并仅允许每个子Controller一次发出一个请求。
在该示例中,设置迭代次数为4次,节点的执行顺序是:Req1-HTTP Request –Req2—HTTP Request—Req3—HTTP Request.
4、Loop Controller:简单地为其下的子节点运行指定次数。如下图:

5、Once Only Controller:是为了让Test Plan中的某些内容在整个Test Plan的执行期间对每个线程仅执行一次(例如,每个线程仅需要执行一次“登录”操作)。如:将Once Only Controller作为Loop Controller的子节点,Once Only Controller在每次循环的第一次迭代时均会被执行。如下图:

6、Random Controller:每次执行时,从其子节点中随机选取一个来执行。如下图:

7、Random Order Controller:每次执行时,按照随机产生的顺序执行其下的所有子节点。注意,该Controller与Random Controller的不同之处在于,Random Controller只选择执行其所有子节点中的一个,而Random Order Controller则按照随机顺序全部执行该Controller下的所有子节点。

8、Switch Controller:类似程序语言中的switch函数,该Controller根据给定的值n(可以使用参数)选择执行其下的第n+1个子节点。如下图:


需要注意的是,Switch Controller只接受整数值,并且给定的值n是以0为基础的,因此当给定的值“2”时,意味着该Controller下的第3个子节点会被执行。同时,Switch Controller接受参数作为其值。
9、While Controller:是另一个用于控制循环的Controller。可以为该Controller设置一个Condition.Condition的取值可以为以下三者之一:
空:如果Condition取值为空,则该Condition迭代执行Controller下的所有子节点,直到最后一个子节点返回失败为止。需要注意的是,如果不是最后一个子节点失败,而是该Controller中的其他子节点失败,该Controller不会停止,而会继续循环执行过程。
LAST:如果Condition取值为字符串LAST,则该Controller迭代执行Controller下的所有子节点,直到最后一个子节点返回失败为止(与Controller为空时的行为相同)。同时,如果该Controller的上一个节点失败,则Test Plan在执行时不会进入该Controlller。
表达式:除了为空和LAST外,Controller还可以取一个表达式。当Controller取值为表达式时,如果表达式的取值是字符串false,While Controller就退出循环。以下列出了几个可用的表达式:
${VAR}:当参数VAR的值被设置成false时退出循环。
${__javascript(“${VAR}”==”dennis”)}:当参数VAR的值不为dennis时退出循环。
${_P(myproperty)}:当属性myproperty的取值为false时退出循环。
二、其它Logic Controller
除了以上的9种Logic Controller外,JMeter还支持其他7种Logic Controller.
1、Include Controller:用于在Test Plan中包含一个外部的jmx文件。
在Test Plan运行时,被包含的jmx文件中测试计划中不能有线程组,只允许有一个Simple Controller和该Simple Controller下的子节点(可添加任何采样器,控制器),不允许有Cookie Manager、User Defined Variable等。
如果用户需要使用Cookie Manager或者 用户自定义变量,都应该在顶层的测试计划中设置,不应该包含在外部文件中,否则不会它们不会起作用。
注意:被包含文件中的Simple Controller及其子节点将会替换Test Plan中的Include Controller.
外部jmx文件结构图:

主测试计划图:

2、Simple Controller:如同该Controller的名称,是JMeter中最简单的一个Controller。该Controller仅用于对Test Plan中的元件进行分组,不具有任何的逻辑控制或运行时的功能。

3、Module Controller:为Test Plan提供了在运行时动态执行给定的Test Plan片段的能力。如下图:

从图中可以看出,无论是放在本Thread Group、其他的Thread Group,或是WorkBench下的Test Plan片段,都可以在Module Controller中被调用。
4、Runtime Controller:用于指定其子节点的运行时长。该Controller中指定的时间以秒为单位,仅对该Controller的子节点有效。

5、Throughput Controller:用于控制其下的子节点的执行次数与负载比例分配的。
Throughput Controller允许用户使用两种模式控制其下子节点的执行顺序:比例模式和总数模式。总数模式指定该Controller下所有子节点的准确迭代次数,而比例模式允许负载在Controller下的子节点以某种比例进行分配。在比例模式下,设定的Throughput值为一个0-100之间的整数,表示该Controller迭代次数占总迭代次数的百分比。
可能你已经意识到,如果要在一个Test Plan中体现用户场景,Throughput Controller应该是最合适的选择。
图A给出了总数模式下的Throughput Controller,在这种模式下,每个线程最多运行Java Request10次(具体的运行次数还取决于线程组中线程数和迭代次数的设置,如果设定的Total Execution的次数大于线程组中设置的迭代次数,每个线程最多运行线程组中设定的迭代次数)。

图B给出了比例模式下的Throughput Controller,从图中可以看出,该Test Plan包含了两个Throughput Controller,第一个设定的Percentage为70,也就是70%,第二个设定的Percentage为30,也就是30%。线程组的线程数设置为10,迭代次数也设置为10.在这种模式下,req1被运行70次,req2被运行30次。如下图:



6、Transaction Controller:用于将Test Plan中的特定部分组织成一个Transaction,JMeter中Transaction的作用在于,可以针对Transaction统计其响应时间、吞吐量等。
在有些情况下,一个用户操作可能需要多个Sampler来模拟,此时,使用Transaction Controller,可以更准确地得到该用户操作的性能指标,如响应时间等。

7、Recording Controller:唯一的用途是用于存放JMeter录制得到的脚本。

原文:https://www.cnblogs.com/yangxia-test/p/4134662.html
(转)JMeter学习逻辑控制器的更多相关文章
- JMeter学习笔记--详解JMeter逻辑控制器
JMeter使用逻辑控制器来决定采样器的处理顺序 简单控制器(Simple Controller):存储设备(将某些采样器归组) 循环控制器(Loop Controller:设置循环次数 仅一次控制器 ...
- Jmeter学习笔记(十四)——逻辑控制器
一.逻辑控制器简单介绍 Jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序.放在逻辑控制器下面的所有的采样器都会当做一个 ...
- 【转载】JMeter学习(一)工具简单介绍
JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静 ...
- JMeter学习-016-思路篇之-山重水复柳暗花明
首先,此文非技术类博文,为思路类的博文,敬请参阅,欢迎共同探讨! 今天在编写 JMeter 接口监控脚本时,遇到了一个问题,在解决问题的时候,思路出现了偏差,导致了自己在解决问题时,绕了弯,浪费了些时 ...
- JMeter学习-013-JMeter 逻辑控制器之-如果(If)控制器
前文简述了 JMeter 如何通过 HTTP Cookie管理器,实现了在不执行登录操作的情况下,通过 Cookie 实现登录态的操作,具体请参阅:JMeter学习-012-JMeter 配置元件之- ...
- JMeter学习工具简单介绍
JMeter学习工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态 ...
- JMeter学习1
Jmeter的组织方式相对比较扁平,直接是TestPlan(相当于Project),TestPlan下创建的ThreadsGroup(相当于TestCase), Jmeter一个TestPlan也是一 ...
- JMeter学习-037-JMeter调试工具之四-BeanShell+jmeter.log
前面三篇文章分别讲述了 HTTP Mirror Server . Debug PostProcessor 和 Debug Samper 的脚本调试实例.此文主要讲述第四种调试方法,通过 BeanShe ...
- JMeter学习-036-JMeter调试工具之三---Debug Sampler
前面两篇文章分别讲述了 HTTP Mirror Server 和 Debug PostProcessor 的脚本调试实例.此文主要讲述第三种调试工具:DebugSampler,其主要是查看JMeter ...
随机推荐
- git http服务免登录实现(免去每次请求用户名密码输入,Visual Studio可用)
最近用了Bonobo搭起了Git服务,弄了个批处理文件来避免每次都要输入用户名密码. 此脚本分为三个步骤:1.添加用户变量HOME:2.添加用户_netrc文件:3.添加windows普通凭据(因为V ...
- [转]eShopOnContainers 看微服务 ①:总体概览
本文转自:https://www.cnblogs.com/tianyamoon/p/10081177.html 一.简介 eShopOnContainers是一个简化版的基于.NET Core和Doc ...
- Web前端:博客美化:一、模板美化
1.选用模板simplememory 2.写css放在 这些会覆盖掉原来的css样式 我是在网上找的css代码二次加工的 : ) /*1.针对simplememory的修改*/ #google_ad_ ...
- 如何获得MIUI10系统的root超级权限
MIUI10系统有没有办法拥有root超级权限?做开发的人都清楚,android手机有root超级权限,如果手机拥有root相关权限,能够实现更强的功能,举个栗子做开发的人企业的营销部门,使用某些营销 ...
- [Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件
1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...
- Prometheus Operator 架构 - 每天5分钟玩转 Docker 容器技术(178)
本节讨论 Prometheus Operator 的架构.因为 Prometheus Operator 是基于 Prometheus 的,我们需要先了解一下 Prometheus. Prometheu ...
- ASP.NET Zero--前端应用程序
前端应用程序 ASP.NET Zero包含可以作为您的公共网站或应用程序着陆页的起点的前端页面.首次运行项目时,您会看到主页如下所示: 这里有两页:主页和关于.这些页面的内容只是占位符和演示目的.您可 ...
- A Deep Learning-Based System for Vulnerability Detection
本篇文献作者提出了一种基于深度学习来检测软件漏洞的方案. 摘要:作者开始基于深度学习的漏洞检测研究,是为了减轻专家手工定义特性的繁琐任务,需要制定一些指导性原则来适用于深度学习去进行漏洞探 ...
- LeetCode算法题-Set Mismatch(Java实现)
这是悦乐书的第279次更新,第295篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第147题(顺位题号是645).集合S最初包含从1到n的数字. 但不幸的是,由于数据错误 ...
- DP思想笔记
一.思想 DP也是把复杂的问题分解为许多子问题,与分治法不同的是,分治法的各个子问题互相之间没有联系,而动态规划却有.前一个子问题的结果与下一步的子问题的结果是什么有关系.这就决定了DP算法肯定有一个 ...