通用性能测试过程模型GAME(A)
1.3.1 Goal(定义目标)
制定一个明确而详细的测试目标是性能测试开始的第一步,也是性能测试成功的关键。
本步骤的开始时间:需求获取阶段
本步骤的输入:性能需求意向
本步骤的输出:明确的性能测试目标和性能测试策略
常规的性能测试目标有以下几种:
(1)度量最终用户响应时间
查看用户执行业务流程以及从服务器得到响应所花费的时间。例如,假设我们想要检测:系统在正常的负载情况下运行时,最终用户能否在20秒内得到所有请求的响应。图1-6显示了一个银行应用程序的负载和响应时间度量之间的关系。
![]() |
图1-6 用户数-响应时间关系图 |
(2)定义最优的硬件配置
检测各项系统配置(内存、CPU速度、缓存、适配器、调制解调器)对性能的影响。了解系统体系结构并测试了应用程序响应时间后,您可以度量不同系统配置下的应用程序响应时间,从而确定哪一种设置能够提供理想的性能级别。
例如,您可以设置三种不同的服务器配置,并针对各个配置运行相同的测试,以确定性能上的差异:
配置1:1.2GHz、1GB RAM
配置2:1.2GHz、2GB RAM
配置3:2.4GHz、1GB RAM
(3)检查可靠性
确定系统在连续的高工作负载下的稳定性级别。强制系统在短时间内处理大量任务,以模拟系统在数周或数月的时间内通常会遇到的活动类型。
(4)查看硬件或软件升级
执行回归测试,以便对新旧版本的硬件或软件进行比较。您可以查看软件或硬件升级对响应时间(基准)和可靠性的影响。注意:此回归测试的目的不是验证升级版的新功能,而是查看新版本的效率和可靠性是否与旧版本相同。
(5)确定瓶颈
您可以运行测试以确定系统的瓶颈,并确定哪些因素导致性能下降,例如,文件锁定、资源争用和网络过载。将LoadRunner与新的网络和计算机监视工具结合使用以生成负载,并度量系统中不同点的性能,最终找出瓶颈所在的位置。
(6)度量系统容量
度量系统容量,并确定系统在不降低性能的前提下能提供多少额外容量。如图1-7所示,要查看容量,您可以查看现有系统中性能与负载间的关系,并确定出现响应时间显著延长的位置。该处通常称为响应时间曲线的“拐点”。
![]() |
图1-7 用户数-响应时间拐点图 |
我们根据不同的测试目标去选择合适的性能测试设计策略。比如,“度量最终用户响应时间”可以采用负载测试策略,“检查可靠性”就可以用压力测试策略,等等。
1.3.2 Analysis(分析)
本步骤的开始时间:需求分析阶段和性能测试启动阶段
本步骤的输入:性能需求
本步骤的输出:达成一致的性能指标列表,性能测试案例文档
1.分析性能需求
在这里,要定义性能测试的内容,细化性能需求。
客户、需求分析人员和测试工程师一起起草一个性能需求标准,对此标准获得一致认同。此标准将用户的需求细化、量化,并能在测试中作为判断依据。
比如,对于负载测试来说,可以从以下角度来细化需求,逐步找出测试关键点。
测试的对象是什么,例如“被测系统中有负载压力需求的功能点包括哪些?”;“测试中需要模拟哪些部门用户产生的负载压力?”等问题。
系统配置如何,例如“预计有多少用户并发访问?”;“用户客户端的配置如何?”;“使用什么样的数据库”;“服务器怎样和客户端通信?”。
应用系统的使用模式是什么,例如“使用在什么时间达到高峰期?”;“用户使用该系统是采用B/S运行模式吗?”;“网络设备的吞吐能力如何,每个环节承受多少并发用户?”等问题。
最后得出的性能测试指标标准至少要包含测试环境、业务规则、期望响应时间等。
2.分析系统架构
对硬件和软件组件、系统配置以及典型的使用模型有一个透彻的了解。结合性能测试指标标准,生成性能测试用例。(可参看第10章“进阶LoadRunner高手”的用例设计部分。)
1.3.3 Metrics(度量)
本步骤的开始时间:性能测试设计阶段
本步骤的输入:细化的性能指标和性能测试案例
本步骤的输出:和工具相关的场景度量、交易度量、监控器度量和虚拟用户度量等
度量是非常重要的一步,它把性能测试本身量化。这个量化的过程因测试工具的不同而异。
(1)场景的定义,pass/fail的标准
测试场景包含了性能测试的宏观信息,有测试环境、运行规则和监控数据等。具体可表现为历史数据记录数、虚拟用户数、虚拟用户加载方式、监控指标等。
(2)事务(Transaction)的定义,pass/fail的标准
事务用来度量服务器的处理能力。事务定义应该从性能指标标准而来,是性能指标的具体体现。事务的定义是很重要的,不同的定义会导致不同的TPS结果。
使用性能测试工具执行性能测试之后,我们能看到的是pass/fail的用户数、pass/fail的事务数。而这些pass/fail的标准应该 在执行性能测试之前就应该被定义好。比如,LoadRunner默认的pass/fail标准是基于协议层的,而我们要的pass/fail可能是业务级 的,需要在业务层上进行判断来决定是pass还是fail。另外,还可能由于案例的关联性引起的pass/fail,如果两个案例之间有关联,A脚本负责 向数据库插入数据,B脚本负责查询数据,A要是fail了,导致B也会fail,虽然B本身不一定有错。解决这个问题,一方面可以削弱脚本之间的关联性, 另一方面也可以通过增强脚本的健壮性来达到。
(3)虚拟用户pass/fail的标准
虚拟用户是性能测试工具中的一个普遍的概念,虚拟用户负责执行性能测试脚本,在这里应该定义虚拟用户遇到何种情况,选择fail或pass,即退出或通过。
1.3.4 Execution(执行)
本步骤的开始时间:软件测试执行阶段
本步骤的输入:场景、交易、虚拟用户等设置信息
本步骤的输出:测试报告
执行测试包含两个工作:
1.准备测试环境、数据和脚本
测试环境:硬件平台和软件平台。
测试数据:包括初始测试数据和测试用例数据两部分。表现为SQL脚本、Excel文件等。
测试环境直接影响测试效果,所有的测试结果都是在一定软硬件环境约束下的结果,测试环境不同,测试结果可能会有所不同。需要注意:如果是完全真实的 应用运行环境,要尽可能降低测试对现有业务的影响;如果是建立近似的真实环境,要首先达到服务器、数据库以及中间件的真实,并且要具备一定的数据量,客户 端可以次要考虑。实施负载压力测试时,需要运行系统相关业务,这时需要一些数据支持才可运行业务,这部分数据即为初始测试数据。有时为了模拟不同的虚拟用 户的真实负载,需要将一部分业务数据参数化,这部分数据为测试用例数据。
测试脚本:用性能测试工具生成脚本。
2.运行场景和监控性能
运行性能测试场景,并监控设定好的数据指标,最终生成测试报告。按照定义好的场景pass/fail标准来判断性能测试是否通过。如果未能通过,进入步骤5(Adjust)。
1.3.5 Adjust(调整)
本步骤的开始时间:第一轮性能测试结束后,而且没有通过的条件下
本步骤的输入:测试报告和测试结果数据
本步骤的输出:性能问题解决方案
调整包含两个意思:应用程序修改和中间件调优。
中间件调优可考虑如下因素操作系统调优:
数据库调优;
内存升级;
CPU数量;
代码调优;
Cache调优。
解决一个性能瓶颈,往往又会出现另外的瓶颈或者其他问题,所以性能优化更加切实的目标是做到在一定范围内使系统的各项资源使用趋向合理和保持一定的平衡。
系统运行良好的时候恰恰也是各项资源达到了一个平衡体,任何一项资源的过度使用都会造成平衡体系破坏,从而造成系统负载极高或者响应迟缓。比如
CPU过度使用会造成大量进程等待CPU资源,系统响应变慢,等待会造成进程数增加,进程增加又会造成内存使用增加,内存耗尽又会造成虚拟内存使用,使用
虚拟内存又会造成磁盘IO增加和CPU开销增加(用于进程切换、缺页处理的CPU开销)。
从以上内容可以看出,目前GAME(A)模型有两个优势:第一,灵活,每个过程都有自己的关注点,可以根据不同的项目特点增加或删除关注点;第二,
通用,不依赖于具体的工具。目前GAME(A)关注性能测试技术,比较简单,将来可以进行扩展,同样使用GAME(A)模型关注性能测试的时间、人力等资
源问题。
通用性能测试过程模型GAME(A)的更多相关文章
- PGTM通用性能测试模型
PTGM通用性能测试模型 一. 测试前期准备阶段 目标: 1. 保证系统稳定性: 2. 建立合适的测试团队. 活动: 1. 系统基础功能验证 类似于BVT测试,确保被测系统已具备进行性 ...
- GAME(A)性能测试过程模型
- PTGM and APTM
1. 性能测试过程模型(PTGM) PTGM模型包括以下几个步骤: 测试前期的准备 测试工具的引入 测试计划 测试设计与开发 测试执行与管理 测试分析 测试前期准备:主要任务为保证系统稳定和建立合适的 ...
- Android--app性能问题的总结(一)
一个应用程序的性能问题体现在很多方面,app的性能问题,很大程度上决定了使用app的用户量,如果正在使用app的过程中出现app崩溃.卡顿半天加载不出数据(跟网络也有一定的关系).用户请求事件半天获 ...
- Android自动化页面测速在美团的实践
背景 随着移动互联网的快速发展,移动应用越来越注重用户体验.美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度.如果发生冷启动时间过长.页面渲染时间过长. ...
- 高能福利 |"荐"者有份,有"福"同享
WeTest 导读 越来越多的开发者加入WeTest大家庭了,感谢大家一直以来的支持,WeTest又有新一步“大福利”赠送了! 即日起,参加WeTest用户推荐有礼活动,推荐者和被推荐者皆可获得福利. ...
- UPA深度性能报告解读
WeTest 导读 UPA作为腾讯WeTest与Unity官方联合打造的客户端性能分析工具,为开发者提供了极大的便利和效能提升.产出的分析报告内容详尽,但您是否真的读懂了报告?是否了解每项数据的含义? ...
- Web性能测试通用标准
性能指标 通过 不通过 备注 响应时间 <期望时间 >期望时间 1.所有性能指标期望值是根据性能测试申请单取值: 2.响应时间2-5-8原则: 响应时间在2-5秒内,系统的响应速度比较快: ...
- Testing - 软件测试知识梳理 - 软件性能测试
软件性能测试的基本概念 软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是软件在完成该功能时展示出来的及时性. 软件性能的指标 响应时间:是指系统对请求作出响应的时间,并且 ...
随机推荐
- MSS & MTU
- Linux系统扩容根目录磁盘空间
作者:非法小恋 一.使用背景 Linux根目录磁盘空间不够用了,当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘,但是发现系统里的大小还是没改变. 产生的原因是没有给磁盘格式化,没有增加分区. 二. ...
- android的通知栏的实现
package com.example.mynotification; import android.os.Bundle; import android.app.Activity; import an ...
- keil写STM32程序出现literal treated as "long long"
在Keil MDKARM中 unsigned int value2=0x80000000; unsigned int value4=2147483648; value2编译时不产生警告,而value4 ...
- 跨服务器查询信息的sql
--跨服务器查询信息的sql: select * from openrowset( 'SQLOLEDB', '192.168.1.104'; 'sa'; '123.com',[AutoMonitorD ...
- systemctl 配置mysql 开机启动
在centos 7 环境下对服务的管理已经不再用service 命令了,而是改为systemctl 命令来管理服务. 一.创建systemctl 的对mysql服务的配置文件: touch /usr/ ...
- Hadoop知识汇总
Hadoop的两大功能:海量数据存储和海量数据分析 Hadoop2的三大核心组件是:HDFS.MapperReducer和yarn 1.HDFS:分布式文件系统海量数据存储 2.MapperReduc ...
- mysql 导入导出数据库、数据表的方法
mysql 导入导出数据库.数据表的方法. Linux操作系统中,均在控制台下操作.1,导入数据库:前提:数据库和数据表要存在(已经被创建)(1)将数据表 test_user.sql 导入到test ...
- 云中的机器学习:FPGA 上的深度神经网络
人工智能正在经历一场变革,这要得益于机器学习的快速进步.在机器学习领域,人们正对一类名为“深度学习”算法产生浓厚的兴趣,因为这类算法具有出色的大数据集性能.在深度学习中,机器可以在监督或不受监督的方式 ...
- 算法5-6:Kd树
问题 给定一系列的点.和一个矩形.求矩形中包括的点的数量. 解答 这个问题能够通过建立矩阵来进行求解.首先将一个空间切割成矩阵,将点放置在相应的格子中.再计算矩形覆盖的格子.再推断格子中的点是否包括在 ...