jmeter 循环取值赋值给form_JMeter系列(三)逻辑控制器详解

本文详细介绍了JMeter的各种逻辑控制器,包括While控制器、Simple Controller、Foreach Controller、Once Only Controller、Transaction Controller、If Controller、Switch Controller、Throughput Controller、Random Controller、Interleave Controller和Module Controller。通过实例解析了它们的功能和用法,如循环次数控制、条件判断、性能统计等,帮助理解JMeter在接口测试中的逻辑控制能力。
摘要由CSDN通过智能技术生成

循环控制器:

指定迭代次数,可以用具体数字,也可以通过变量控制

永远:表示无限循环

2deb57c8e49bcc2c019c0b0842edc0be.png

点击查看示例:Jmeter实例(四)_图片爬虫

简单控制器:

  这是最基础的一个控制器,它可以让脚本分层,变成一个模块,但是本书并不具有任何的逻辑控制能力

Foreach控制器:

ForEach控制器用户变量一起使用,用于遍历读取返回值。该控制器下的任何请求和元件都会被执行一次或多次

注:foreach控制器通常和表达式提取器一起使用。表达式提取值应为-1,表示取全部值,然后sampler在foreach控制器下执行遍历。

 42358df2284eb222ce5287e76e4dabe3.png

def8202598c564791c117995dce01f96.png

eed08fd10dda42be0dbf47708eb60dd0.png

仅一次控制器:

  作用:在测试计划执行期间,该控制器下的子结点对单线程只执行一次,但是在多线程下仍然会执行多次。登录场景经常会使用到这个控制器。

事务控制器:

作用:事务控制器用来统计该控制器下所有子结点的性能数据。

参数:

Generate parent sample:勾选后,所有的结果将在父结点中展示(选中这个参数结果展示如下图红框,否则显示为下图蓝框)

3f76a8cc2b55bac0d85412773c6f322b.png

362a77acb613f419f64f66236393fb96.png

If控制器 :

  作用:根据表达式决定如何执行后续分支,默认使用javascript的语法进行判断(如下图红框内的文字)。

96ba37a9a6ebb3b1547e1222520f4e9b.png

判断 project_id 不为空,且数据库返回值与接口返回值相等时,执行 if 控制器下面的添加需求接口

点击查看示例:Jmeter实例(一)_Beanshell脚本断言Mock接口

Switch控制器:

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

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

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

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

示例:

1、Switch Controller选择的值为 客服登录

2cce0778dbed851d46cfb3455ddb89fc.png

2、执行结果:

76d3361635088ecdf84ebb29c4375806.png

吞吐量(Throughput Controller):

  作用:控制其下的子节点的执行次数与负载比例分配,别被名字迷惑了,跟吞吐量没任何关系。也有两种方式:

ccb6e75d10ea9d6aaca91ea315d78382.png 

  1. Total Executions:设置运行次数,整个测试计划中总计执行次数

  2. Percent Executions:设置运行比例(1~100之间),整个测试计划中总计执行百分比

  3. Throughtput: 设计的数值

  4. Per User: 依据网上的说明在选择Total Executions时,勾选时会在每个线程中执行的次数。但在3.0版本中尝试使用无效 

示例:

1、设置线程组循环5次:

2700342190c861382fcb92723587a1ce.png 

2、Throughput Controller1的子结点执行3次:、

c7db757887bf9db90bca5236f630aa69.png

 结果发现一共运行了3次

7f83e96022672fefbc992be51cdf553e.png

3、Throughput Controller2的子结点执行(40% * 线程组循环次数5)= 2次:注意percent选项下,填写的是百分比

14e6143211cb6adfa027ba4a7098272c.png

观察运行结果,发现运行了2次

20d16171d723364c15923a4d330b13a5.png

随机控制器:

作用:随机执行其下的某个子结点

应用场景: 用户对页面的随机访问

 0c5bebb560bf29032c652176dc4c67b9.png

执行结果,随机选择了三个登录中的一个

1e5321ce5b31014df1be204395c40788.png

 多运行一次,观察结果,发现两次运行的顺序不同,但是每个接口都运行了一遍

交替控制器:

忽略控制器块:勾选后,子控制器每次只能发起一个请求

Interleave accross threads:勾选之后,控制器下的子元素会依次执行

如果交替控制器挂在循环控制器之下,那么循环次数与线程数的作用相同

7d2a49ee5212141c3f141ee4ffe585e2.png

点击查看示例:Jmeter(二十九)循环控制器+交替控制器+事务控制器 完美实现接口字段参数化校验 

模块控制器:

· 模块控制器,用于跳转到选定的控制器位置并执行对应的控制器

· 应用场景: 业务逻辑的跳转

· Module to Run: 选择需要跳转到的目标控制器 

a05f83e49443a43da9082ce921a4803e.png  

While 控制器:

While 控制器,与开发语言中的While功能一致。直到条件为false时,停止运行 

条件如下: 

1:为空(不输入任何值) -- 直到某次请求执行失败则退出循环 

2:LAST -- 直到最后一个请求请求失败则退出循环 

3:其它 -- 条件值等于"false"时则退出循环 

例:${num!=5判断变量num的值是否为5等于5则退出循环 

 32095a038ad5c9b3f476cdcc336250e8.png

${__javaScript("${num}"!=8 && "${num}"不等于8的情况下执行循环体,但是只能循环5次  

我们通过计数器让它有十次循环的机会

fe8f9ed73d6c0937fa8054f5f7e54b50.png 

查看结果,循环体执行到${num}==5的时候就停止了 

4a306813e96591a6b1f0acaaf31589da.png

点击查看示例:Jmeter(三十)while控制器实现ssh三次重连

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值