JMeter元件的作用域与执行顺序

元件的作用域


先来讨论一下元件有作用域。《JMeter基础元件介绍》一节中,我们介绍了8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器 是典型的不与其它元件发生交互作用的元件,逻辑控制器 只对其子节点的取样器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners)需要与取样器(sampler)等元件交互。

  • 配置元件(config elements)

元件会影响其作用范围内的所有元件。

  • 前置处理程序(Per-processors)

元件在其作用范围内的每一个sampler元件之前执行。

  • 定时器(timers )

元件对其作用范围内的每一个sampler有效。

  • 后置处理程序(Post-processors)

元件在其作用范围内的每一个sampler元件之后执行。

  • 断言(Assertions)

元件对其作用范围内的每一个sampler元件执行后的结果执行校验。

  • 监听器(Listeners)

元件收集其作用范围的每一个sampler元件的信息并呈现。

在JMeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是:

  • 取样器(sampler)元件不和其它元件相互作用,因此不存在作用域的问题。

  • 逻辑控制器(Logic Controller)元件只对其子节点中的取样器 和 逻辑控制器作用。

  • 除取样器和逻辑控制器元件外,其他6类元件,如果是某个sampler的子节点,则该元件会对其父子节点起作用。

  • 除取样器和逻辑控制器元件外,其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。

讲了这些,你可能迷糊了,到底是肿么个情况呀!?通过两个栗子(例子)来理解一下他们的作用域。

例一

注:下图只是为了说明作用域,无法正常运行。

取样器: HTTP请求 、FTP请求 、TCP取样器;逻辑控制器: 循环控制器;监听器: 图形结果、聚合报告。

  • HTTP请求、FTP请求、TCP取样器 元件没有作用域的概念。

  • 循环控制器 元件作用域是其子节点FTP请求 、TCP取样器 。

  • 图形结果 元件的作用域是FTP请求 、TCP取样器。

  • 聚合报告 元作的作用域是HTTP请求 、FTP请求 、TCP取样器。

例二

注:下图只是为了说明作用域,无法正常运行。

这个例子稍微复杂一些,包含的元件较多。先来分分类。

取样器: HTTP请求 、FTP请求 、TCP取样器、 JDBC Request ;逻辑控制器: 循环控制器、随机控制器;定时器: 定时器、Uniform Random Timer ;断言: 响应断言、XML断言;监听器: 图形结果、聚合报告。

根据作用域原则,这些元件的作用域分别为:

  • HTTP请求 、FTP请求 、TCP取样器、 JDBC Request 元件没有作用域名概念。

  • 循环控制器 的作用域为 FTP请求 、TCP取样器和 随机控制器。

  • 固定定时器 作用于 HTTP请求 、 Uniform Random Timer 作用于所有取样器。

  • 响应断言 作用于JDBC Request 、 XML断言作用于FTP请求 、TCP取样和JDBC Request。

  • 图形结果 作用于FTP请求 、TCP取样和JDBC Request 、聚合报告作用于所有取样器。

其实,通过上面的分析,并没有你想象的那么复杂,我们从各个元件的层次结构就可以判断每个元件的作用域。

Jmeter中的逻辑控制器(Config Elements)在其作用范围内的行为与其他元件相比稍有不同。逻辑控制器元件分两大类: 默认配置(HTTP默认请求、FTP默认请求等)和 管理(HTTP 头管理、HTTP cookie 管理等)。

其中默认配置(Configuration Defaults)元件中设置的值可以在作用域内叠加,例如,在一个测试计划中添加两个HTTP 默认请求,其中第一个默认设置 Server name or IP 为www.google.com ,第二个默认设置Path 为/page-not-exist, 则在这两个元件作用域内的所有HTTP 默认请求,其默认的Server name or IP 和Path 均为Server name or IP 和 /page-not-exist 。(你有一个故事,我有一个笑话,我们一交换,两个人都分别拥有了一个故事加一个笑话。)

管理(Manager)类逻辑控制器元件的效果则不能进行叠加。如果两个或两个以上相同的管理类元件作用域有重叠。则在重叠 作用域内的取样器元件只会随机受到其中一个的作用,这样会导致取样器行为的不确定性。因此,在使用管理类逻辑控制器时, 一定要注意保证相同的管理类元件的作用域不发生重叠。

元件的执行顺序


了解了元件有作用域之后,来看看元件的执行顺序,元件执行顺序的规则很简单,在同一作用域名范围内,测试计划中的元件按照如下顺序执行。

(1)配置元件(config elements )

(2)前置处理程序(Per-processors)

(3)定时器(timers )

(4)取样器(Sampler)

(5)后置处理程序(Post-processors)(除非Sampler 得到的返回结果为空)。

