当前位置:网站首页>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自动化测试++全套模板+性能测试
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!
边栏推荐
- JS inheritance prototype
- 信息安全实验一:DES加密算法的实现
- 浏览器中如何让视频倍速播放
- Jmeters use
- Information Security Experiment 1: implementation of DES encryption algorithm
- # Arthas 简单使用说明
- Pytest installation (command line installation)
- Pycharm create a new file and add author information
- Difference between process and thread
- Oracle installation enhancements error
猜你喜欢
flex弹性布局
Error: selenium common. exceptions. WebDriverException: Messag‘geckodriver‘ execute
Information Security Experiment 3: the use of PGP email encryption software
Unity uses mesh to realize real-time point cloud (I)
Mysql:select ... for update
[SVN] what is SVN? How do you use it?
Where is the answer? action config/Interceptor/class/servlet
章鱼未来之星获得25万美金奖励|章鱼加速器2022夏季创业营圆满落幕
VSCode+mingw64
Over 100000 words_ Ultra detailed SSM integration practice_ Manually implement permission management
随机推荐
如何成为一名高级数字 IC 设计工程师(5-2)理论篇:ULP 低功耗设计技术精讲(上)
flinkcdc 用sqlclient可以指定mysqlbinlog id执行任务吗
Connecting mobile phone with ADB
创建一个长度为6的int型数组,要求数组元素的值都在1-30之间,且是随机赋值。同时,要求元素的值各不相同。
如何成为一名高级数字 IC 设计工程师(5-3)理论篇:ULP 低功耗设计技术精讲(下)
信息安全实验二 :使用X-SCANNER扫描工具
VSCode+mingw64
Self awakening from a 30-year-old female programmer
Error: selenium common. exceptions. WebDriverException: Messag‘geckodriver‘ execute
Unity uses mesh to realize real-time point cloud (II)
Interface test API case, data and interface separation
esp8266使用TF卡并读写数据(基于arduino)
When inputting an expression in the input box, an error is reported: incorrect string value:'\xf0\x9f... ' for column 'XXX' at row 1
信息安全实验四:Ip包监视程序实现
网易云微信小程序
Data association between two interfaces of postman
DRF authentication, permissions, and flow restrictions (only for views in DRF)
Kubernetes cluster capacity expansion to add node nodes
In fact, it's very simple. It teaches you to easily realize the cool data visualization big screen
Postman data driven