美文网首页
逻辑控制器

逻辑控制器

作者: test小星星 | 来源:发表于2018-10-15 21:04 被阅读7次

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

    jmeter所有版本下载路劲:https://archive.apache.org/dist/jmeter/binaries/

    逻辑控制器

    ForEach Controller(循环控制器)

    功能描述:定义一个循环的规则

    ForEach Controller(循环控制器)

    参数说明

    名称:控制器名称,可以随意设置,甚至可以为空。

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

    输入变量前缀:可以在"用户自定义的变量"中定义一组变量,循环控制器可以从中获取变量对应的值,

    然后作为循环控制器的循环条件,还可以输出变量作为取样器的参数。

    Start index for loop:循环变量下标起点。

    End index for loop:循环变量下标终点。

    输出变量名称:循环控制器生成的变量名称。

    Add “_” before number?:变量前缀后是否加"_" 作为分隔符。

    现在我们来看一个例子。

    首先我们访问一个页面,然后用正则表达式提取这个页面所有链接,然后用ForEach Controller(循环控制器)来循环遍历所有的链接。

    (1)访问http://jmeter.apache.org/demos/

    HTTP请求

    (2)正则表达式提取第一步操作返回的所有链接。

    正则表达式提取器

    (3)添加一个ForEach Controller

    ForEach Controller控制器

    (4)在ForEach controller中添加一个http请求,访问参数由ForEach controller循环控制传递过来。

    http请求2

    (5)添加一个监控器——观察结果树,运行完成后我们就可以看到示例脚本都被我们下载下来了。

    观察结果树

    Simple Controller(简单控制器)

    功能描述:是JMeter中最简单的一个Controller。该Controller仅用于对测试计划    中的元件进行分组,不具有任何的逻辑控制或运行时的功能。

    Include Controller

    功能描述:用来导入其他的测试计划片段,但他有特殊要求,被导入的测试计划不能有线程组。只能包含简单控制器及控制器下的元件。

    类似我们程序开发中导入一个封装好的一个函数一样。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置

    文件名:被引入的文件路径,必输字段,如果没有则会报错。

    Simple Controller(简单控制器)

    Runtime Controller

    功能描述:用来控制其子元件的执行时长,时长的单位是秒。

    参数说明

    名称 :可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Runtime(seconds):默认为1,去掉1默认为0,此时不执行其节点下的元件。

    Runtime Controller

    Switch Controller

    功能描述:Switch条件控制器,类似于高级语言中的Switch逻辑控制语句。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Switch Value:指定运行的取样器编号。匹配值,可以为数字,也可以为字符。为字符时匹配取样器名称,如果匹配不上就会默认

    找取取样器名称为default的取样器,如果没有则不允许。

    一个简单的例子。

    Switch Controller

    如图所示,指定运行的的取样器编号为0(JMeter会给节点下的取样器顺序编号,第一个取样器“java请求1”编号为0,第二个“取样器java请求2”的编号寄是1,所以这里指定0就会运行第一个java请求1)。如果指定的编号超出了下面的节点数或者不指定,则运行第0个取样器。另外也可以指定取样器的名称,名称匹配时大小写及空格都敏感。如果匹配不上则不运行取样器。

    while Controller

    功能描述:while条件控制器,其节点下的元件将一直运行直到while条件为false。

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Condition:接受变量表达式与变量, 如:input < 10当条件不满足时一直循环下去,另外提供了三个常量。

        Blank:当循环中有取样器失败后停止。

        LAST:当循环前有取样器失败则不进入循环。

        Otherwise:当判断条件为false时停止循环。

    while Controller

    Interleave Controller(交替控制器)

    功能描述:交替控制器,其节点下的取样器会交替执行,比如,1个线程,循环执行三次,第一次1号取样器执行,第二次2号取样器执行,第三次1号执行。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由交替控制器接管。

    一个简单的例子

    Interleave Controller(交替控制器)

    如图,假如我们设置线程组执行1个线程,循环3次,那么执行顺序是:java请求1、java请求3、java请求2、java请求3、java请求1、java请求3

    交替控制器下只有两个元件,所以交替完一次后从新开始。即第三次执行时顺序是java请求1、java请求3。

    现在是勾选忽略子控制器的例子

    Interleave Controller(交替控制器)

    如图,交替控制器下有一个循环控制器,此时勾选忽略子控制器,设置1个线程执行4次,则执行顺序是:java请求1、java请求2、java请求3、java请求1

    下面再来个复杂点的测试计划,我们让交替控制器嵌套一下

    观察结果树

    Once Only Controller(仅一次控制器)

    功能描述:仅一次控制器,也就是此控制器下的子元件只运行一次,即使把仅一次控制器放在循环控制器下面,也只是运行一次

    一个简单的例子

    Once Only Controller(仅一次控制器)

    如图,我们设置1个线程,循环控制器设置3次,可以看出java请求2只执行了一次。

    我们在模拟请求时,有时只需要登录一次,就可以把登录的部分放在仅一次控制器下。

    Throughput Controller(吞吐量控制器)

    功能描述:用来控制其下元件的执行次数,并无控制吞吐量的功能,想要控制吞吐量可以使用Constant Throughput Timer

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Percent Executions:按执行次数的百分比来计算执行次数,此时Throughput(吞吐量)取值是0-100,Per User是否勾选对Percent Executipns模式无影响。Percent Executions模式的执行次数=线程数*循环次数*吞吐量%。

    ps:循环次数=线程组循环次数*循环控制器循环次数。

    Total Executions:按Throughput(吞吐量)的值来指定执行次数,可以是任意整数,如果小于等于0则一次也不执行。此时Per User与Total Executions一起来影响执行次数。

        当勾选Per User时:

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

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

        当不勾选Per User时:

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

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

    Throughput Controller(吞吐量控制器)

    If Controller

    功能描述:条件控制器,可以通过某个条件来控制此节点下的元件是否运行。Condition可以使用javaScript与变量表达式。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Condition:判断条件,勾选Interpret Condition as VarEvaluate for all childreniable Expression?时Condition使用变量表达式来设置条件。

    Evaluate for all children:判断条件是否针对所有的子节点,默认不勾选,只在If Controller的入口处判断一次。

    一个简单的例子

    If Controller 观察结果树

    可以看出这就相当于语言里的if条件判断,当条件满足才会执行if控制器里的元件。

    Module Controller(模块控制器)

    功能描述:可以通过模块控制器在当前测试计划中引入新的测试片段(也可以叫脚本片段,由控制器、取样器及辅助元件构成能够完成负载的模拟)

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Module To Run:列出测试计划及工作台包含的控制器,在此选择引入哪一个脚本片段。

    一个简单的示例

    引用测试片段的控制器 观察结果树

    如图,我们有一个循环控制器放在Test Fragment(测试片段)中。测试片段中的元件是不参与测试计划运行的,但是我们可以把它引入到模块控制器中,如果我们在线程组中循环3次,那么脚本的执行顺序是:线程组、循环控制器、java请求1、java请求1、java请求1

    另外,模块控制器也可以引入当前测试计划中的控制器。

    引用测试计划内的控制器 观察结构树

    如图,我们让模块控制器引入仅一次控制器,如果我们在线程组设置循环3次,那么执行此控制器就会执行2次,为什么不是3次呢?

    因为模块控制器调用一次,顺序往下他自己也要执行一次,即在第一轮循环时仅一次控制器执行了2次,第2、3次循环就不再执行了。

    因为使用的是仅一次控制器,所以循环多少次都没有作用了。

    Random Controller(随机控制器)

    功能描述:随机控制器节点下的元件随机运行,与交替控制器不一样的是节点下的元件运行顺序不定。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由随机控制器接管,类似交替控制器。

    Random Controller(随机控制器)

    Loop Controller(循环控制器)

    功能描述:循环控制器可以控制在其节点下的元件的执行次数,如果在线程组中也设置了执行次数,那么循环控制器下的元件的执行次数是:线程组执行次数*循环控制器执行次数。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Loop Count:要么设置Forever(永远),要么填写具体的执行次数,二选一

    Loop Controller(循环控制器)

    我们设想一个场景:

    一个用户登录进入系统,一上午都在忙物流计划,我们模拟此业务过程应该是登录一次,然后无数次地循环做物流计划。

    循环控制器

    如图,我们利用循环控制器来循环物流计划这个取样器,然后用仅一次控制器让用户登录只会执行一次。

    Recording Controller(录制控制器)

    功能描述:录制控制器,顾名思义是录制的时候用到的,实际上它是一个位置,当我们用JMeter代理进行录制时录制的脚步默认放在此控制器的节点下面。没有实际的逻辑作用,我们用简单控制器也可以代替它

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    clear all the recorded samples:清除所有记录的样本。

    Transaction Controller(事务控制器)

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

    如果事务控制器下的取样器有多个,那么只有每个取样器都运行成功了,整个事务控制器定义的事务才算成功。

    参数说明

    名称:可以随意设置,最好是有意义。

    注释:可以随意设置,最好是有意义。

    Generate Parent sample:选择是否生成一个父取样结果。

    不勾上时

    不勾选 Generate Parent sample 观察结果树 聚合报告

    勾上时

    勾选 Generate Parent sample 观察结构树 聚合报告

    Include duration of timer and pre-post processors in generated sample:是否包含定时器,选中将在取样器前与后加上延时,建议不勾选。

    相关文章

      网友评论

          本文标题:逻辑控制器

          本文链接:https://www.haomeiwen.com/subject/qxbjpftx.html