『动善时』JMeter基础 — 8、JMeter主要元件介绍
JMeter的主要元件有测试计划
、线程组
、取样器
、逻辑控制器
、配置元件
、前置处理器
、后置处理器
、监听器
、定时器
、断言
。
其中共有8类可被执行的元件,test plan
(测试计划)和thread group
(线程组)不属于可被执行的元件,而sampler
(取样器)是不与其他元件发生交互的作用的元件。
下面我们就来逐一介绍一下这些元件。(这里只做介绍,后面会详细说明每一个元件)
1、测试计划(Test Plan)
用来描述一个性能/接口测试脚本和场景设计,包含与本次测试所有相关的功能。
也就是说,使用JMeter进行测试的所有内容,都是于基于一个测试计划中。
在换个说法,一个测试计划就对应一个JMeter测试脚本。
在JMeter-GUI
中,只能编辑一个测试计划,如果需要新创建一个测试计划,就要开启一个新的JMeter-GUI
窗口界面。
2、线程组<Threads(Users)>
线程组元件是任何一个测试流程的起始点,在一个测试计划中的所有元件都必须在某个线程组下。
JMeter自带的线程组,如下图所示:
上图可以看到,JMeter有三个添加线程组的选项,名字不一样, 但是创建之后,其界面是完全一样的。
线程组概括说明:
- 线程组是一个测试流程的起始点。
- 线程组中可以有多个线程。线程组也可以看作是一个虚拟用户组,线程组中的每一个线程都可以理解为相当于一个“虚拟用户”。
- 线程组中一个取样器代表一个请求,一个请求等同于一个线程。
- 每个线程都会独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。
- 线程组元件可以设置线程数、设置执行测试的次数等操作。
3、取样器(sampler)
取样器是用来模拟用户操作的,向服务器发送请求以及接收服务器的响应数据。
取样器是线程组内部的元件,也就是说取样器只能在线程组中添加。
取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元。(取样器通常要进行这三个工作)
取样器是按照测试计划树的顺序从上到下执行的。且取样器配合控制器使用,可以修改取样器的执行顺序和次数。
JMeter自带的取样器,如下图所示:
4、逻辑控制器(Logic Controller)
我们有编程基础的人都知道,提到逻辑主要就是条件和循环。
JMeter官网对逻辑控制器的解释是:Logic Controllers determine the order in which Samplers are processed.
意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序。
由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体,执行时也会一起被执行。
JMeter提供了17种逻辑控制器,它们各个功能都不尽相同,大致可分为2种类型:
- 一类是用于控制
test plan
(测试计划)中sampler
(取样器)节点发送请求的逻辑顺序的控制器,常用的有If Controller
、switch Controller
、Runtime Controller
、Loop Controller
(循环控制器)等。 - 另一类是用来组织可控制的
sampler
节点,也就是对测试计划中的取样器进行分组,方便JMeter统计执行结果,以及运行脚本时的控制操作等。 如Transaction Controller
(事务控制器)、Throughput Controller
(吞吐量控制器)等。
JMeter自带的逻辑控制器,如下图所示:
5、配置元件(Config Element)
JMeter的配置元件(config element
)用于提供对静态数据的配置支持,可以为取样器设置默认值和变量。
配置元件有很多的功能,读取文件数据,设置公共请求参数,赋予变量值等,以便后续取样器使用。
(类似于项目中配置文件的作用,如数据、地址、数据库链接等进行配置)
例如:性能测试中为了模拟大量用户操作我们往往需要做参数化, JMeter的参数化可以通过配置元件来完成,利用CSV Data Set config
(CSV数据文件设置)可以将本地数据文件形成数据池 (Data Pool),它可以帮助我们从文件中读取测试数据。
另外JMeter也提供了众多的函数来帮我们生成动态数据。(通过函数助手可以查看到,后续会讲到)
再例如,配置元件还可以用来记录服务器的返回数据,如HTTP Cookie Manager
可以用于对 HTTP Request Sampler
的 cookie
进行管理。
简而言之,配置元件是为取样器提供预备数据,然后由取样器发出请求。
JMeter自带的配置元件,如下图所示:
6、定时器(Timer)
用户实际操作时,并非是连续点击,而是存在很多停顿的情况,例如:用户需要时间阅读文字内容、填表、或者查找需要点击的链接等。为了模拟用户实际情况,在性能测试中我们需要考虑操作时间。若不认真考虑操作时间很可能会导致测试结果的失真。例如,估计的可支撑用户数可能会偏小。
在性能测试中,访问请求之间的停顿时间被称之为思考时间。
那么如何模拟这种停顿呢?我们可以借助JMeter的定时器元件实现。
JMeter中的定时器一般被我们用来设置延迟与同步(操作之间的等待时间)。定时器的执行优先级高于Sampler
(取样器),在同一作用域(例如控制器下)下有多个定时器存在时,每一个定时器都会执行,如果想让某一定时器仅对某一Sampler
有效,则可以把定时器加在此Sampler
节点下。
JMeter自带的定时器,如下图所示:
提示:定时器常用于控制客户端QPS的手段。
7、前置处理器(Per Processors)
前置处理器是在取样器发出请求之前执行一些操作。即:如果将前置处理器附加到取样器元件,则它将在该取样器元件运行之前执行。
前置处理器主要是用来处理,请求在实际发送之前的一些准备工作,比如取样器参数设置、环境变量设置、脚本预处理等操作。
例如:当URL中有sessionID一类的session信息时,可以通过该处理器填充发出请求实际的sessionID。
JMeter自带的前置处理器,如下图所示:
8、后置处理器(Post Processors)
用于对Sampler
发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner中的关联)。
例如:我们在做接口测试的时候,难免会遇到一个接口的请求参数是另一个接口的响应结果,这个时候就需要用到后置处理器来处理我们的请求参数。如系统登录成功后我们要获取sessionid
,在后面业务操作中服务器会验证这个sessionID
,获取sessionID
这个过程,就是用后置处理器中的正则表达式提取器来完成。
后置处理器常用于:处理响应数据,提取某个值。
JMeter自带的后置处理器,如下图所示:
9、断言(Assertions)
断言是自动化测试中最重要且绕不开的一个概念,让自己的程序尽可能像人一样去做判断,这是自动化测试需要实现的重要功能。
JMeter中的断言用于检查测试中得到的响应数据等是否符合预期,Assertions
一般用来设置检查点,用以保证性能测试过程中的数据交互与预期一致。(它的作用和LoadRunner中的检查点类似)
JMeter中断言的原理:在Request的返回层面,增加一层判断机制,因为Request成功了,并不代表结果一定正确。
一个Sampler
可以添加多个断言,根据你的检查需求来添加相应的断言,多个断言属于并的操作。当Sampler
下所有的断言都通过了,那么才算是请求成功。
JMeter自带的断言,如下图所示:
10、监听器(Listener)
JMeter中的监听器,是对测试结果进行处理和可视化展示的一系列组件,能够显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据。
常用的监听器有图形结果、查看结果树、聚合报告等。
注意:
- 监听器放的位置不同,查看的结果也不同。
在线程组下添加监听器,查看线程组下所有请求的结果;
放在具体某个请求下,只查看此请求的结果;
若放在某个控制器节点下,则查看此控制器下节点执行的结果; - 该监听器推荐做调试用,在实际运行压测时,应该禁用。因为大量请求时,启用监听器时打印的日志比较多,会造成大IO消耗,影响压力机性能。
- 不同的监听器,通过不同的方式,展示服务器响应信息,但是它们原始结果数据都是一样的。
- JMeter监听器有两种方式存储监听记录:
1)默认保存方式:CSV格式。占用磁盘比较少,推荐使用这种方式保存。
2)xml
保存方式:保存数据最全面,但是占用内存大。
JMeter自带的监听器,如下图所示:
参考:
『动善时』JMeter基础 — 8、JMeter主要元件介绍的更多相关文章
- 『动善时』JMeter基础 — 6、使用JMeter发送一个最基础的请求
目录 步骤1:创建一个测试计划 步骤2:创建线程组 步骤3:创建取样器 步骤4:创建监听器 步骤5:完善信息 步骤6:保存测试计划 步骤7:查看结果 总结:JMeter测试计划要素 当我们第一次打开J ...
- 『动善时』JMeter基础 — 58、JMeter分布式测试
目录 1.JMeter分布式测试概念 2.JMeter分布式测试前提条件 3.JMeter实现分布式测试 (1)在执行机中的配置 (2)在控制机中的配置 (3)启动执行机中的JMeter服务 (4)在 ...
- 『动善时』JMeter基础 — 1、JMeter介绍
1.什么是JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试.它最初被设计用于Web应用测试,但后来扩展到其他测试领域. (Apache ...
- 『动善时』JMeter基础 — 57、Linux系统中运行JMeter脚本
目录 1.Linux系统中安装Java环境 (1)解压Java安装包 (2)配置Java环境变量 (3)验证Java环境是否配置成功 2.Linux系统中安装JMeter (1)下载JMeter (2 ...
- 『动善时』JMeter基础 — 20、JMeter配置元件【HTTP Cookie管理器】详细介绍
目录 1.HTTP Cookie管理器介绍 2.HTTP Cookie管理器界面详解 3.JMeter中对Cookie的管理 (1)Cookie的存储 (2)Cookie的管理策略 4.补充:Cook ...
- 『动善时』JMeter基础 — 37、将JMeter测试结果写入Excel
目录 1.环境准备 (1)引入操作Excel文件的基础JAR包 (2)引入封装自定义操作Excel文件的JAR包 2.准备测试需要的数据 3.测试结果写入Excel演示 (1)测试计划内包含的元件 ( ...
- 『动善时』JMeter基础 — 40、JMeter中ForEach控制器详解
目录 1.什么是逻辑控制器 2.ForEach控制器介绍 3.ForEach控制器的使用 (1)测试计划内包含的元件 (2)获取学院列表请求内容 (3)JSON提取器内容 (4)ForEach控制器内 ...
- 『动善时』JMeter基础 — 41、使用JMeter连接数据库(MySQL)
目录 1.为什么要使用JMeter连接数据库 2.JMeter连接数据库的前提 3.JDBC连接配置组件界面介绍 4.JMeter连接数据库演示 (1)测试计划内包含的元件 (2)测试计划中添加链接数 ...
- 『动善时』JMeter基础 — 44、JMeter对数据库的更新操作
目录 1.执行一条insert语句 2.insert语句实现参数化 3.一次执行多条insert语句 4.使用Beanshell生成加密数据示例 (1)测试计划内包含的元件 (2)JDBC连接配置组件 ...
随机推荐
- 代理模式详解:静态代理、JDK动态代理与Cglib动态代理
代理模式简介分类 概念 代理,是为了在不修改目标对象的基础上,增强目标方法的业务逻辑. 客户类需要执行的是目标对象的目标方法,但是真正执行的是代理对象的代理方法,客户类对目标对象的访问是通过代 ...
- C# 基础 - 堆栈跟踪使用
使用一:可用于捕获报错时. using System.Diagnostics; ... StackTrace st = new StackTrace(true); string stackIndent ...
- Webpack 学习笔记(1) 开始
目录 参考资料 1. 基础设定 2. 创建一个包 3. 使用配置文件完成打包命令 4. 使用 NPM Scripts 完成打包命令 参考资料 Getting Started | Webpack web ...
- Scientific Internet Access
下载小飞机 https://github.com/shadowsocksr-backup 寻找ssr https://github.com/Alvin9999/new-pac/wiki/ss%E5%8 ...
- gstreamer应用开发(播放器)之旅
GStreamer开发,主要分为两块:应用开发.插件开发. 插件开发人员,通常是编解码库的作者(做出了编解码库后,希望gstreamer能用起来这个库,因此增加这个适配层).芯片原厂人员(将自家的hw ...
- JavaSE(一)
1.标识符 标识符是由数字,字母,下划线,$ 等进行命名的符号,但是不可以以数字开头: 标识符包含了关键字,变量名,他人定义,自己定义的. 2.关键字 关键字是指有特殊用途的符号.由以下50种构成 3 ...
- MongoDB 那些事(一文以蔽之)
前言 身边一直都有小伙伴在问:MongoDB到底是什么?它有到底什么特性?有什么与众不同?在什么情况下使用MongoDB最合适?以什么样的姿势是最好的?难道就一定要用吗?....说实话,这些问题都问到 ...
- ICMP主机探测过程
#1from scapy.all import * from random import randint from optparse import OptionParser #2 对用户输入的参数进行 ...
- 高精度减法(c++)
高精度减法 每当要进行精度较高的运算时,就要用到高精度. 下图是各个类型的数值范围: 如果想不起各个类型占多少字节,可以采用下面的方法: printf("%d %d",sizeof ...
- 敏捷史话(十四):敏捷之峰的攀登者 —— Jim Highsmith
"我们希望,一起组成的敏捷联盟能够帮助到其他同行,帮他们用新的更'敏捷'的方式去思考软件开发.方法论和组织.做到这一点,我们就得偿所愿了."Jim Highsmith 在雪鸟会议结 ...