jemeter(10)-从入门到精通-逻辑控制器(中)

4.1Critical Section Controller

The Critical Section Controller ensures that its children elements (samplers/controllers, etc.) will be executed by only one thread as a named lock will be taken before executing children of controller

翻译:临界区控制器确保其子元素(采样器/控制器等)将仅由一个线程执行,因为在执行控制器的子元素之前将获取命名锁

 

 

 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Lock name:锁名称,这里可以填入其子节点下执行的线程的名称,这个线程作为一个全局锁存在

 

 

 4.1.2锁名分类

(1)锁名为空,认为每个锁为不同的锁

(2)锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中

(3)锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁

 

 

 

4.2ForEach Controller

ForEach 控制器:一般搭配用户变量使用。依次调用用户定义的变量,直到最后一个,结束循环。为了满足ForEach Controller提取数据,变量命名的格式一般为“变量名_数字”,其中数字从1开始。
1、即遍历循环控制器,顾名思义是定义一个循环规则。
2、用来遍历当前元素的所有可执行场景。
3、在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。
4、这个控制器一般配合配置元件 → 正则表达式提取器来一起使用,可对页面上的某些元素进行重复处理。

 

 

 

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Input variable prefix:输入变量前缀,可以在“用户自定义变量”中定义一组变量,循环控制器可以从中获取到变量对应的值,然后作为循环控制器的循环条件,还可以输出变量作为取样器的参数。

Start index for loop:循环变量下标起点。循环指数开始(唯一)→ 遍历查询的变量范围,开始的值(这里如果不填写,默认从 1 开始,如果没有 1 开始的变量,执行时会报错)

End index for loop:循环变量下标终点。循环指数结束(包含)→ 遍历查询的变量范围,结束的值

Output variable name:输出变量名称,循环控制器生成的变量名称。后续可通过${}引用

Add "_" before number ?: 变量前缀后是否加“_”作为分隔符。如果定义的变量名中有下划线的话就要勾选此项,否则找不到;反之,没有的话不要勾选,否则同样找不

 

循环遍历的例子:
1、用户自定义变量

2、foreach controller

3、加一个请求

 

 

 

 

 

 

 

 

 

4.3Include Controller

Include控制器用来导入外部的测试片段(非完整的测试计划),在执行时会执行导入的测试计划,但是被导入的测试计划有特殊要求,它不能有线程组,只能包含简单的控制器及控制器下的元件。换句话说就是相当于加了一个执行单元,一个封装了的业务操作单元,类似我们程序开发中的函数(方法)一样。例如一个查询学生信息的业务操作我们用取样器来模拟,然后放到简单控制器中作为一个执行单元,别的地方也要用到时,我们可以不用重复造轮子直接引用过来。

一般来说,Include控制器和测试片段(Test Fragment)配合使用的比较常见。

 

 

2、关键参数说明如下:

Name:名称,可以随意设置,甚至为空;

Comments:注释,可随意设置,可以为空;

Filename:文件名,必输字段,如果没有,就会报错。通过Filename的路径和文件名引用外部的jmx文件。

宏哥推荐小伙伴或者童鞋们可以将 Include控制器 与 Module控制器(传送门)一起对比着学习,Include控制器 是从外部文件引用,只能引用整个测试片段的内容,Module控制器 是从内部文件中引用,引用上相对比较灵活,可以只引用部分测试片段或模块内容。这样一内一外不仅容易理解也容易记忆和学习。

 

 

 

到这里,大家应该理解了  Include Controller 和  Test Fragment 了吧。宏哥的理解就是,Test Fragment 相当于一个独立的部分,可以被其他测试计划引用,实现 样例的片段化,模块化,遇到重复需要的,比如登录、注册之类的,就可以用Test Fragment 和 Include Controller 了。这样可以避免重复造轮子,做许多无用功。

 

include  controll  控制器   例子

4.3.1实例

(1)当Filename路径的值为空,程序执行报错,脚本执行中止,不会继续执行下面的脚本内容。

1、首先创建一个Filename路径为空的测试计划,如下图所示:

2、运行JMeter,查看结果树(程序执行报错,脚本执行中止,不会继续执行下面 访问博客园首页 的取样器),如下图所示: 

(2)当Filename路径中的文件不存在,程序直接弹窗报错并停止执行。

1、首先创建一个Filename路径中的文件不存在的测试计划,点击“保存”按钮的时候,就会直接弹窗报错。如下图所示:

(3)当Filename路径的文件中不包含测试片段,跳过控制器,继续向下执行。

1、首先创建一个外部引用没有测试片段的测试计划,如下图所示:

2、创建一个Filename路径的文件中不包含测试片段的测试计划,将上边的外部引用-无测试片段文件添加到Include控制器中,如下图所示:

3、运行JMeter,查看结果树(跳过控制器,继续向下执行 访问博客园首页 的取样器),如下图所示: 

(3)当Filename路径的文件中包含测试片段,执行完控制器,再继续向下执行。

1、首先创建一个外部引用有测试片段的测试计划,如下图所示:

2、创建一个Filename路径的文件中包含测试片段的测试计划,将上边的外部引用-有测试片段文件添加到Include控制器中,如下图所示:

3、运行JMeter,查看结果树(执行完控制器里的测试片段,再继续向下执行 访问博客园首页 的取样器),如下图所示: 

 

posted @   小米泥  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示