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重要组件的更多相关文章

  1. <转>jmeter(二十一)jmeter常用插件介绍

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

  2. JMeter学习(十七)JMeter测试Java

    目的:对Java程序进行测试 目录 一.核心步骤 二.实例 三.JMeter Java Sampler介绍 四.自带Java Request Sampler 一.核心步骤 1.创建一个Java工程: ...

  3. jmeter(二十一)jmeter常用插件介绍

    jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足. 这篇博客 ...

  4. Jmeter(二十一)Jmeter常见问题及场景应用

    Jmeter作为工具来讲,已经是一个相对比较牛掰的工具,除了它能够支持那么多协议以及方法之外,更在与它的前置处理以及后置处理.同步监控的人性化.当然,所有的工具.框架都是作为业务的支撑,如果不能满足我 ...

  5. JMeter学习(十七)JMeter测试MongoDB(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接进行测试MongoDB,还有一种是写Java代码 ...

  6. jmeter(二十一)JMeter 命令行(非GUI)

    一.应用场景 1.无需交互界面或受环境限制(linux text model) 2.远程或分布式执行 3.持续集成,通过shell脚本或批处理命令均可执行,生成的测试结果可被报表生成模块直接使用,便于 ...

  7. Jmeter监控平台搭建:JMeter+InfluxDB+Grafana

    背景 平时一般用Jmeter的Gui模式,添加对应的插件,查看每秒线程数.TPS.响应时间等曲线,其实高并发是不建议这么看的. 解决方案 可以搭配InfluxDB+Grafana工具,使Jmeter异 ...

  8. JMeter学习笔记--详解JMeter配置元件

    JMeter配置元件可以用来初始化默认值和变量,以便后续采样器使用.将在其作用域的初始化阶段处理. CSV Data Set Config:被用来从文件中读取数据,并将它们拆分后存储到变量中,适合处理 ...

  9. JMeter学习笔记--详解JMeter逻辑控制器

    JMeter使用逻辑控制器来决定采样器的处理顺序 简单控制器(Simple Controller):存储设备(将某些采样器归组) 循环控制器(Loop Controller:设置循环次数 仅一次控制器 ...

  10. swoole学习(二)----搭建server和client

    1.搭建server 1.1搭建server.php 1.搭建websocket服务器,首先建立 server.php 文件, <?php $server = new swoole_websoc ...

随机推荐

  1. 面试官:请说一下Mysql事务实现原理

    在日常工作中,数据库是我们必须使用的,其中使用最多的也是大部分中小公司的选择是Mysql,跳槽面试中也是必问的,今天我们就说一下Mysql事务 MySQL中的事务实现原理主要涉及以下几个方面: ACI ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (49)-- 算法导论6.2 1题

    一.参照图6-2的方法,说明 MAX-HEAPIFY(A,3)在数组 A=(27,17,3,16,13,10,1,5,7,12,4,8,9,0)上的操作过程. 文心一言: 下面是 MAX-HEAPIF ...

  3. flutter中显示年月日、星期与时间

    代码 import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'dart:async'; imp ...

  4. 云图说丨Astro Canvas一站式数据可视化开发,分钟级构建业务大屏

    摘要:Astro大屏应用是Astro轻应用提供的可视化页面构建服务,提供了丰富的可视化组件.灵活的数据接入和多种方式页面构建能力,支持多屏适配,帮助开发者快速构建和发布专业水准的实时可视化应用. 本文 ...

  5. Solon v1.9.1,让 Java 快速启动

    相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) qps 高 2- 3 倍. (更高) 运行时内存节省 1/3 ~ 1/2. (更少) 打包 ...

  6. websocket群聊实战

    演示及源码地址: 演示地址:https://www.wchime.xyz/#/ 后端代码:https://gitee.com/mom925/wchime-web-api 前端代码:https://gi ...

  7. 图标闪烁CSS

    图标闪烁CSS代码 <!DOCTYPE html> <html> <head> <style> #markerDiv { position: absol ...

  8. 灵魂拷问std::enable_shared_from_this,揭秘实现原理

    参考博客: std::enable_shared_from_this原理浅析 引言 在C++编程中,使用智能指针是一种安全管理对象生命周期的方式.std::shared_ptr是一种允许多个指针共享对 ...

  9. #5702:Solving Order(结构体排序,水题)

    原题目链接 题目大意:把颜色由多到少进行排序,从大到小的输出. 解题思路:将变量存在结构体中,然后结构体排序即可.还需要注意格式的问题. 详见代码. #include <iostream> ...

  10. Python | 使用SVM支持向量机进行鸢尾花分类

    运行环境 Python: 3.7.1 库: sklearn (Python的机器学习工具箱) 目的: 根据鸢尾花的四个特征,对三种鸢尾花进行分类 数据(共150行,这里截取前6行,完整数据以及代码的下 ...