当前位置:网站首页>csdn涨薪技术-浅学Jmeter的几个常用的逻辑控制器使用

csdn涨薪技术-浅学Jmeter的几个常用的逻辑控制器使用

2022-07-07 06:59:00 测试架构师北凡

前言:

jmeter逻辑器是每一个测试老鸟必备的知识,这里给大家整理了几个常用的。

【文章末尾给大家准备大量的福利】

1、简单控制器 

  作用:用来组合取样器和其他逻辑控制器

 1.1 创建简单控制器,路径:线程组-->添加-->逻辑控制器-->简单控制器

  

   1.2 添加完控制器之后,可在控制器中加入取样器之HTTP请求,添加的请求之间不会有相互影响

  1.3 运行简单控制器,运行后可看到,添加的每个HTTP请求从上至下依次运行

 

 2、随机控制器

  作用:顾名思义就是在该控制器下的HTTP请求之中随机选择一个HTTP请求进行运行

  2.1 创建随机控制器,路径:线程组-->添加-->逻辑控制器-->随机控制器

  2.2 在控制器下添加几个HTTP请求,并运行,运行结果:控制器下的所有HTTP请求均运行,但顺序不是自上而下,而是随机的

   2.3 随机控制器下包含了其他控制器,未勾选【忽略子控制器块】,如果随机到了控制器,就会执行整个控制器

  2.4 随机控制器下包含了其他控制器,勾选【忽略子控制器块】,如果随机到了控制器,只会执行子控制器下的一个请求

3、随机顺序控制器

 作用:类似于简单控制器,将执行每个子节点下的取样器请求一次,但是执行是随机的

  3.1创建随机控制器,路径:线程组-->添加-->逻辑控制器-->随机控制器

  3.2在控制器下添加几个HTTP请求,并运行,运行结果:只运行了其中某一个请求

4、仅一次控制器

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

  4.1创建仅一次控制器,路径:线程组-->添加-->逻辑控制器-->仅一次控制器

  4.2在控制器下添加几个HTTP请求,并运行

  4.2.1 线程数1,循环1:控制器下的每个请求均只运行一次

  4.2.2 线程数5,循环1:控制器下的每个请求执行5次

  4.2.3 线程数1,循环5 :控制器下的每个请求均只运行一次

5、循环控制器

 作用:该控制器下的取样器请求可以循环运行

  5.1创建循环控制器,路径:线程组-->添加-->逻辑控制器-->循环控制器

  线程组设置为1,循环次数为1  

  

   5.2 设置循环控制器的循环次数为3

  循环次数(Loop Count):在输入框中输入需要循环的次数,控制器下的请求即可循环运行

  永远(forever):如果勾选该项,那么控制器下的请求可一直运行

  5.3在控制器下添加几个HTTP请求,并运行,运行结果:将http请求按照顺序执行三次,每次执行一遍(一个并发)

6、Switch控制器

 作用:Switch控制器通过给该控制器中的Value赋值,来指定运行哪个采样器。有两种赋值方式:

  • 第一种是数值,Switch控制器下的子节点从0开始计数,通过指定子节点所在的数值来确定执行哪个元素。
  • 第二种是直接指定子元素的名称,比如采样器的Name来进行匹配。当指定的名称不存在时,不执行任何元素。
  • 当Value为空时,默认执行第1个子节点元素。 

  6.1创建Switch控制器,路径:线程组-->添加-->逻辑控制器-->Switch控制器

  6.2在控制器下添加几个HTTP请求,并运行

  6.2.1 switch value 为空,默认执行switch控制器下的第一个请求

 

  6.2.2 switch value 为2,执行switch控制器下的第3个请求(因为从0开始计数)

  6.2.3 switch value 为6,执行switch控制器下的第1个请求(因为从0开始计数,超出范围,默认执行第一个)

   

 6.2.4 switch value 为demo_switch_02,执行switch控制器下取样器名为”demo_switch_02“的请求

7、ForEach控制器

 作用:ForEach控制器一般和用户自定义变量一起使用。其在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。

参数:

  • Input Variable Prefix:输入变量前缀----就是定义用户变量的名称
  • Output variable name:输出变量名称----作用于接口取值
  • Start index for loop(exclusive):循环开始的索引(这里如果不填写,默认从1开始,如果没有1开始的变量,执行时会报错)---从X序号的变量开始
  • End index for loop(inclusive):循环结束的索引(超出设置的变量索引时,仅执行到设置变量的索引,后续不再执行)
  • Add”_”before number:输入变量名称中是否使用“_”进行间隔。

  7.1创建ForEach控制器,路径:线程组-->添加-->逻辑控制器-->ForEach控制器  

  

  7.2  添加用户自定义变量作为接口的入参,路径为:线程组-->添加-->配置元件-->用户自定义变量

   

 

  7.3 设置控制器的各项参数,并更改取样器的路径为变量形式:${baby}

 

  7.4 运行结果:将设置的用户变量依次带入请求,三个用户变量代入请求三次

 

