性能测试
性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行的一种测试。
系统的性能是个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。
用户视角的软件性能
从用户角度来说,软件性能就是软件对用户操作的响应时间。
管理员视角的软件性能
系统的响应时间;
系统运行时服务器的状态,如CPU利用情况、内存使用情况等;
系统是否能够实现扩展;
系统支持多少用户访问;
系统性能可能的瓶颈在哪里;
系统是否支持7*24小时的业务访问。
产品开发人员视角的软件性能
用户关心的响应时间;
管理员关心的系统可扩展性等;
架构设计是否合理;
数据库设计是否合理;
代码是否存在性能方面的问题;
系统中是否有不合理的内存使用方式。
性能指标介绍并发用户数是指在某一给定时间内,某个特定点上进行会话操作的用户数。
响应时间指的是客户端发出请求到得到响应的整个过程所经历的时间。
吞吐量是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。
一般来说,吞吐量用请求数/秒或页面数/秒来衡量,从业务的角度,吞吐量也可以用访问人数/天或处理的业务数/小时等单位来衡量。从网络的角度来说,也可以用字节数/天等单位来考察网络量。
资源利用率是指系统资源的使用程度,比如服务器的CPU利用率、内存利用率、磁盘利用率、网络带宽利用率等。性能测试类型
负载测试:主要用于描述常规的性能测试,通过模拟生产运行的业务压力和使用场景组合来测试系统的性能是否满足生产要求。通俗的说,这种测试方法就是要在特定的运行条件下验证系统的能力状况。
压力测试:对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收用户请求的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,
压力测试是为了发现在什么条件下应用程序的性能会变得不可接受。
用户量压力测试
数据量压力测试
疲劳强度测试通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。
疲劳强度测试可以反映出系统的性能问题,例如内存泄漏等。
性能测试过程
测试需求分析
测试需求分析主要有以下的几个关键点:
测试的目的是什么
性能符合性验证:验证是否满足应用的需要。
性能能力验证:确定性能极限、是否存在性能瓶颈。
性能调优:对系统的性能进行调试、优化。
测试要素分析:
用户数量
测试执行的功能
用户分布(即执行每种功能的用户数)
硬件环境(包括网络环境)
软件环境
数据量
其它分析
系统运行中所出现的问题有什么特征或规律
疲劳测试执行时间多少
性能需求的指标是什么等制定测试策略
测试目的不同,则相应的测试策略不同。
性能符合性验证—负载测试、疲劳强度测试。
性能能力验证—压力测试、疲劳强度测试。
性能调优—测试-调整-测试。负载测试、压力测试、疲劳强度测试。
制定测试方案
测试需求
测试策略
测试场景
测试环境
测试准备
人员及时间安排
问题与对策
执行测试方案
搭建测试环境
录制脚本、编辑脚本
布置测试场景
执行测试场景
测试结果分析
性能符合性验证:查看测试结果是否满足要求,比如响应时间、资源利用率、吞吐量等等。
性能能力验证:查看测试结果是否满足要求,记录软件系统的性能变化曲线。
对于确定是否存在性能瓶颈,首先判断是否存在硬件(包括网络)瓶颈问题,若不存在硬件瓶颈问题,则按照应用软件到系统软件(应用服务器、数据库服务器、操作系统)的顺序进行分析,确定瓶颈点。
性能调优:同性能能力验证确定性能瓶颈分析方法。
硬件瓶颈分析方法
内存分析方法
处理器分析方法
磁盘I/O分析方法
网络分析方法
内存分析方法
1.首先查看可用内存(Memory\AvailableMbytes)计数器指标。若值较小则可能有内存问题,需进一步分析。
2.注意Pages/sec、PagesRead/sec和PageFaults/sec计数器的值。Pages/sec和PageFaults/sec的值持续很高,很可能内存问题,若PagesRead/sec的值超过5,则可判断存在内存问题。
3.根据PhysicalDisk计数器的值分析性能瓶颈。如果磁盘的AverageDiskQueueLength计数器增加的同时PagesRead/sec并未降低,则可判断内存有问题。处理器分析方法
1.首先查看System\%TotalProcessorTime计数器的值。该值体现的是CPU的平均利用率,若超过90%,则说明存在处理器方面的瓶颈。
2.其次查看每个CPU的Processor\%UserTime计数器的值。若应用服务器的%UserTime值较大,可以考虑是否能通过算法优化等方法降低这个值。若数据库服务器的%UserTime值较大,可考虑对数据库系统进行优化。
3.查看System\ProcessorQueueLength计数器的值。当该值大于CPU数量的总数+1时,说明存在处理器方面的问题。
磁盘I/O分析方法
1.查看%DiskTime计数器的值。该值较大,则可能存在磁盘瓶颈问题。
2.与Processor\PrivilegedTime合并进行分析。若%DiskTime值较大,而Processor\PrivilegedTime的值适中,则可判断存在磁盘问题。若Processor\PrivilegedTime较大,持续超过80%,则可能是内存泄漏。
3.根据Disksec/Transfer进行分析。该值超过60ms,则磁盘存在问题。
网络分析方法
1.查看NetworkInterface\BytesTotal/sec计数器的值。用BytesTotal/sec计数器的值和网络的带宽进行比较,若超过50%,则说明网络存在性能瓶颈问题。
软件瓶颈分析方法
分析事务响应时间、吞吐量,确定是否存在性能问题,若发现存在性能问题,则找出响应时间不符合要求或者出现多个失败的事务,对其进行分解,然后对其进行网页细分,以确定影响性能的元素。
编写测试报告
测试指标:描述与测试场景对应的事务平均响应时间、事务吞吐率、资源消耗指标、运行的用户数等信息。
结果分析与总结:根据测试目标,描述最后分析得到的结果,并给出相应的建议。
常见性能测试工具介绍
CompuWare公司的QALoad;
MercuryInteractive公司的LoadRunner;
1、简介
LoadRunner是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能检测来确认和查找问题,能够对整个企业架构进行测试。通过使用Loadrunner,企业能够最大限度的缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner能支持广范的协议和技术,功能比较强大,可以为特殊环境提供特殊的解决方案。
2、特征
1)轻松创建虚拟用户;
2)创建真实的负载;
3)定位性能问题;
4)分析结果以精确定位问题所在;
5)重复测试保证系统发布的高性能;
6)支持EnterpriseJavaBeans的测试;
7)支持无线应用协议;
8)支持MediaStream应用。
Microsoft公司的WAS;
RadView公司的WebLoad;
IBM公司的RPT;
开源工具:OPENSTA等。
性能测试工具的选择(如何选择一种商业工具)
需要注意的几点:
工具是否支持被测系统运行的平台(软硬件环境、数据库环境);
工具能否支持被测系统使用的协议;
工具是否能够支持我们的特殊要求,如防火墙、负载均衡等;
工具是否能够提供对我们关心的服务器类型计数器的监控;
工具的价格。