小孙同学

导航

 

一、逻辑控制器的作用域和分类

  1、jmeter中逻辑控制器(Logic Controllers)的作用域只对其子节点的sampler有效,作用是控制采样器的执行顺序。

  2、jmeter提供了17种逻辑控制器,它们各个功能都不尽相同,大概可以分为2种使用类型:

    ①.控制测试计划执行过程中节点的逻辑执行顺序,如:Loop Controller(循环控制器)、If Controller(如果if控制器)等;

    ②.对测试计划中的脚本进行分组,方便JMeter统计执行结果以及进行脚本的运行时控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事务控制器)等

二、常用逻辑控制器的使用

  1、临界区控制器(critical section Controller)

    (1)作用:临界部分控制器根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景

    (2)Lock name:锁名为空,认为每个锁为不同的锁;锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中;锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁

    

  2、遍历循环控制器(ForEach Controller)

    (1)作用:用来遍历当前元素的所有可执行场景;在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值;

        该线程组下有多个sample时,所有sample第一次取的值都是一样的;如果有多个用户时,第一次取值也是一样的;

    (2)名称:ForEach Controller的名称

        注释:备注

        输入变量前缀:变量的前缀;如要使用的变量为name_1,则需要填name

        开始循环字段(不包含):从X-1号的变量开始,X为第几个变量;如填0,实际从第一个开始

        结束循环字段(包含):到X+1的变量结束,X为第几个变量;如填4,实际第4个不会被使用,只会到第3个

        输出变量名称:将要用来使用的变量名

        Add“_”before number?:用户定义的变量有没有下划线分隔编号,最好还是勾上比较方便标识。

      

   3、转换控制器(Switch Controller)

    (1)作用:通过给该控制器中的value赋值,来指定运行哪个取样器(也可以理解为开关控制器)

    (2)有两种赋值方式:

      ①.第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。指定的值是X,那么执行第X+1个sample。

      ②.第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。

      当Value为空时,默认执行第1个子节点元素。

       

  4、当/判断控制器(While Controller)

    (1)作用:运行其子节点下的取样器/控制器,While Controller会一直运行,直到条件(Condition)为false

    (2)Condition的可能值如下:

      ①为空(不输入任何值) -- 直到某次sample执行失败才会退出循环,只要有其中一个sample执行失败就退出循环;

      ②LAST -- 直到最后一个sample请求失败,才会退出循环,要求一个sample请求必须失败,条件才成立,中间有无执行失败不管。

     

  5、仅一次控制器(once only controller)

    (1)作用:在线程多次循环的时候,将使其子节点下的取样器请求只运行一次。

     

  6、吞吐量控制器(throughput controller)

    (1)吞吐量控制器(Throughput Controller)用来控制其下元件的执行次数,并无控制吞吐量的功能。
        作用:控制其下的子节点的执行次数与负载比例分配

    (2)吞吐量控制器字段介绍:

        Total Executions:执行数量,总数量为线程数*循环次数,设置数量在其间

        percent Executions:执行百分比(1-100%),执行数量=线程数*循环次数*百分比

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

    (3)场景1:线程数2,循环5次,吞吐量控制器1设置Total Executions 2,吞吐量控制器1设置Total Executions 8

        结果:那么控制器1的线程执行2次,控制器 2线程执行8次

        场景2:线程数2,循环5次,吞吐量控制器1设置percent Executions 20,吞吐量控制器1设置percent Executions 80

        结果:那么控制器1的线程执行2次,控制器 2线程执行8次

        场景3:线程数2,循环5次,吞吐量控制器1设置Total Executions 为空,勾上Per User,吞吐量控制器1设置percent Executions 为空,勾上Per User

        结果:那么控制器1的线程执行2次,控制器 2线程执行10次

        

  7、循环控制器(Loop Controller)

    (1)作用:指定其子节点运行的次数,可以使用具体的数值,也可以使用变量。

    (2)Forever-选项:勾选上这一项表示一直循环下去;

        循环次数-选项:如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。

      

 

   8、随机顺序控制器(Random Order Controller)

    (1)作用:类似于简单控制器,将执行每个子节点下的取样器都会执行,但是每个sampled的执行顺序是随机的。

 

posted on 2020-10-23 10:50  是孙同学啊  阅读(520)  评论(0)    收藏  举报