热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JMeter(六):组件作用范围与执行流程详解

在《JMeter(六):组件作用范围与执行流程详解》中,我们将深入探讨组件的作用范围及其执行流程。不同于测试计划和线程组,JMeter中的八类可执行组件具有特定的作用域,这些组件在测试过程中发挥着不同的功能。本文将详细解析这些组件的作用范围,并介绍它们在测试执行过程中的具体行为和相互关系。通过本文,读者将能够更好地理解和优化JMeter测试脚本的设计与执行。

元件的作用域

  先来讨论一下元件有作用域。《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 ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。

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

 

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

取样器(HTTP请求1 、FTP请求2 、TCP取样器3) 逻辑控制器(循环控制器) 监听器(图形结果1、聚合报告2)

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

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

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

*  聚合报告2 元作的作用域是HTTP请求1 、FTP请求2 、TCP取样器3

 

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

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

  取样器(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 得到的返回结果为空)。

 

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

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

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

 

转:https://www.cnblogs.com/telescope11/p/9848527.html



推荐阅读
  • 在 Asp.net 应用中,动态加载 DropDownList 控件的数据源是一项常见需求。本文探讨了如何高效地从数据库中获取数据,并实时更新下拉列表,确保用户界面始终与后台数据保持同步。通过使用 ADO.NET 和 LINQ to SQL 技术,开发者可以轻松实现这一功能,同时提高应用的性能和用户体验。文中还提供了代码示例和最佳实践,帮助开发者解决常见的数据绑定问题。 ... [详细]
  • 通过Apache Commons FileUpload组件,可以根据具体应用需求实现多样化的文件上传功能。在基本应用场景中,开发者可以通过调用单一方法来解析Servlet请求,从而轻松处理文件上传任务。此外,该组件还提供了丰富的配置选项和高级功能,支持大文件上传、多文件并发处理等复杂场景,显著提升了文件上传的效率和可靠性。 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • RestTemplate的使用技巧与最佳实践
    在本文中,我们将探讨如何高效地使用 `RestTemplate` 并分享一些最佳实践。首先,我们创建了两个 Spring Boot 项目,分别为 A 项目(端口 8080)和 B 项目(端口 8081)。接下来,我们在 A 项目中配置了必要的设置,包括创建配置文件和导入相关依赖,以确保 `RestTemplate` 能够顺利调用 B 项目的 API。通过这些步骤,我们展示了如何在实际项目中有效地集成和使用 `RestTemplate`。 ... [详细]
  • 本文探讨了Node.js Cluster模块在多核CPU环境下的应用及其性能测试。通过安装`async`包并利用Node.js自带的`http`和`cluster`模块,创建了一个名为`cluster.js`的文件,该文件根据系统CPU核心数动态生成多个工作进程,以实现负载均衡和提高应用性能。实验结果表明,使用Cluster模块能够显著提升高并发场景下的响应速度和处理能力。 ... [详细]
  • 在安装 Greenplum 的过程中,正确配置 `gpinitsystem_config` 文件是至关重要的一步。本文详细介绍了如何优化该文件,以确保数据库集群的高效初始化和稳定运行。通过调整关键参数,用户可以更好地适应不同的硬件环境和业务需求,从而提升系统的整体性能。 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
  • Python初学者入门指南:从基础到实践的全面学习路径本文为Python初学者提供了一条从基础到实践的全面学习路径。特别介绍了Python字典(Dictionary)中的`items()`方法,该方法用于返回字典中所有键值对的视图对象,便于在循环和其他操作中使用。通过实例讲解,帮助读者更好地理解和应用这一重要功能。 ... [详细]
  • 利用Node.js开发的成都58同城高效租房信息抓取工具
    基于Node.js开发的成都58同城高效租房信息抓取工具,旨在为用户提供便捷、高效的房源搜索体验。该工具能够快速抓取并筛选出性价比高的租房信息,帮助用户在海量信息中迅速找到满意的房源。通过优化数据处理流程和提升抓取效率,该工具显著提升了租房信息的获取速度和准确性,为租房者节省了大量时间和精力。 ... [详细]
  • 在JSP页面中调用客户端本地应用程序(例如 `C:\netterm.exe`)时,可以通过使用 `Runtime.getRuntime().exec("c:\\netterm.exe")` 实现。然而,这种方法仅在服务器端有效,若要实现在客户端执行本地程序,需要采用其他技术手段,如Java Applet或ActiveX控件,以确保安全性和兼容性。 ... [详细]
  • 利用Mac上的Remote Desktop Manager实现与Ubuntu 16.04及Windows 10的远程桌面连接优化方案
    随着远程办公需求的增加,如何在不同操作系统之间高效地进行远程桌面连接成为了一个重要问题。本文介绍了一种利用Mac上的Remote Desktop Manager实现与Ubuntu 16.04及Windows 10远程桌面连接的优化方案。通过详细的操作步骤和配置方法,帮助用户在多平台环境中顺利进行远程工作,避免常见的技术障碍。 ... [详细]
  • 在处理大文件上传时,服务端为何无法直接接收?这主要与 PHP 配置文件 `php.ini` 中的几个关键参数有关,如 `upload_max_filesize` 和 `post_max_size`。这些参数分别限制了单个文件的最大上传大小和整个 POST 请求的数据量。为了实现大文件的高效上传,可以通过文件分割与分片上传的方法来解决。本文将详细介绍这一实现方法,并提供相应的代码示例,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文详细介绍了在Windows操作系统上使用Python 3.8.5编译支持CUDA 11和cuDNN 8.0.2的TensorFlow 2.3的步骤。文章不仅提供了详细的编译指南,还分享了编译后的文件下载链接,方便用户快速获取所需资源。此外,文中还涵盖了常见的编译问题及其解决方案,确保用户能够顺利进行编译和安装。 ... [详细]
  • 本文详细探讨了Struts框架中几种常用的数据标签,包括`s:property`、`s:a`、`s:debug`、`s:include`和`s:param`。这些标签在实际开发中的应用广泛,不仅用于数据展示和链接生成,还提供了调试和模块化功能。文章分析了每个标签的基本用法及其属性配置,并结合具体示例介绍了如何进行性能优化和最佳实践。通过这些内容,开发者可以更好地理解和利用这些标签,提高开发效率和代码质量。 ... [详细]
  • 网站前端开发的核心理念与必备技能解析 ... [详细]
author-avatar
安份丶小娚人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有