[转帖]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 ...
随机推荐
- Mybatis源码5 StatementHandler ,ParameterHandler
Mybatis5 StatementHandler ,ParameterHandler 一丶概述 前面我们总结了SqlSession--->CachingExecutor--->BaseE ...
- 在线编辑Word——插入表格
Word中可插入表格并进行相关格式化操作用于美化表格设计.本文,将通过使用Spire.Cloud Word在线编辑器展示如何来插入格式化的表格到Word.详细步骤见以下内容: 1. 进入在线编辑Wor ...
- Mysql tls 会话:再一次抓包之后,我认识到…
本文分享自华为云社区<有些事你只有抓包才知道之mysql tls会话>,作者:张俭. 你的mysql客户端和服务端之间开启tls了吗?你的回答可能是No,我根本没开启mysql的tls. ...
- Nacos是什么?
摘要:Nacos是 Dynamic Naming and Configuration Service的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 本文分享自华 ...
- 论文解读:ACL2021 NER | 基于模板的BART命名实体识别
摘要:本文是对ACL2021 NER 基于模板的BART命名实体识别这一论文工作进行初步解读. 本文分享自华为云社区<ACL2021 NER | 基于模板的BART命名实体识别>,作者: ...
- 基于MRS-Hudi构建数据湖的典型应用场景介绍
摘要:华为云FunsionInsight MRS已集成Apache Hudi 0.8版本,基于MRS-Hudi构建数据湖解决方案. 本文分享自华为云社区<基于MRS-Hudi构建数据湖的典型应用 ...
- PPT 如何做出高大上的表格
字不如表.表不如图 如何做 https://www.bilibili.com/video/BV1ha411g7f5?p=17
- Python 数组比较
a = [1, 2, 3, 5, 6, 5, 7, 8] b = [1, 3, 4, 5, 6, 3, 8, 7] print('A => %s' % a) print('B => %s' ...
- Exception in thread "main" joptsimple.UnrecognizedOptionException: zookeeper is not a recognized option
背景: 在kafka集群上使用topic相关的命令时,报错: Exception in thread "main" joptsimple.UnrecognizedOptionExc ...
- Mina Tcp服务器开发
因项目架构需求,需要开发一个Mina Tcp服务器.我的Mina服务器是Java winForm,这与在web项目使用会有少许不同. 1.Maven依赖 <dependency> < ...