APTM敏捷性能测试模型
随着应用系统的日趋复杂,仅在系统测试和验收测试阶段执行性能测试已经不能满足迟早发现和解决系统性能瓶颈的要求,Connie Smith博士和Lloyd Winlliams博士在他们提出 的软件性能工程(Software Performance Engineering)中建方将性能需求分解到应用单元(模块、接口、甚至是函数)。
相对于传统的开发过程,敏捷开发方法中测试工作与开发工作联系更紧密,更注重建立对应用的多层次、多角度的测试标准。
一、APTM的检查表
敏捷注重过程的灵活性,因此,APTM模型中,不倾向于定义严格的过程,而是使用检查表对敏捷性能测试进行指导。
检查表可以看作是敏捷性能测试的总体原则,APTM检查表的内容体现了敏捷性能测试中的倾向:在迭代中设立性能目标,通过性能测试验证性能目标;在各个层面上建立性能测试;尽可能通过自动化的方式建立敏捷环境下的性能测试环境。
检查表内容包括:
1. 每个迭代中是否有明确的性能测试任务?
并非每个迭代都需要在性能测试上花费许多时间,但不管怎样,在每个迭代中考虑性能测试任务(包括函数级别的性能测试)总是能够帮助开发团队更好地思考项目的性能要求。
2. 每个迭代的验收测试标准是否有性能验收测试标准?
迭代验收标准是指每个迭代都有一个明确的标准决定这个迭代是否可以结束,只有在测试标准中明确设置了具体的性能标准,性能要求才能在每个迭代中得到实现。 可以在不同的迭代中设定不同的性能标准。
3. 是否在单元、接口和系统级别设置了相应的性能测试?
APTM建议至少在单元、接口和系统3个层面设置相应的性能测试。
单元层面: 可通过对函数运行时间评估来进行,涉及到的依赖通过Mock 方式解决。
接口层面:设置接口的运行环境,在少量用户的情况下检查接口的性能 。
系统层面:接近生产环境的性能测试环境,通过模拟真实的用户负载来进行测试。
4. 是否已经建立合适的性能测试支持环境帮助实施各个层次的性能测试?
一般而言,性能测试支持环境包括持续集成环境、性能测试运行环境、基准比较环境和测试环境管理几个部分。
性能测试运行环境:由执行性能测试的工具构成,能够提供从单元级别的性能测试到系统级别性能测试的测试执行支持;
基准比较环境:与应用的分布式相关,在应用每次发布时对其主要性能指标进行验证,保证新发布版本的主要性能指标不比原有的版本差。
测试环境管理:提供各个层面性能测试环境的建立功能。包括Mock工具、数据生成工具、测试环境备份和恢复工具等。
5. 性能测试结果报告是否包含在反馈体系中?
uqf性能测试结果报告包含到反馈体系中可以大大提高性能测试的价值,帮助开发团队更好地管理性能 。将主要性能指标的测试包含到持续集成环中就是一个良好的实践。
二、APTM中的活动
1. 识别性能测试任务优先级
识别任务优先级是敏捷开发的每个迭代中首先要做的事情,根据其产生的价值决定加入哪些具体的性能测试任务。
是否在包含某个性能测试任务是由该任务的价值决定,需要首先了解项目的上下文、该被测系统以及性能测试的目标,可通过以下问题问题更好地了解。
a. 客户的期望是什么?客户希望以怎样的方式验证性能? 客户是否希望在每个迭代中对性能进行评估?
b. 发布流程是怎样的?性能测试需要关心哪些构建(持续集成、日构建、专为性能测试发布的构建、发布构建)?
c. 性能目标是如何被分解到每个迭代中的?开发工程师会在单元测试中包含性能验证吗?
d. 在本迭代中,团队最关心的事情是验证性能 、度量性能还是对性能进行调优?
e. 迭代中的任务优先级是发如何评估的?
2. 设置环境与执行测试
前面PTGM中设置环境与测试执行相关的内容同样适用于APTM,而单元和接口层面的性能测试使用的工具和技术与系统级别的性能测试有所不同,后面将详细讨论APTM中使用的工具。
3. 分析测试结果与报告
对测试结果的分析依赖于具体的测试目标。细粒度的性能测试,如函数级别的性能测试,结果分析非常简单,对系统级别的性能测试,结果分析是一个灵活的过程,很难给出一种具体的、能适应各种性能需要的统一的过程活动列表。
4. 在下一个迭代中重复步骤1~3
三、环境与工具
敏捷性能测试中的活动通常需要工具与环境的支持,下面进行说明。
1. 持续集成环境
在敏捷体系中,持续集成是一种最佳实践,提供了对产品质量的持续评估与反馈体系。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误。对敏捷性能测试来说,持续集成通过及时的反馈,保证性能测试成为持续的产品质量评估体系的一部分,从而使性能测试在敏捷过程中发挥更大的价值。
2. 测试执行环境
性能测试执行需要特定工具的支持,敏捷性能测试中由于覆盖了多个层面的性能测试,需要的性能测试工具也更多样。
a. 单元层面的性能测试工具
以java为例,从JUnit4开始就提供了函数级别的性能测试支持,在JUnit4中,通过Timeout标准可以达成对性能测试的支持。单元层面的性能测试往往需要Mock工具的支持,Mock工具可以减少应用对环境的依赖性,并增加性能测试的可靠性。
b. 接口层面的性能测试工具
依赖于应用接口的不同类型,需要选择不同的工具。
如HTTP接口: curl-loader;SOAP接口:SoapUI;REST接口:RestClient库和JMeter工具;
c. 系统层面的性能测试工具
如LoadRunner、JMeter等。
3. 基准比较环境
基准比较是指基于构建建立的一套比较机制,敏捷性能测试中在单元和接口层面,也许并不能在每个迭代中准确定义其或接受的标准,在这种情况下,保证“下一个版本的性能至少不比上一个版本更差”是一个可行的策略,该策略能够保证应用的性能一直具有良好的趋势。
4. 测试环境管理
对性能测试所需的软件和硬件环境进行维护,需要与产品的发布过程集成,需要使用自动化方式快速建立和恢复测试环境。在测试环境管理的具体方法上与PTGM相同。
APTM敏捷性能测试模型的更多相关文章
- 「视频直播技术详解」系列之七:直播云 SDK 性能测试模型
关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...
- 传统开发模型vs敏捷开发模型——过程模型的变革
一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...
- PGTM通用性能测试模型
PTGM通用性能测试模型 一. 测试前期准备阶段 目标: 1. 保证系统稳定性: 2. 建立合适的测试团队. 活动: 1. 系统基础功能验证 类似于BVT测试,确保被测系统已具备进行性 ...
- [置顶] SpecDD(混合的敏捷方法模型)主要过程概述
敏捷已成为当今使用最广泛的开发方法.有趣的是,敏捷方法的流行性并不是因为它取代了其他开发方法,相反它与这些方法进行了更好地融合.现实世界众多敏捷项目的成功,也证明了敏捷将走向杂化的未来. SpecDD ...
- 性能测试学习之二 ——性能测试模型(PV计算模型)
PV计算模型 现有的PV计算公式是: 每台服务器每秒平均PV量 =( (总PV*80%)/(24*60*60*40%))/服务器数量 =2*(总PV)/* (24*60*60) /服务器数量 通过定积 ...
- Jmeter 设置HTTP RPS性能测试模型
其实也挺简单的,主要是刚接触jmeter,记录一下. 1. 首先需要安装jmeter...真是废话... 2. 需要安装JMeterPlugins-ExtrasLibs-1.3.0.zip: JMet ...
- PTGM and APTM
1. 性能测试过程模型(PTGM) PTGM模型包括以下几个步骤: 测试前期的准备 测试工具的引入 测试计划 测试设计与开发 测试执行与管理 测试分析 测试前期准备:主要任务为保证系统稳定和建立合适的 ...
- 性能测试学习之三—— PV->TPS转换模型&TPS波动模型
PV->TPS转换模型 由上一篇“性能测试学习之二 ——性能测试模型(PV计算模型)“ 得知 TPS = ( (80%*总PV)/(24*60*60*(T/24)))/服务器数量 转换需要注意: ...
- 敏捷开发(Scrum)与敏捷测试
1.敏捷测试流程和传统测试流程 软件测试是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程,也是对软件产品质量持续的评估过程,其目的是尽快尽早地发现在软件产品(包括阶段性 ...
随机推荐
- Ubuntu 16.04下使用Wine安装Windows版的微信(不太完美)
说明: 真的不太完美,别试了:除了需要安装额外的输入法之后,无法上传图片和间接性的BUG出现等等问题. 建议安装网页版的微信:http://www.cnblogs.com/EasonJim/p/711 ...
- zerorpc的安装
1.简介及安装 rpc使构建分布式系统简单许多,在云计算的实现中有很广泛的应用 rpc可以是异步的 python实现rpc,可以使用标准库里的SimpleXMLRPCServer,另外zerorpc是 ...
- C++精华笔记
牛客微信推送的C++笔记:2016-12-12 14:23:26 1.C++不仅支持面向对象,也可以像C一样支持面向过程. 2.OOP三大特性:封装 继承 多态 3.函数重载依据:函数类型and形 ...
- source insight的查找功能
source insight是一款非常好的c语言的程序编辑器.方便对project管理,方便程序的阅读和编辑. 查找功能使用十分频繁.选项较多,与其他软件的查找功能也类似,以下对英文版的查找功能,做简 ...
- best-time-to-buy-and-sell-stock系列——先买入后卖出股票的最大值
1. Say you have an array for which the i th element is the price of a given stock on day i . If you ...
- iterm2 配色
http://blog.csdn.net/sanwuhai/article/details/48729561
- shell(1):网络配置、BATH环境和通配符
一.临时配置网络(ip,网关,dns) ifconfig查看网络配置 修改ip地址 ifconfig ens33 192.168.255.129/24 ens33网卡名称.192.168.255.1 ...
- tree related problems (update continuously)
leetcode Binary Tree Level Order Traversal 这道题是要进行二叉树的层次遍历.对于层次遍历,最简单直观的办法就是进行BFS.于是我们仅仅须要维护一个队列就能够了 ...
- 【转载】FAT32文件系统详解
硬盘是用来存储数据的,为了使用和管理方便,这些数据以文件的形式存储在硬盘上.任何操作系统都有自己的文件管理系统,不同的文件系统又有各自不同的逻辑组织方式.例如:常见的文件系统有FAT,NTFS,EXT ...
- Machine Learning: 一部气势恢宏的人工智能发展史
转载自:雷锋网 本文作者:陈圳 2016-09-12 09:46 导语:机器学习的从产生,发展,低潮和全盛的历史 雷锋网(公众号:雷锋网)按:本文作者DataCastle数据城堡,主要介绍了机器学习的 ...