执行时间控制器<Runtime Controller> 业务逻辑: 根据输入的Runtime的值,对当前节点下的执行时长进行控制,当执行时长超过限定时长后,执行完当前正在执行的取样器后,跳出控制器,继续向下执行. Runtime值为0及正整数(可使用变量代替)时,按照限定时长控制执行时长. Runtime值为负数.小数及字符串时,都会直接跳过当前控制器,继续向下运行. Runtime值为空时,时长会自动被填充为0. Runtime值的单位为秒,不是毫秒!!!不是毫秒!!!不是毫秒!!! 比如限…
随机控制器<Random Controller> 业务逻辑: 当每次执行到该逻辑控制器时,随机挑选控制器下的任意一个子节点<取样器.逻辑控制器> Ignore sub-controller blocks:忽略子控制器 勾选后,会无视节点下的所有控制器<交替控制器.随机控制器例外>,将每个取样器作为一个单独字节点执行. 不勾选忽略子控制器,交替执行时,节点下次一级每个取样器.逻辑控制器都认为是一个单独子节点来交替执行. 演示脚本: Demo_随机控制器 随机控制器与随机顺…
模块控制器<Module Controller> 业务逻辑: 可以理解为引用.调用的意思,执行内容为Module To Run种所选的内容,引用范围为当前测试计划内的测试片段.逻辑控制器<模块控制器除外.模块控制器除外.模块控制器除外> 被引用的逻辑控制器.测试片段可以为禁用状态,被引用后仍然会被执行. 可以将模块控制器与包括控制器一起学习比较,模块控制器是从内部文件中引用,引用上相对比较灵活,可以只引用部分测试片段或模块内容,包括控制器是从外部文件引用,只能引用整个测试片段的内容…
包括控制器<Include Controller> 业务逻辑: 通过Filename的路径和文件名引用外部的jmx文件,然后对齐执行,若外部文件中没有可执行范围内的脚本内容,则跳过该逻辑控制器.被引用文件只会执行Test Fragment测试片段中的内容,线程组的内容不会被执行. 可以将包括控制器与模块控制器一起学习比较,包括控制器是从外部文件引用,只能引用整个测试片段的内容,模块控制器是从内部文件中引用,引用上相对比较灵活,可以只引用部分测试片段或模块内容. 模块控制器介绍:逻辑控制器__模…
事务控制器<Transaction Controller> 业务逻辑: 这个控制器在在业务控制上并没有什么特殊逻辑,可以理解为在简单控制器的基础上添加了统计的功能,当所有子节点全部成功则成功,由任意一个失败结果就为失败. 事务控制器不会对其子节点的执行逻辑产生影响,其效果为在监听器生成统计的时,以一个单独的统计点来统计,可各项指标为控制器子节点的指标之和. 当事务控制器下的任意一子节点执行失败,事务控制器的执行结果就会被以失败统计. Generate parent sample<生成父样…
交替控制器<Interleave Controller> 业务逻辑: 根据被控制器触发执行次数,去依次执行控制器下的子节点<逻辑控制器.采样器>. 被触发执行可以由线程组的线程数.循环次数.逻辑控制器触发. Ignore sub-controller blocks:忽略子控制器 勾选后,会无视节点下的所有控制器<交替控制器.随机控制器例外>,将每个取样器作为一个单独字节点执行 不勾选忽略子控制器,交替执行时,节点下次一级每个取样器.逻辑控制器都认为是一个单独子节点来交替…
录制控制器<Recording Controller> 个人感觉录制的脚本缺陷太明显,没有研究过,暂不做介绍,等后续空了研究后再写…
简单控制器<Simple Controller> 业务逻辑: 就像他的名字一样,简单,可以理解为一个文件夹,就是分组用的,没有其他特殊功能,但相比不添加简单控制器,区别在于简单控制器可以被模块控制器所引用. 演示脚本: Demo_简单控制器…
吞吐量控制器<Throughput Controller> 业务逻辑: 他的实际作用似乎跟吞吐量扯不上什么关系.就是单纯的控制控制器下的子节点被执行的次数或被执行比列,该控制器默认为多线程使用共通的.吞吐量的值可以以变量表示. Total Executions: 按总执行数控制,即当选中该项时,吞吐量中填写的值就是控制器期望的被执行的最大次数. 当吞吐量小于等于0时,控制器及其子节点不会被执行. 当吞吐量为空.字符串时,控制器及其子节点会被执行一次. 当吞吐量为小数时,控制器会以向下取整的方式…
循环控制器<Loop Controller> 业务逻辑: 根据所填写的循环次数,对当前节点下的取样器进行响应次数的循环请求,这里可以填写变量.整数.小数.字母.负数.各种符号等: 当填写整数时,会根据所填数量循环执行节点下的取样器. 当填写小数.字母.各种符号时,会跳过当前节点. 当填写负数时,会自动被修正成勾选永远,一直循环,直至点击停止. 当勾选永远时,会一直循环执行,直至点击停止. 当填写变量时,变量值依照上方几种情况的逻辑执行. 演示脚本: Demo_循环控制器…
随机顺序控制器<Random Order Controller> 业务逻辑: 当控制器被触发时,将控制器下的所有子节点顺序打乱执行一遍,执行一遍,执行一遍,不是执行一个. 注意:是将子节点的顺序打乱,而非请求的顺序打乱,子节点可以是其他逻辑控制器. 演示脚本: Demo_随机顺序处理器 随机控制器与随机顺序控制器名字十分接近,但两者还是有着明显的区别,可参考  JMeter逻辑控制器_随机控制器 随机控制器为每次只执行节点下的一个子节点,随机顺序控制器是将节点下的所有子节点都正常执行,只是将执…
模块控制器(Module Controller) 作用 可以理解为引用.调用执行的意思,调用范围为testplan树下任意的逻辑控制器,模块控制器除外 点开testplan树,需要引用哪个逻辑控制器选中即可,只能调用逻辑控制器 所有执行内容为模块控制器Module To Run中刚刚所选的逻辑控制器内的内容 模块控制器Module To Run种所选的内容只能单选,如果模块控制器需要调用多个其他的逻辑控制器,多建几个模块控制器 被引用的逻辑控制器.测试片段可以为禁用状态,被引用后仍然会被执行 被…
仅一次控制器<Once Only Controller> 业务逻辑: 在每个线程内,该控制器下的内容只会被执行一遍,无论循环多少次,都只执行一遍.<嵌套在循环控制器之内时是个例外,每个线程组循环都会被执行一遍> 演示脚本:Demo_仅一次控制器…
临界部分控制器<Critical Section Controller> 业务逻辑: 根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景 锁名类型: 锁名为空,认为每个锁为不同的锁 锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中 锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁 演示脚本: Demo_临界部分控制器…
认识 Include Controller Include Controller :译为包含控制器,用来添加 Test Fragment(测试片段).具体是什么意思呢,我们先来了解下 Test Fragment(测试片段). 理解 Test Fragment(测试片段) 如下是创建一个 Test Fragment 创建成功后,发现 Test Fragment 与线程组 处于同一个层级,而且默认是不启用的.如下图: 可以看到 Test Fragment 的设置界面除了名称和注释,没有其他设置项,那…
循环控制器(Loop Controller) 字面意思,循环该控制器下的请求 设定固定循环次数,或者一直循环 同线程组的循环是父子关系,大家可以试下,如果线程组设置了一直循环,而循环控制器设置了2次,实际效果是什么样子的? 一般同计数器配合使用,具体根据实际场景来…
事务控制器(Transaction Controller) 作用 选择一些请求,作为事务,放在该控制器下 比如:我有三个请求,注册.登录.下单.这三个请求其实就是一个下单完成过程,可以作为一个下单事务.将三个请求放在事务控制器下面 可选项 Generate Parent SampleInclude:不勾选,查看结果树显示,所有请求以及事务控制器:勾选,查看结果树显示,未放入事务控制器的请求,已经放入事务控制器的请求显示事务控制器(如果事务控制器中有一个请求失败了,那这个事务控制器就是false)…
随机控制器(Random Controller) 该控制器下的请求,请求顺序随机,适用场景一般为顺序性依赖不强的请求,比如:下载文件:浏览商品:访问查询接口 随机控制器下的请求随机,如果勾选了[忽略控制器模块(Ignore sub-controller blocks)],随机控制器下面即使有其他控制器,均失效 例子:随机控制器下面有个循环控制器,循环了6次,但是随机控制器勾选了忽略控制器模块,所以循环控制器失效,其下面的请求只执行一次…
Jmeter官网其实有很详细的文档,点此跳转到官网,下面我来解读一下官网的文档,如有错误,欢迎指出. 一.官网解读 Name 在结果树中显示的名字. Comments 备注.相当于代码中的注释. Expression(must evaluate to true or false) 条件.默认使用JavaScript语言返回true或false. Interpret Condition as Variable Expression? 默认选中.若不选中,会影响性能. Evaluate for al…
马上国庆节了,没有安排新版本的上线任务,所以最近自学时间比较充裕,决定把Jmeter好好学习学习,并把学习过程分享到博客中,今天呢,学习交替控制器. 一.认识交替控制器 如下,在线程组下面创建一个交替控制器: 设置界面如下: 忽略资(子)控制器块:如果勾选,则将子控制器作为一个请求,只执行一次.如果不勾选,则子控制器中样例都执行. Interleave across threads:(这个选项 我理解的还不够透彻,后期慢慢补充) 二.简单使用交替控制器 首先在交替控制器下添加3个样例,线程组下添…
今天和大家分享下循环控制器的使用. 一.认识循环控制器 如下图:新增一个循环控制器 循环控制器的设置界面: 循环次数:永远和自定义次数,这个应该比较好理解. 二.使用循环控制器 其实大家对Jmeter的熟悉的话,应该会想到,线程组 这个设置界面也是有一个循环次数的设置,那么到底他们两个有什么关联呢.我理解为父子关系. 下面举个例子, 首先在线程组中设置循环次数3,循环控制器中设置循环测试2,其他默认,添加一个计时器,方便查看结果,如下: 执行后,查看结果树: 理解为:一秒发送一个请求,循环三次,…
前面我在做性能测试的时候,由于我们的系统是需要登录的,登录成功后,系统默认加载其订单数据,因此在用户看来这是一个操作.所以为了模拟这个操作,我需要访问两个接口,并且把这两个接口的响应时间算在一起,那么就用到了事务控制器,举个列子给大家分享下我的理解,希望大家相互学习,多多指点. 一.认识事务控制器 如下,新建一个事务控制器 控制器的设置面板: Generate parent sample:生成父样例,事务控制器下所有样例的结果集合,其下所有样例都正确,事务控制才正确,反正,其下一个不正确,则不正…
吞吐量控制器 听起来好像比较难理解或者比较高深,其实它非常简单,今天我仔细看了下帮助,分享下对它的理解. 一.认识吞吐量控制器 作用:控制其下子样例执行的频次,有两种控制模式,一种是直接设置数值,一种是设置百分比.看看它的创建和设置界面:  二.不针对每个用户进行控制 线程组中设置 线程数量 2,循环次数 10,吞吐量控制器 设置 Total Executions,吞吐量设置为 2,其下添加一个样例,执行结果如下: 现在将 吞吐量控制器 设置为百分比的控制方式,吞吐量设置为:50%,执行结果:…
一.认识 ForEach 控制器 如下,创建一个 ForEach 控制器 设置界面如下: 输入变量前缀:要进行循环读取的变量前缀 Start index for loop (exclusive):循环开始,注意这里数值从0开始,也就是说,要比输入变量后缀的数字小一个数.输入变量 index_1, 那么这里应该填0,才能循环到 index_1 End index for loop (inclusive):循环结束,注意如果设置的数值大于输入变量的数量,则循环只执行输入变量数量的次数. 输出变量名称…
文章目录 Runtime Controller介绍 Runtime Controller 编辑界面 Once Only Controller介绍 Once Only Controller 配置界面 Once Only Controller使用 Runtime Controller介绍 Runtime Controller 是用来控制其子元件的执行时长,时长单位是秒: 参入如下: 名字:可以随便填写 注释:可以随便填写,可以为空 Runtime(seconds):其下元件执行时长,默认为1,删掉1…
一.认识 Runtime Controller  控制其下样例执行的时间长度. 设置界面:  Runtime (seconds):运行时间,单位秒.即控制其下样例执行多长时间.与线程组中的调度器的持续时间 效果一致.不填 或 0,不会执行样例 二.使用 Runtime 控制器 控制其下样例 执行2秒 设置 Runtime 控制器的运行时间 为 2,线程组设置默认不变,然后执行,可以看到 执行了2秒.  三.使用线程组中的调度器控制样例运行3秒 如下图设置,同样到达了样例运行3秒的效果 值得注意的…
Switch控制器<Switch Controller> 业务逻辑: 取得switch value的值,通过对节点下所有取样器.逻辑控制器的下标.名称匹配去执行,switch value的值可以为数字.字符串.变量等等 当switch value的值为0和正整数时,只会对当前节点下的取样器.逻辑控制器的下标进行匹配,不会对名称匹配.<下标是从0开始,即0为第一个取样器/逻辑控制器> 当switch value的值为空.为0.为正整数时,如果值超出了节点下的下标范围,则会默认执行节点…
While控制器<While Controller> 业务逻辑: 当条件为非false时,执行该节点下的脚本内容,判断条件包括数字.null.空白.字母.符号.true. 当条件为false时,跳过该节点的脚本内容. 当条件为空时,逻辑控制器下最后一个请求报错,则跳出控制器. 当条件为last时,先判断进入控制器前的一个接口执行情况<成功.失败>,如果失败跳过控制器,成功则进去控制器,一直到逻辑控制器下最后一个请求报错,跳出控制器. 节点下的取样器,每一轮循环之初,都会先执行一次这…
ForEach控制器<ForEach Controller> 业务逻辑: ForEach控制器一般与用户自定义变量/JDBC结果变量一起使用,可以认为他就是一种遍历型循环,该节点下的脚本内容会根据结和使用的变量被执行一次或者多次 控制器选项介绍: Input variable prefix:变量前缀,比如上面的test_1,这里就输入test Start index for loop:开始循环字段,不包含输入的数值,按照上图从1开始,则这里输入0,为空和非数字都从0开始 End index f…
If控制器<If Controller> 业务逻辑: 根据表达式的结果来决定是否执行控制器下的脚本内容,与编程语言中的if判断逻辑大致相同,表达式结果为布尔值 true或false; 当表达式结果为true时,执行当前节点下的脚本内容,当表达式结果为false时,跳过当前节点,继续往下执行. Interpret Condition as Variable Expression?: 不勾选时,会以表达式的结果来判断,即表达式结果.true来判断使用,可以理解为java的if语句: 勾选时,判断输…