jmeter性能测试(二)--逻辑控制器

逻辑控制器

在这里插入图片描述
逻辑控制器可以对元件的执行逻辑进行控制。

ForEach 控制器

在这里插入图片描述

  • 名称:可以随意设置
  • 注释:可以随意设置,也可为空
  • 输入变量前缀:可以在“用户自定义变量”中定义一组变量,ForEach控制器可以从中获取到变量对应的值,然后ForEach控制器的循环条件,还可以输出变量作为取样器的参数 (必填)
  • 开始循环字段:循环变量下标起点
  • 结束循环字段:循环变量下标终点
  • 输出变量名称:控制器生成的变量名称(必填)
  • 数字之前加上下划线“_”?:变量前缀后是否加 "—"作为分隔符

如果有这样一个业务:
在订单查询页面我们查询到了订单号,然后对每一条订单进行出库,此时我们需要遍历每一条订单,是不是可以以订单号作为查询条件?
此时我们就可以用正则表达式提取到订单号,然后用ForEach控制器来循环处理订单的出库操作。

例子

访问一个页面,然后用正则表达式提取这个页面所有链接,再用ForEach控制器来遍历所有的链接。
1.访问http://jmeter.apache.org/demos/,这是jmeter官网提供的脚本示例
首先添加HTTP请求
在这里插入图片描述
2.添加正则表达式提取第1步返回的所有链接
在这里插入图片描述
3.添加一个ForEach控制器
在这里插入图片描述
4.在控制器中添加一个HTTP请求,访问参数是由ForEach控制器传递过来
在这里插入图片描述
5.添加一个【监听器】-【查看结果树】
在这里插入图片描述

简单控制器(Simple Controller)

Simple Controller用来指定一个执行单元,它不改变元件的执行顺序,在它的下面还可以嵌套其他控制器。
**作用:**这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能。
在这里插入图片描述

Include控制器

用来导入外部的测试片段(非完整的测试计划),在执行时会执行导入的测试计划。但是被导入的测试计划有特殊要求,它不能有线程组,只能包含简单控制器及控制器下的元件。
在这里插入图片描述
简单点说就是相当于加了一个执行单元,一个封装了的业务操作单元,类似我们程序开发中的函数一样。
比如一个查询订单的业务操作,我们用取样器来模拟,然后放到“简单控制器”中作为执行单元,别的地方也要用到时,我们可以不重写直接引用过来。
比如:创建一个登录的测试片段,查询个人信息时,用Include控制器引用这个片段获取token
1、创建一个登录的测试片段
在这里插入图片描述
2、Include控制器引用这个片段,并使用json提取器获取token
在这里插入图片描述
3、引用token
在这里插入图片描述
4、结果
在这里插入图片描述
如果运行出现org.apache.http.NoHttpResponseException错误,把登录测试片段中http请求的 use keepAlive取消勾选
在这里插入图片描述

Runtime控制器

用来控制其子元件的执行时长,单位是秒
在这里插入图片描述
名称、注释:可以随意设置,也可为空
runtime(seconds):默认为1,去掉1则默认为0,此时不执行其节点下的元件

Switch控制器

Switch条件控制器,类似高级语言中的switch逻辑控制语句,如下图:
在这里插入图片描述
指定运行编号为1的取样器(jmeter会给节点下的取样器按照顺序编号,第一个取样器“用test账号进行登录”编号为0,第二个“用test_hlp账号进行登录”为1)。如果指定的编号超出了节点数或者不指定,则默认运行第0个取样器

while控制器

while循环控制器,其节点下的元件将一直运行直到while条件为false
在这里插入图片描述
参数说明:
名称、注释:可随意设置
condition(function or variable):接受变量表达式与变量。另外还提供了了三个常亮:

  • 为空:不输入任何值,直到某次取样器执行失败才会退出循环
  • Blank:当循环中有取样器失败后停止
  • LAST:直到最后一个取样器请求失败,才会退出循环
  • Otherwise:当判断条件为false时停止循环
发布了33 篇原创文章 · 获赞 0 · 访问量 584

猜你喜欢

转载自blog.csdn.net/qq_42098424/article/details/105280769