[转帖]JMeter学习(二)搭建骨架--JMeter重要组件
https://www.cnblogs.com/tian-yong/p/4460665.html
JMeter的属性和变量
JMeter属性统一定义在jmeter.properties文件中。JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义 一些JMeter使用的默认值。例如,属性remote_hosts定义了JMeter在远程模式下运行的服务器地址。属性可以在测试计划中引用,但是不能作为特定线程的变量值。
JMeter变量对于测试线程而言是局部变量。这就意味着JMeter变量在不同测试线程中,既可以是完全相同的,也可以是不同的。
通过测试计划和"用户定义的变量"(配置元件)两种方式定义的变量,在JMeter启动时对这个测试计划都是可见的。如果同一个变量在多个"用户定 义的变量"(配置元件)中被定义,那么只有最后一个定义会生效。一旦某个线程启动后,那么整个变量集合的初始值就会被复制到该线程中。其他测试元件,例 如"用户变量"(前置处理器)或者"正则表达式提取器"(后置处理器)可以被用来重新定义变量(或者创建新变量),这些重定义仅仅影响当前线程。
可以通过_setProperty 函数来定义JMeter属性。JMeter属性对于整个测试计划都是可见的(全局),因此可以用于在线程间传递信息(这种情况并不多见)。
属性和变量都是大小写敏感的。
取样器(Sampler)
取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter原生支持多种不同的sampler,如 HTTP Request Sampler、 FTP Request Sampler、TCP Request Sampler、JDBC Request Sampler等,每一种不同类型的 sampler可以根据设置的参数向服务器发出不同类型的请求。
定时器(Timer)
定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手端。类似于LoadRunner里面的“思考时间”。JMeter定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
前置处理器(Per Processors)
用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当URL中有sessionID一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID。
后置处理器(Post Processors)
用于对Sampler发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath值获得的数据。
元件的作用域
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 ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)。
元件的执行顺序
了解了元件有作用域之后,来看看元件的执行顺序,元件执行顺序的规则很简单,在同一作用域名范围内,测试计划中的元件按照如下顺序执行。
(1)配置元件(config elements )
(2)前置处理程序(Per-processors)
(3)定时器(timers )
(4)取样器(Sampler)
(5)后置处理程序(Post-processors) (除非Sampler 得到的返回结果为空)。
(6)断言(Assertions)(除非Sampler 得到的返回结果为空)。
(7)监听器(Listeners)(除非Sampler 得到的返回结果为空)。
关于执行顺序,有三点需要注意:
* 前置处理器、后置处理器和断言等元件只能对 取样器作用,因此,如果在它们的作用域内没有任何取样器,则不会被执行。
* 如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序一次执行。
* 一个断言在测试树中是分等级的。如果它的父元件是请求,它就被应用于那个请求。如果它的父元件是控制器,它就影响所有那个控制器下的所有请求。
[转帖]JMeter学习(二)搭建骨架--JMeter重要组件的更多相关文章
- <转>jmeter(二十一)jmeter常用插件介绍
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- JMeter学习(十七)JMeter测试Java
目的:对Java程序进行测试 目录 一.核心步骤 二.实例 三.JMeter Java Sampler介绍 四.自带Java Request Sampler 一.核心步骤 1.创建一个Java工程: ...
- jmeter(二十一)jmeter常用插件介绍
jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足. 这篇博客 ...
- Jmeter(二十一)Jmeter常见问题及场景应用
Jmeter作为工具来讲,已经是一个相对比较牛掰的工具,除了它能够支持那么多协议以及方法之外,更在与它的前置处理以及后置处理.同步监控的人性化.当然,所有的工具.框架都是作为业务的支撑,如果不能满足我 ...
- JMeter学习(十七)JMeter测试MongoDB(转载)
转载自 http://www.cnblogs.com/yangxia-test JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接进行测试MongoDB,还有一种是写Java代码 ...
- jmeter(二十一)JMeter 命令行(非GUI)
一.应用场景 1.无需交互界面或受环境限制(linux text model) 2.远程或分布式执行 3.持续集成,通过shell脚本或批处理命令均可执行,生成的测试结果可被报表生成模块直接使用,便于 ...
- Jmeter监控平台搭建:JMeter+InfluxDB+Grafana
背景 平时一般用Jmeter的Gui模式,添加对应的插件,查看每秒线程数.TPS.响应时间等曲线,其实高并发是不建议这么看的. 解决方案 可以搭配InfluxDB+Grafana工具,使Jmeter异 ...
- JMeter学习笔记--详解JMeter配置元件
JMeter配置元件可以用来初始化默认值和变量,以便后续采样器使用.将在其作用域的初始化阶段处理. CSV Data Set Config:被用来从文件中读取数据,并将它们拆分后存储到变量中,适合处理 ...
- JMeter学习笔记--详解JMeter逻辑控制器
JMeter使用逻辑控制器来决定采样器的处理顺序 简单控制器(Simple Controller):存储设备(将某些采样器归组) 循环控制器(Loop Controller:设置循环次数 仅一次控制器 ...
- swoole学习(二)----搭建server和client
1.搭建server 1.1搭建server.php 1.搭建websocket服务器,首先建立 server.php 文件, <?php $server = new swoole_websoc ...
随机推荐
- CSS3学习笔记-盒模型
CSS盒模型是指包含内容(content).填充(padding).边框(border)和外边距(margin)几个方面的一个矩形框模型. 内容区(content):指元素中显示内容的区域,它的大小由 ...
- spring-mvc 系列:拦截器和异常处理器(HandlerInterceptor、HandlerExceptionResolver)
目录 一.拦截器的配置 二.拦截器的三个抽象方法 三.多个拦截器的执行顺序 四.基于配置的异常处理器 五.基于注解的异常处理器 一.拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 ...
- 华为云媒体査勇:华为云在视频AI转码领域的技术实践
摘要:为大家介绍华为云媒体处理服务在视频AI转码领域的一些技术实践. 随着5G的落地和消费终端的不断升级,消费环节对视频画质的要求也越来越高,为了给消费者带来更清晰.更逼真和更具沉浸感的观感体验,对云 ...
- 字节跳动基于火山引擎DataLeap的一站式数据治理架构实践
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在7月22日举行的 ArchSummit 全球架构师峰会(深圳站)上,来自火山引擎DataLeap的技术专家为大家 ...
- 如何构建面向海量数据、高实时要求的企业级OLAP数据引擎?
在字节跳动各产品线飞速成长的过程中,对数据分析能力也提出了更高的要求,现有的主流数据分析产品都没办法完全满足业务要求.因此,字节跳动在ClickHouse引擎基础上重构了技术架构,实现了云原生环境的部 ...
- 火山引擎 DataTester 应用故事:一个 A/B 测试,将产品 DAU 提升了数十万
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 疫情让线下的需求大量转移到线上,催生出了远程办公.网络授课.线上健身等新的生态现象.如何更好地为用户服务,提升 ...
- kubernetes实战(三十一):Prometheus监控Windows主机
1. 基本说明 使用Prometheus监控Windows主机和Linux主机并无太大区别,都是使用社区的Exporter进行采集数据,之后暴露一个接口,可以让Prometheus采集到主机的数据. ...
- OpenFeign 各种用法、 logger 日志记录
<spring-cloud-openfeign.version>2.2.6.RELEASE</spring-cloud-openfeign.version>对应的SpringB ...
- 比文件操作os库更优异的标准库pathlib
pathlib 库从 python3.4 开始作为内置库,到 python3.6 已经比较成熟.相比于老式的 os.path 有几个优势: 老的路径操作函数管理比较混乱,有的是导入 os, 有的又是在 ...
- 一文聊透 IP 地址的那些事
IP 地址,是一个大家都耳熟能详的名词.以生活举例,IP 在互联网中的作用就像是寄件时的收件人地址和寄件人地址,收件人地址让信件可以被正确送达,寄件人地址则让收到信的人可以回信. IP 地址作为每一个 ...