性能测试—JMeter 常用元件(二)
性能测试—JMeter 常用元件(二)
《零成本web性能测试》第三章 Web性能测试脚本录制与开发中JMeter常用测试元件
测试计划描述了JMeter运行时将会执行的一系列步骤,一个完整的测试计划包含一个或多个线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元件。
一、线程组
程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。其他的测试元件(如监听器)可以被直接放在测试计划之下,这些测试元件 对所有线程组都生效。线程组就像它的名字所描述的那样,被用来管理执行性能测试所需的JMeter线程。用户通过线程组的控制面板可以:
- 设置线程数量。
- 设置线程启动周期。
- 设置执行测试脚本的循环次数。
每一个JMeter线程都会完整地执行测试计划,而且它们之间是完全独立运行的。这种多线程机制被用来模拟服务器应用的并发连接。参数Ramp- Up Period告诉JMeter达到最大线程数需要多长时间。假定共有10个线程,Ramp-Up Period为100秒,那么JMeter就会在100秒内启动所有10个线程,并让它们运转起来。每一个测试线程都会在上一个线程启动10秒之后才开始 运行。假定共有30个线程,Ramp-Up Period为120秒,那么线程启动的间隔就为4秒。
Ramp-Up参数不能设定得太短,否则在测试的初始阶段会给予服务器过大的压力。Ramp-Up参数也不能设定得太长,否则就会发生第一个线程已经执行完毕,而最后一个线程还没有启动的情况(除非测试人员期望这种特殊情况发生)。
如何找到一个合适的Ramp-Up参数值?作者建议初始值可以设定为Ramp-Up=总线程数,后续再根据实际情况适当增减。
默认情况下,线程数、循环次数设定为1,方便调试,如果调试通过的话可根据实际情况进行增加数值。调度器配置可以设置“持续时间”和“启动延迟”
二、控制器
JMeter有两种类型的控制器:采样器和逻辑控制器,二者结合起来驱动了测试进程。采样器被JMeter用来向服务器发送请求。例如,当测试人员想往服务器发送一个HTTP请求时,就加入一个HTTP请求采样器。测试人员还可以通过为采样器添加配置元件来定制化请求。
用户可以使用逻辑控制器来控制JMeter的测试逻辑,比如何时发送请求。举一个例子:测试人员可以插入交替控制器来轮流发送多个请求。
1、采样器
采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。
JMeter采样器包含:FTP Request、HTTP Request、JDBC Request、Java object Request、LDAP Request、SOAP/XML-RPC Request、WebService(SOAP)Request
每一种采样器都有多种参数可供设置。测试人员还可以通过在测试计划中加入一个或者多个配置元件,来进一步定制化采样器。
如果测试人员打算向同一个服务器发送同一类请求,可以考虑使用默认配置元件。每一类采样器都有一个或多个对应的默认配置元件。一定记住应为测试计划添加一个监听器,以便查看和存储(存储到磁盘)请求的结果。
如果测试人员想检查服务器响应的内容,可以为对应采样器添加断言。例如,当对Web应用做压力测试时,服务器虽然成功返回了"HTTP Response"代码,但是页面上可能会有错误,或者丢失了部分页面片段。针对这种情况,测试人员可以添加断言来检查特定的HTML标签,或者常见的错 误信息等。JMeter允许在断言中使用正则表达式。
2、逻辑控制器
控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。
3、监听器
监听器提供了对JMeter在测试期间收集到的信息的访问方法。"图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还能以HTML和XML格式展示系统响应的基础部分。其他监听器通过总结或者聚合方式展示信息。
另外,监听器可以将测试数据导入到文件之中,以供后续分析。所有监听器都会提供一个输入域,以便于用户指定存储测试数据的文件。监听器还会提供一个 配置按钮,用来配置存储测试数据的哪些字段,以及选用的存储格式(CSV或者XML)。读者朋友需要注意的是,所有监听器都保存同样的数据,唯一的区别是 它们如何展示数据。
监听器可以在测试的任何地方添加,包括直接放在测试计划之下。它们仅收集测试树中相同或者更低级别测试元件的数据。
4、定时器
默认情况下,JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果测试人员不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
要在测试计划中的某个位置添加暂停,测试人员可以使用"Test Action"采样器。
5、断言
用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符。
例如,测试人员可以断言某个查询的响应中包含特定的文字信息。测试人员可以使用Perl格式的正则表达式来描述响应中应该包含的文字,或者它应该与整个响应相符。
测试人员可以为任何采样器添加断言。例如,测试人员可以为HTTP请求添加断言,用于检查文本""。接下来JMeter就会检查该文本是否出现在HTTP响应中。如果JMeter不能找到该文本,那么它就会将请求标记为失败。
需要注意的是,断言会影响作用域内的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项。
如果要查看断言结果,可以为线程组添加"断言结果"监听器。失败的断言,也会在"查看结果树"和"用表格查看结果"两种监听器中显示。另外,在"Summary Report"和"聚合报告"中还会以错误百分率的形式统计。
6、配置元件
配置元件与采样器紧密关联。虽然配置元件并不发送请求(除了HTTP代理服务器例外),但它可以添加或者修改请求。
配置元件仅对其所在的测试树分支有效。例如,假设测试人员在一个简单逻辑控制器中放置了一个HTTP Cookie管理器,那么该HTTP Cookie管理器只对放置在简单逻辑控制器内的其他逻辑控制器生效
另外,相比父分支的配置元件,子分支内部的配置元件优先级更高。配置元件 "用户定义的参数"会在测试的初始阶段执行(无论它处于测试树的哪个位置)。
7、前置处理器
前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。
8、后置处理器
后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。
JMeter 元件运行顺序
执行顺序逻辑如下:
1、配置元件(如果存在)
2、前置处理器(如果存在)
3、定时器(如果存在)
4、取样器(如果存在)
5、后置处理器(如果存在且取样器的结果不为空)
6、断言(如果存在且取样器的结果不为空)
7、监听器(如果存在且取样器结果不为空)
性能测试—JMeter 常用元件(二)的更多相关文章
- 性能测试—JMeter 常用元件(四)
<零成本web性能测试>第三章 Web性能测试脚本录制与开发中JMeter常用测试元件 测试计划描述了JMeter运行时将会执行的一系列步骤,一个完整的测试计划包含一个或多个线程组.逻辑控 ...
- Jmeter常用元件
1.测试计划:测试元件的容器,相当于一个项目名称 线程组: 2.监听器:负责收集测试结果,同时也被告知了结果显示的方式 (1)查看结果树:看具体某个请求——请求响应,结果明细 (2)聚合报告:汇总报 ...
- Jmeter Web 性能测试入门 (三):Jmeter 常用组件说明
线程组:用来设置并发的数量和模式.是用来模拟用户并发的组件.JMeter 的每个任务都是用线程来处理的. 线程数:要并发的请求数量. Ramp-Up Period: 在多次时间内把这些并发的请求发送完 ...
- Jmeter初步使用二--使用jmeter做一个简单的性能测试
经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...
- Jmeter基础元件
测试计划 1.Test Plan (测试计划) 用来描述一个性能测试,包含与本次性能测试所有相关的功能.也就说JMeter创建性能测试的所有内容是于基于一个计划的. 下面看看一个计划下面都有哪些功能模 ...
- Jmeter接口测试(二)工具介绍
一.Jmeter文件目录介绍 ◆ bin:可执行文件目录 Bin 目录文件 jmeter.bat:windows 的启动文件 jmeter.log:日志文件 jmeter.sh:linux 的启动文件 ...
- JMeter学习(二)工具简单介绍
一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- 性能测试之Jmeter学习(二)
一.Jmeter的基本操作 1.添加|移除测试元件 2.加载和保存测试元件 3.配置测试对中的测试元件 4.保存测试计划 5.运行测试计划 6.终止测试 7.错误报告 二.Jmeter体系结构 注释: ...
- 性能测试-Jmeter
缘由 很多情况下我们写程序过程中只会对固定模块采取并发限制,而且asp.net对于多线程也有他自己的处理机制,尤其对于注重业务,结果导向的团队可能更注重一定时间节点给出满意的产品,但是你的模块到底是否 ...
随机推荐
- Mysql 使用触发器,把插入的数据在插入到宁一张表里
CREATE TRIGGER tgr_tablea_insert AFTER //触发器名字 动作在插入数据之后 ON alertinfo //监听哪个表之后触发 FOR INSERT //监听的表的 ...
- react.js 各种小测试笔记
首先看一个 基础html 至于其中的 js 问价大家去官网下载就好了. <html> <head> <script src="../build/react.j ...
- 导入txt文件到SQL SERVER 2008
最近在学习数据库,想要试处理大量数据.大量的数据手动输入是不可能的了,所以需要导入.本人上网看了不少的教程,然后下载了txt格式的一万条彩票开奖记录数据.但是把这些数据导入到SQL Server 20 ...
- 在Qt中使用SQLite数据库
前言 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统. Qt5以上版本可以直接使用SQLite(Qt自带驱动). 用法 1 准备 引入 ...
- [C++] Const Summary (mind map)
Const Summary
- 读取mysq数据库l数据,并使用dataview显示
来自<sencha touch权威指南>,约198页开始 通过php脚本,可以将mysql数据库的数据作为json数据格式进行读取. (1)php代码(bookinfo.php): < ...
- linux的“自动化”-乾颐堂CCIE
linux系统的web网站在运营状态时,我们常需要对网站进行维护,例如查看资源剩余并做出响应.日志分割.数据整理,在特定状态执行特定任务等等,这些都会需要linux能实现自动执行某些任任务.本篇博文介 ...
- Mysql加载本地CSV文件
Mysql加载本地CSV文件 1.系统环境 系统版本:Win10 64位 Mysql版本: 8.0.15 MySQL Community Server - GPL Mysql Workbench版本: ...
- json日期格式话
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- osgQt支持触摸屏
1. osgQt的构造函数添加:setAttribute(Qt::WA_AcceptTouchEvents);//wyh 2. event()修改,支持触摸时间 bool GLWidget::even ...