jmeter 逻辑控制器
简单的控制器
简单的逻辑控制器可以让你组织你的采样器和其他 逻辑控制器。 不像其他逻辑控制器,该控制器不提供除此之外的功能 存储设备。
参数
注意,文件的记者 被配置为将结果存储在一个文件名为“ simple-test.dat “在当前目录。
图6简单控制器的例子
循环控制器
如果你添加生成或逻辑控制器回路控制器,JMeter的意志 循环遍历这些设置一定数量的时候,除了循环值 指定的线程组。 例如,如果你添加一个HTTP请求 与循环计数两个回路控制器,配置线程组循环 数到三,JMeter将发送 2 * 3 = 6 HTTP请求。
参数
特殊情况: 循环控制器中嵌入 线程组 元素表现略有不同。 除非将永远,停止测试后 给定数量的迭代已经完成。
下载 这个示例(请参见图4)。 在本例中,我们创建了一个测试计划,发送一个特殊的HTTP请求 只有一次和5次发送另一个HTTP请求。
图4 -环控制器的例子
我们配置一个线程的线程组和一个循环数的价值 一个。 而不是让线程组控制循环,我们使用一个循环 控制器。 你可以看到,我们添加了一个HTTP请求线程组 另一个HTTP请求一个循环控制器。 我们配置了循环控制器 循环计数5的价值。
JMeter将按照以下顺序发送请求:主页、新闻页面, 新闻页面、新闻页面、新闻页面,和新闻页面。
注意,文件的记者 被配置为将结果存储在一个文件名为“ loop-test.dat “在当前目录。
曾经只有控制器
曾经只有逻辑控制器告诉JMeter处理控制器(s)里面只有一次每个线程,并经过任何请求 在进一步的迭代测试计划。
曾经只有控制器将执行总是在第一次迭代的循环父控制器。 因此,如果一旦只有控制器放置在一个循环控制器指定循环5次,那么一次只在第一个迭代通过控制器将只执行循环控制器 (即每5次)。
注意这意味着一次只控制器仍然会像此前预期,如果把在一个线程组(每个测试每个线程只运行一次), 但是现在用户更灵活地使用一只控制器。
对于测试,需要一个登录,请考虑将登录请求的控制器,因为每个线程只需要 建立一个会话登录一次。
在本例中,我们创建了一个测试计划,有两个线程发送HTTP请求。 每个线程发送一个请求到主页,紧随其后的是三个请求到错误页面。 虽然我们配置了线程组三次迭代,每个JMeter线程 发送一个请求到主页,因为这请求住在一个曾经只有控制器。
图5。 曾经只有控制器的例子
每个JMeter线程将按照以下顺序发送请求:主页,错误页面, 错误页面,页面错误。
注意,文件记者被配置为将结果存储在一个文件名为“ loop-test.dat “在当前目录。
交错的控制器
如果你添加生成或逻辑控制器一个交错控制器,JMeter将每个之间的交替 为每个循环迭代其他控制器。
下载 这个示例(请参见图1)。在这个例子中, 我们配置线程组有两个线程,一个循环计数的五个,总共十个 每个线程的请求。 见下表顺序JMeter发送HTTP请求。
图1 -交错控制器示例1
循环迭代 | 每个JMeter线程发送HTTP请求 |
---|---|
1 | 新闻页面 |
1 | 日志页面 |
2 | 常见问题页面 |
2 | 日志页面 |
3 | 阿甘的页面 |
3 | 日志页面 |
4 | 因为没有更多请求的控制器, JMeter开始发送第一个HTTP请求,这是新闻页面。 |
4 | 日志页面 |
5 | 常见问题页面 |
5 | 日志页面 |
下载 另一个例子(参见图2),在这 例子中,我们配置了线程组 单个线程和8的循环计数。 注意,测试计划有一个外交错控制器 两个交错控制器内。
图2 -交错控制器例2
外交错控制器之间的交替 两个内在的品质。 然后,每个内部交错控制器之间交替的每个HTTP请求。 每一个JMeter 线程将按照以下顺序发送请求:主页,交错,错误页面,交错,CVS页面,交错,FAQ页,交错。
注意,文件记者被配置为将结果存储在一个文件名为“ interleave-test2.dat “在当前目录。
图3 -交错控制器示例3
如果两个交错控制器主要交错控制器下而不是简单的控制器,然后顺序是:主页,CVS页面,交错,错误页面,FAQ页面,交错。
然而,如果“ 忽略副控制块 “检查主要交错控制器,然后顺序是:主页,交错,错误页面,交错,CVS页面,交错,FAQ页,交错。
随机的控制器
随机逻辑控制器行为类似于交错控制器,除了 而不是为了通过其sub-controllers和取样器,它选择 随机在每个通过。
参数
随机顺序控制器
随机顺序控制器就像一个简单的控制器,它将执行每个孩子 元素最多一次,但节点的执行顺序是随机的。
参数
流量控制器
这个控制器是严重的命名,因为它不能控制的吞吐量。 请参考 常数吞吐量计时器 为一个元素,可以用来调整吞吐量。
流量控制器允许用户控制执行的频率。 总共有两种模式-百分比执行和执行。
- 百分比执行
- 使控制器执行一定比例的迭代测试计划。
- 总执行
- 使控制器停止执行一定数量的处决后发生。
像一只控制器,这个 当父母循环控制器启动时设置重置。
参数
运行时控制器
运行时控制器控制它的孩子被允许运行多久。
参数
if控制器
如果控制器允许用户控制是否它下面的测试元素(孩子)运行。
默认情况下,这个条件是评估初始入口只有一次,但你可以选择把它用来评估每一个可运行的元素包含在控制器。
脚本可以处理作为一个变量表达式,而不需要Javascript。 它总是可以使用Javascript函数和变量的条件下,只要他们评估” 真正的”或“ 假 ”; 现在可以不使用Javascript的开销。 例如,以前可以使用条件: $ { __jexl($ { VAR } = = 23)} 这将被评估 真正的 /假 ,结果将被传递给Javascript 它将返回 真正的 / 假 。 如果变量表达式选项被选中时,那么表达式进行求值 并与“ 真正的 ”,而无需使用Javascript。 另外,变量表达式可以返回任何值,而 Javascript条件必须返回” 真正的 “/” 假 ”或者记录一个错误。
"${myVar}" == "\${myVar}"
或者使用:
"${myVar}" != "\${myVar}"
为了测试定义一个变量,而不是null。
- $ {数} < 10
- " $ { VAR }”= =“abcd”
- $ { JMeterThread.last_sample_ok } (检查最后的样品是否成功)
如果有一个错误解释的代码,假定为条件 假 消息,登录 jmeter.log 。
- $ { __jexl($ {数} < 10)}
- $ {结果}
而控制器
而控制器运行它的孩子,直到条件” 假 ”。
可能的条件值:
- 空白——最后一个示例循环失败时退出循环
- 去年 ——最后一个示例循环失败时退出循环。 如果之前的最后一个示例只是循环失败,不进入循环。
- 否则——退出时(或不输入)循环条件等于字符串“ 假 ”
例如:
- $ { VAR } ——在那里 VAR 是由其他测试元素设置为假
- $ { __javaScript($ { C } = = 10)}
- $ { __javaScript(" $ { VAR2 } " = = " abcd ")}
- $ { _P(财产)} ——属性设置为“ 假 “别的地方
开关控制器
开关控制器就像 交错的控制器 在它运行的一个下属元素在每一次迭代,而是比 按顺序运行,控制器运行开关定义的元素的值。
如果开关值的范围,它将运行第0个元素, 因此作为默认的数值例子。 它也运行如果第0个元素值是空字符串。
如果该值为非数字(非空),然后开关控制器查找 具有相同名称的元素(很重要)。 如果没有一个名字匹配,那么该元素命名为“ 默认的”(不重要)被选中。 如果没有违约,然后没有元素被选中时,控制器将不运行任何东西。
ForEach控制器
一个ForEach循环控制器通过一组相关变量的值。 当你将取样器(或控制器)一个ForEach控制器,每个样本(或控制器) 执行一次或多次,在每次循环变量的新值。 输入应包括的几个变量,每个扩展下划线和一个数字。 每一个这样的变量必须有一个值。 例如当输入变量的名字 inputVar 应该定义以下变量:
- inputVar_1 =温迪
- 查尔斯inputVar_2 =
- inputVar_3 =彼得
- inputVar_4 =约翰
注:“ _ “现在分隔符是可选的。
当返回的变量是作为“ returnVar ”,收集取样器和控制器根据ForEach控制器将被执行 4 连续两次, 返回变量有各自的价值观之上,然后可以用于采样。
它尤其适合与正则表达式后处理器运行。 这可以“创造”必要的输入变量的结果数据之前的请求。 通过省略“ _ “分隔符,ForEach控制器可用于循环组使用 输入变量 refName_g ,也可以遍历所有的团体比赛 通过使用一个输入变量的形式 refName_ $ { C } _g ,在那里 C 是一个计数器变量。
图7 - ForEach控制器的例子
我们配置一个线程的线程组和一个循环数的价值 一个。 你可以看到,我们添加了一个HTTP请求线程组 另一个HTTP请求ForEach控制器。
第一次HTTP请求后,添加一个正则表达式提取器,提取所有的html链接 返回的页面,并使他们的 inputVar 变量
在ForEach循环中,HTTP取样器添加哪些请求所有的链接都从第一个返回的HTML页面。
这是 另一个例子 你可以下载。 这有两个正则表达式和ForEach控制器。 第一个匹配,但第二个不匹配, 所以没有样品是由第二个ForEach控制器
图8 - ForEach控制器例2
线程组有一个单线程和一个循环计数两种。
示例1使用JavaTest取样器返回的字符串” a b c d ”。
正则表达式提取器使用表达式 (\ w)\ s 匹配一个字母后跟一个空间, 并返回这封信(不是空间)。 任何与字符串前缀匹配”inputVar ”。
ForEach控制器提取所有变量前缀” inputVar_ ”,并执行它 样本,通过变量中的值” returnVar ”。 在这种情况下它将设置变量值” 一个 ”“ b ”和“ c ”。
的 1 取样器是另一个Java取样器使用返回变量” returnVar “样品标签的一部分 随着取样器的数据。
示例2 , 正则表达式2 和 2 几乎是相同的,除了Regex已经改为“ (\ w)\ sx ”, 这显然不匹配。 因此, 2 取样器将不会运行。
模块控制器
模块控制器提供了一种机制来代替测试计划片段到当前测试计划在运行时。
一个测试计划片段由一个控制器和所有的测试元素(取样器等)中包含它。 片段可以位于任何线程组,或 工作台 。 如果片段位于线程组,则可以禁用其控制器,防止正在运行的片段 除了模块控制器。 或者你可以将片段存储在一个虚拟线程组,和禁用整个线程组。
可以有多个片段,每一个都有不同的系列 取样器。 该模块控制器可以用于轻松切换这些只需选择多个测试用例 适当的控制器的下拉框。 这提供了方便快速、轻松地运行许多替代测试计划。
一个片段的名称是由控制器名称及其父母的名字。 例如:
Test Plan / Protocol: JDBC / Control / Interleave Controller (Module1)
任何 碎片模块所使用的控制器必须有一个唯一的名称 , 正如它的名字被用来找到目标控制器测试计划时重新加载。 出于这个原因,最好确保控制器从默认的名字是改变 -如上面的例子所示 否则重复可能意外时创建新元素添加到测试计划中。
包括控制器
包括控制器被设计成使用一个外部jmx文件。 使用它,创建一个测试片段 下面的测试计划和添加任何所需的取样器,控制器等。 然后保存测试计划。 文件现在可以包含其他测试计划的一部分。
为了方便起见, 线程组 也可以添加外部JMX文件中用于调试目的。 一个 模块控制器 可以用来参考测试片段。 的 线程组 期间将被忽略 包括过程。
如果测试使用Cookie经理或用户定义的变量,这些应放置在顶层 测试计划,包括文件,否则不能保证工作。
但是,如果属性 includecontroller.prefix 定义, 内容使用前缀路径名。
如果文件不能被发现的位置 前缀 + 文件名 ,那么控制器 尝试打开 文件名 相对于JMX启动目录。
事务控制器
事务控制器产生一个额外的 的样品的总时间采取措施执行嵌套的测试元素。
有两种操作模式:
- 添加额外的样品后,嵌套的样品
- 添加额外的样品作为父母的嵌套的样品
生成的示例包括所有次嵌套取样器默认扣除(自2.11年)定时器和处理时间的前/后处理器 除非复选框” 包括时间的计时器和张后处理器生成的样本 ”检查。 根据时钟分辨率,它可能略微超过个体采样+计时器的总和。 时钟可能蜱虫后控制器记录开始时间之前第一个示例开始。 最后同样。
生成的示例仅仅是如果所有使成功视为成功。
在家长模式中,单个样品仍然可以看到在树视图中侦听器, 但不再作为单独的条目出现在其他听众。 同时,使没有出现在CSV日志文件,但他们可以保存到XML文件。
记录控制器
录音控制器是一个地方持有人指示代理服务器 记录样品。 在测试运行期间,它没有效果,类似于简单的控制器。 但在 记录使用HTTP(S)测试脚本录音机 默认情况下,所有记录样品 被保存在录音控制器。
临界段控制器
临界段控制器确保其子元素(取样器/控制器等)将被执行 只有一个线程作为一个名叫锁将在执行之前的控制器。
下图显示了一个示例使用临界区控制器,控制器确保下图2中至关重要的部分 :
- DS2 - $ { __threadNum } 一次只有一个线程执行吗
- DS4 - $ { __threadNum } 一次只有一个线程执行吗
测试计划使用临界区控制器
jmeter 逻辑控制器的更多相关文章
- JMeter—逻辑控制器(六)
参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第一节JMeter逻辑控制器 JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套 ...
- jmeter 逻辑控制器Logic Controller详解
Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...
- Jmeter(九) - 从入门到精通 - JMeter逻辑控制器 - 上篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- Jmeter(十一) - 从入门到精通 - JMeter逻辑控制器 - 下篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- 【JMeter_16】JMeter逻辑控制器__随机控制器<Random Controller>
随机控制器<Random Controller> 业务逻辑: 当每次执行到该逻辑控制器时,随机挑选控制器下的任意一个子节点<取样器.逻辑控制器> Ignore sub-cont ...
- 【JMeter_17】JMeter逻辑控制器__随机顺序控制器<Random Order Controller>
随机顺序控制器<Random Order Controller> 业务逻辑: 当控制器被触发时,将控制器下的所有子节点顺序打乱执行一遍,执行一遍,执行一遍,不是执行一个. 注意:是将子节点 ...
- Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)
1.简介 Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in which Samplers are processed.”. 意思 ...
- JMeter逻辑控制器完整介绍
JMeter逻辑控制器可以对元件的执行逻辑进行控制,就像编程一样,实现业务需求. JMeter包括了以下逻辑控制器: 一共17种.除了仅一次控制器外,其他控制器下可以嵌套别的种类的逻辑控制器. If ...
随机推荐
- EI表达式和JSTL
JSP九大内置对象 WEB域内置对象(存值取值,传值数据用的) setAttribute/getAttribute; page 基本不用/ pageContext 只在本页面有效 ...
- 【Unity3D游戏开发】基础知识之Tags和Layers (三二)[转]
Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...
- Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码.文件 ...
- scp指令的学习
http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251254.html scp是linux中功能最强大的文件传输命令,可以实现从本地到远程以及远程到 ...
- 在Web应用和IntelliJ IDEA中使用Spring框架
在JAVA SE和Web应用中都可以使用Spring, 这里只说在Web程序中的应用. 下面将以Spring 3.0.5版本为例. 在Web中使用Spring只需要如下两个步骤: 第一,将Spring ...
- [SAP ABAP开发技术总结]增强Enhancement
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- bzoj 1467: Pku3243 clever Y 扩展BSGS
1467: Pku3243 clever Y Time Limit: 4 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 小 ...
- mysql概要(九)字符集和校对集
1.mysql 字符集有细致设置: 2.mysql字符处理机制是:数据库和客户端之间存在一个字符集转换器(后文简称转换器)将客户端字符编码(必须告诉服务端的)转换成一种中间编码的数据(可自定义的但保证 ...
- JavaScript基于对象(面向对象)<一>类和对象
javascript中一切皆对象,比如:Array,Date.....这些都是对象.javascript中没有class的定义,function既是定义函数,也可以是定义类.function Obj( ...
- maven初试2
1.1.建立Hello项目 1.首先建立Hello项目,同时建立Maven约定的目录结构和pom.xml文件 Hello | --src | -----main | ----------java | ...