(6)断言(Assertions)(除非Sampler 得到的返回结果为空)。

(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)。

关于执行顺序,有两点需要注意:

  • 前置处理器、后置处理器和断言等元件只能对 取样器起作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。

  • 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。


注:本文件中提到的取样器(Sampler)在有些资料中翻译为“采样器”。

参考:http://www.testclass.net/jmeter/element-action-scope

JMeter-03-元件的作用域与执行顺序的更多相关文章

  1. 【jmeter】元件的作用域与执行顺序

    1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...

  2. 转 6 jmeter元件的作用域与执行顺序

    6 jmeter元件的作用域与执行顺序   元件的作用域 配置元件(config elements)会影响其作用范围内的所有元件.前置处理程序(Per-processors)在其作用范围内的每一个sa ...

  3. JMeter元件的作用域和执行顺序

    元件的作用域 配置元件:会影响其作用范围内的所有元件,作用范围是最大的,只要创建就对所有元件起作用. 前置处理器:在其作用范围内的每一个Sample元件之前执行: 定时器:对其作用范围内的每一个Sam ...

  4. 6 jmeter元件的作用域与执行顺序

    元件的作用域 配置元件(config elements)会影响其作用范围内的所有元件.前置处理程序(Per-processors)在其作用范围内的每一个sampler元件之前执行.定时器(timers ...

  5. JMeter专题系列(三)元件的作用域与执行顺序

    1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...

  6. jmeter(六)元件的作用域与执行顺序

    jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同. jmeter的test pla ...

  7. JMeter基础之--元件的作用域与执行顺序

    前面有介绍过jmeter的元件类别,对于新手来说,jmeter的元件是还是不少的,如果我们按照每一个元件的每一个参数的含义去学习,无疑会降低学习性能测试的热情,就算我们熟悉了所有元件以及元件上的参数了 ...

  8. JMeter学习(三)元件的作用域与执行顺序

    1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(conf ...

  9. <转>jmeter(六)元件的作用域与执行顺序

    本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...

  10. JMeter学习(三)元件的作用域与执行顺序(转载)

    转载自 http://www.cnblogs.com/yangxia-test 1.元件的作用域 JMeter中共有8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它 ...

随机推荐

  1. phpstorm 断点调试总是从index.php的第一行开始

    去掉勾选,重开phpstorm

  2. AndoridSQLite数据库开发基础教程(5)

    AndoridSQLite数据库开发基础教程(5) 创建SQLite数据库 使用SQLiteManager创建数据库的操作步骤如下: (1)双击SQLiteManager工具,弹出SQliteMana ...

  3. C++中函数参数传递(非引用形参和引用形参)——学习笔记

    1.非引用形参-copy 指针是非引用,copy.但值也会改变. 引用形参: const相关问题: const形参可以拷贝. 不能修改,不能赋值! 可以使用const初始化非const: 指针+con ...

  4. shell编程系列16--文本处理三剑客之awk模式匹配的两种方法

    shell编程系列16--文本处理三剑客之awk模式匹配的两种方法 awk的工作模式 第一种模式匹配:RegExp 第二种模式匹配:关系运算匹配 用法格式对照表 语法格式 含义 RegExp 按正则表 ...

  5. Spring cloud微服务安全实战-5-5实现授权码认证流程(1)

    目前为止已经完成了完整的用户逻辑 目前的问题是,用户在登陆的时候,用户名提交的是给前端服务器的.每个前端服务器的开发人员都可能接触到前端的用户名密码. 每一个客户端应用都要去处理登陆的逻辑,一单我的登 ...

  6. 算法习题---5.7丑数(Uva136)

    一:题目 丑数是指不能被除了2,,5以外的素数整除的数.将丑数从小到大排序 ,,,,,,,,,,,.... 求第1500个丑数 (一)求解方法 对于任意丑数x,他的2x,3x,5x都是丑数. 二:代码 ...

  7. windows10 环境下的RabbitMQ安装步骤(图文)

    第一步:下载并安装erlang 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang. 下载地址:http://www.erlang.or ...

  8. CentOS8安装docker

    参考:https://www.cnblogs.com/ding2016/p/11592999.html 一,安装环境查看 二,下载docker-ce的repo curl https://downloa ...

  9. Django:使用模态框新增数据,成功后提示“提交成功”,并刷新表格bootstrap-table数据

    废话不说先看图:  代码实现: 前台代码: {% load staticfiles %} <!DOCTYPE html> <html lang="en"> ...

  10. mysql查看和设置最大连接数

    .查看最大连接数 SHOW VARIABLES LIKE '%max_connections%'; .修改最大连接数 ;