8、While控制器

 作用:运行其子节点下的取样器/控制器,直到条件为“假”

Condition(function or variable):条件(函数或变量):里面可填入判断依据的条件,参照使用方法,可能的条件值有:

  ①.空白:最后一个示例循环失败时退出循环

  ②.最后一个值:最后一个示例循环失败时退出循环。 如果之前的最后一个示例只是循环失败,不进入循环。

  ③.否则:退出时(或不输入)循环条件等于字符串“ 假 ”

条件可以是任何变量或函数,最终等于字符串” 假 ”。需要注意的是:条件是评估两次,一次取样前,一次随机取样

  8.1创建While控制器,路径:线程组-->添加-->逻辑控制器-->While控制器

  

  8.2  不填写while条件值

·  

     8.2.1 第一个请求执行失败,运行结果:第一个请求执行失败,后续请求继续执行且循环执行未断成

    

    8.2.2 中间的请求执行失败,运行结果:中间的请求执行失败,后续请求继续执行且循环执行未断成

  

·    8.2.3 最后一个请求执行失败,运行结果:最后一个请求执行失败,后续请求不再循环执行

  

  8.3  while条件值为LAST

  

    8.3.1 While 控制器下最后一个取样器执行失败, 跳出循环

    

    8.3.2  While控制器前一个样例执行失败,就不会进入While循环进行执行下面的子节点

    

9、Runtime控制器

   作用:控制运行一次runtime控制器下所有取样器的时间

  9.1创建Runtime控制器,设置时间6秒,路径:线程组-->添加-->逻辑控制器-->Runtime控制器

  9.2在控制器下添加几个HTTP请求,并运行,运行结果:

10、如果(If)控制器

 作用:根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断。

参数:

  • 条件(默认JavaScript)(Expression:使用JavaScript的函数或变量进行评估判断条件为真或假
  • 条件解释为变量表达式(interpret condition as variable expression):如果勾选该项,那么将expression中的变量表达式进行求值,并与“ture”或“false”进行比较,而无需使用JavaScript-----如_groovy函数
  • 对所有子条件执行(evaluate for all children):如果勾选该项,则该控制器在每一个子节点执行前执行一次表达式判断;
  • 默认情况下,该控制器可以对包含在其下面的所有可运行的元素进行执行,但只在入口执行一次

  10.1创建Runtime控制器,路径:线程组-->添加-->逻辑控制器-->Runtime控制器

  

  10.2使用函数助手添加IF条件,路径:Tools--->函数助手对话框

  

  通过【选择一个功能】找到要使用的函数,然后在【表达式评估】中写入需要使用的等式,点击【生成】即可得到一个完整的表达式

   

  10.3 将函数助手生成的表达式复制粘贴到如果(If)控制器,因为是字符串比较,所以将表达式调整为${__groovy("${istrue}"=="1",)}

  10.4 添加BeanShell 取样器,添加脚本vars.put("istrue","1");----将istrue变量设置为1

  vars即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:

  • vars.get(String key):从jmeter中获得变量值;
  • vars.put(String key,String value):数据存到jmeter变量中;

   10.5 添加一个HTTP请求,运行结果,执行if控制器下的HTTP请求

  10.6  将BeanShell取样器中的值改为2(即不满足控制器条件),再次运行,运行结果:不执行if控制器下的HTTP请求

11、CSV 数据文件设置

  11.1 添加一个CSV 数据文件,路径为:线程组-->添加-->配置元件-->CSV 数据文件设置

  

  11.2  新建一个TXT文件,改名为 basedata.csv,打开后添加字段及接口相关数据,选择使用姓名查询学生接口,明确接口入参为姓名【name】

    

  11.3  CSV 数据文件设置: 

    1.通过【文件名】右边的【浏览】键导入之前建好的 basedata.csv文件

    2.文件编码选择:编辑

    3.变量名称为basedata.csv文件中的各变量值

    4.忽略首行选择:True

  

  11.4  添加HTTP请求,将请求参数均使用参数化${xxx},将参数名依次填入

  

  11.5 在线程组中设置循环次数为6,运行结果:basedata.csv文件中仅有4条数据,成功循环6次,第1、2条数据重复

 

  重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料

需要的先关注再私我关键字【000】免费获取哦 注意关键字是:000

疑惑:为什么要先关注呢?   回:因为没关注的话私信回了你看不到

项目实战

app项目,银行项目,医药项目,电商,金融

大型电商项目

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

python自动化测试++全套模板+性能测试

听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!

原网站

版权声明
本文为[测试架构师北凡]所创,转载请带上原文链接,感谢
https://blog.csdn.net/csdnchengxi/article/details/125646409