一、性能测试技术
对于软件应用系统,仅仅从功能上满足用户的需求是不够的,还需要从性能方面更好地满足客户的需要。
性能尤其对于实时系统、嵌入式系统和在线服务系统要求更高些。这就要求我们做好系统的性能测试,以保证系统的高性能、高可用性。性能测试,一般都通过测试工具来模拟人为的操作而进行。性能测试的重点在于测试环境的建立、前期数据的设计与后期数据的分析。
本章重点讨论以下内容:
● 性能测试概述。
● 性能测试的实例剖析。
9.1 性能测试概述
9.1.1 性能测试的分类
性能测试主要分为基本性能测试和高级性能测试两个方面。
1.基本性能测试
基本性能测试的主要内容包括:安全可靠性测试、资源占用率测试、兼容性测试、易用性测试、用户文档测试、效率测试、可扩充性测试。
(1)安全可靠性测试
安全可靠性测试的示意如表9-1所示。
[图片]表9-1 安全可靠性测试
(2)资源占用率测试
资源占用率测试的示意如表9-2所示。
[图片]表9-2 资源占用率测试
(3)兼容性测试
兼容性测试的示意如表9-3所示。
[图片]表9-3 兼容性测试
(4)易用性测试
易用性测试的示意如表9-4所示。
[图片]表9-4 易用性测试
[图片](续表)
(5)用户文档测试
用户文档测试的示意如表9-5所示。
[图片]表9-5 用户文档测试
(6)效率测试
效率测试的示意如表9-6所示。
[图片]表9-6 效率测试
7)可扩充性测试
可扩充性测试的示意如表9-7所示。
[图片]表9-7 可扩充性测试
2.高级性能测试
高级性能测试的主要内容包括:并发性能测试、系统资源监控测试、大数据量测试、速度测试、疲劳测试等内容,其中,并发性能测试是重点。
(1)并发性能测试
并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。
并发性能测试及系统资源监控使用自动化负载测试工具及监控工具。
测试案例:中间件应能满足一定数量的前台客户端同时办公的需要。
测试内容与监控指标:负载压力测试、模拟不同数量并发用户测试。
模拟不同数量并发用户执行关键业务,测试系统能够承受的最大并发用户数,主要监控指标如下:
● 每分钟事务处理数(Transaction Rate):不同负载下每分钟成功完成的事务处理数。
● 响应时间(Response Time):服务器对每个应用请求的处理时间,单位为秒,该项指标反映了系统事务处理的性能,具体包括以下几项参数:Min表示最小的服务器响应时间;Mean表示平均的服务器响应时间;Max表示最大的服务器响应时间;StdDev表示事务处理服务器响应的偏差,值越大,偏差越大;Median表示中值响应时间;90%表示90%事务处理的服务器响应时间;虚拟并发用户数(Total Virtual Users)表示测试工具模拟的用户并发数量。
(2)系统资源监控测试
在进行负载压力测试的同时,利用测试工具对数据库服务器、Web服务器、应用服务器、认证及授权服务器上的操作系统、数据库以及中间件等资源进行监控。
监控系统资源指标,在测试中,根据测试需求以及测试环境的变化,选取有意义的数据进行分析。
(3)大数据量测试
测试案例:考虑系统未来发展需要的存储空间,添加大数据量测试。
测试内容:主要包括两个方面的内容,一是单独的数据量测试;二是与并发性能测试相结合的综合测试。测试数据的准备借助于测试数据管理与生成工具,例如FileAid。
(4)速度测试
测试案例:磁盘访问速度、备份速度以及网络办公系统运行速度等。
测试内容:主要是人工测试。
(5)疲劳测试
通常是采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。
9.1.2 性能测试的目的
产品性能决定产品是否达到产品规格书所要求的性能指标,性能测试的目的如下:
● 系统是否满足预期的性能要求。
● 作为对系统进行调试的参考。
● 系统的可扩展性。
● 利用性能测试手段发现系统存在的问题。
● 提供部署方案的参考。
9.1.3 性能测试的指标
性能测试的指标一般通过两种形式描述:产品需求指标和系统性能指标。
1.产品需求指标
产品需求指标是指以下内容:
● 给出产品性能的主要指标,如在100000记录中查询一个特定数据的时间为0.5秒。
● 以某个已发布的版本为基线,例如,比上一个版本的性能提高30%~50%。
● 和竞争对手的同类产品进行比较。
2.系统性能指标
系统性能指标是指以下内容:
● CPU利用率。
● 内存占用率。
● 磁盘I/O。
● 响应时间。
9.1.4 性能测试的内容
性能测试方案应包含以下内容:
● 对软件系统架构的分析(了解输入、输出数据的类型、数据量)。
● 性能测试组网图(网络环境说明)。
● 硬件环境说明。
● 测试范围、目的与方法。
● 性能测试工具的选型。
● 测试的启动/退出条件。
● 测试执行及测试结果分析。
9.1.5 性能测试的策略
性能测试的策略一般从需求设计阶段开始讨论制定,策略的内容决定着性能测试工作投入多少资源、什么时间开始实施等后继工作如何安排。决定性能测试的策略的主要因素如下。
1.指标性能
系统在需求分析、设计阶段和产品说明书等文档中明确的提出性能指标,这些指标是性能测试要完成的工作。
2.独立业务性能测试
独立业务主要是指软件产品的模块具有独立业务功能,在需求阶段就可以确定,要单独测试其性能。
3.业务性能组合测试
应用类软件系统通常不会使所有的用户只使用一个或者几个核心业务模块,可能是对多个业务进行组合使用,对多个业务进行组合性能测试。由于组合业务测试是最能反映用户使用系统的情况,因而业务性能组合测试是测试的核心内容。
4.疲劳强度性能测试
疲劳强度性能测试是在系统稳定运行的情况下模拟较大的用户数量,并长时间运行系统的测试,通过综合分析执行指标和资源监控来确定系统处理最大业务量时的性能,主要目的是为了测试系统的稳定性。
5.大数据量性能测试
大数据量性能测试是为了测试系统的业务处理能力进行的。
大数据量性能测试可分为两种,第一种是针对某些系统存储、传输、统计查询等业务进行的大数据量测试,主要是测试数据增多时的性能情况;第二种是极限状态下的数据测试,主要是指系统数据量达到一定程度时,通过性能测试来评估系统的响应情况,测试的对象也是某些核心业务或者日常常用的组合业务。
6.网络性能测试
网络性能测试主要是为了准确展示带宽、延迟、吞吐量、负载、瓶颈和端口的变化是如何影响用户的响应时间的。重点测试吞吐量指标,因为80%的系统性能瓶颈是由吞吐量造成的。
9.1.6 性能测试的方法
性能测试的方法主要有:能力验证、规划性能、性能调优、压力加载、性能下降曲线分析等。
1.能力验证
能力验证强调:系统具备的硬件设备、软件环境、网络条件、基础数据。能力验证将使用到可靠性测试、压力测试、失效恢复测试。
2.规划性能
规划性能关心的是要求系统具有的性能,强调系统配置,使系统能够满足增长的用户数的需要等问题。规划性能将使用到负载测试、配置测试、压力测试。
3.性能调优
性能调优关心的是要求系统确定基准环境、基准负载和基准性能指标;调整系统运行环境和实现方法;记录测试结果、进行测试分析。
4.压力加载
压力加载主要强调以下内容:
● 稳定压力加载。一次性将负载加到某个水平,并持续一段时间。
● 逐渐加载或交替加载到某个负载水平。
● 峰谷测试。确定从系统高峰时间的负载转为几乎空闲、再攀升到高负载这样峰值交替情况下的系统性能状态/指标。
5.性能下降曲线分析
性能下降曲线分析关心的是性能随着用户数的增加而出现下降趋势的曲线分析、查看性能下降的环境点与上下文,并确定性能阀值。性能曲线通过单用户区域、性能平坦区域、压力区域、性能拐点进行监控和分析。
9.2 性能测试的实例剖析
某部电子政务基础平台系统中5个重点业务应用系统的运行模式采用B/S结构,针对这种实际情况,现为某部电子政务基础平台的具体性能测试如下内容。
● 并发性能测试。
● Web站点质量分析。
● 应用故障定位。
● 测试策略。
下面详细论述每一种测试策略。
9.2.1 并发性能测试剖析
测试的基本策略是自动负载测试,通过模拟成百或上千的用户执行关键业务,对应用程序进行测试。通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能,确定问题所在,并优化系统性能。
并发性能测试的目的主要体现在三个方面:
● 评价系统当前性能。
● 预测系统未来性能。
● 通过重复测试寻找瓶颈问题。
1.评价系统当前性能
以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,并且能够提供图文并茂的分析报告及结果,主要的测试指标如下。
● 每分钟交易数(Trans Rate):负载测试过程中每分钟完成的交易数(成功),这项指标用来确定系统的实际交易负载。
● 交易响应时间(Response Time):服务器对每个应用请求的处理时间,单位为秒,该项指标反映了系统事务处理的性能。
2.预测系统未来性能
当要扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载。QALoad并不需要调用到最终用户或其设备,它能够仿真数以千计的用户进行商业交易,并确定应用响应时间,使之符合产品的服务等级要求。
3.寻找瓶颈问题
QALoad录制/回放功能提供了一种可重复式的方法来验证负载下的应用性能,可以很容易地模拟数千个用户,并执行和运行测试。利用QALoad反复测试可以帮助充分地测试容量的问题,快速确认性能瓶颈并优化和调整应用。
以帮助充分地测试容量的问题,快速确认性能瓶颈并优化和调整应用。
并发测试使用的测试工具是QALoad,它是由美国Compuware(康博)公司开发的自动化负载测试工具。软件针对各种测试目标提供了DB2、DCOM、ODBC、Oracle、NETLoad、Corba、QARun、SAP、SQL Server、Sybase、Telnet、TUXEDO、UNIFACE、WinSock、WWW等不同的测试接口(Session),支持Windows和Unix测试环境。该工具还能在性能测试的全过程中,自动地完整记录服务器各项资源的消耗情况,为最终的性能分析和调整提供全面的、真实的数据。
针对某部电子政务基础平台的应用系统,具有很多需要保证能够承载并发压力的关键点,例如:
● 安全系统平台中的证书审核注册,测试是否满足总局最大数量用户正常访问的需求。
● 安全系统平台中的证书查询验证服务系统,测试系统是否满足基本的LDAP查询和OCSP查询并发数。
● 安全系统平台中的密钥管理系统,针对按实际需要配置的密钥管理系统,测试受理点连接数、签发在用证书数目、密钥发放并发请求数是否满足基本业务需求。
● 安全系统平台中的集中式授权服务,测试系统是否满足基本授权服务并发数。
● 应用系统中大量的查询操作也是主要的并发压力承受点。
9.2.2 Web站点质量分析剖析
某部电子政务系统中5个重点应用系统的运行模式采用B/S结构,所以保证Web站点质量是至关重要的。利用站点测试工具,例如Compuware的WebCheck确保站点质量。测试过程中自动扫描Web站点不止50个的潜在问题类型,并且提供19个HTML报告。
Web站点质量分析的重点如下:
● 检查内部和外部连接中成功和失败的连接点,包括网站上不用的文件、网页丢失的图像标题标签和属性标签等。
● 分析网站的结构,包括显示和某个URL相关的连接及按照标题、描述、作者、大小、最后修改时间、类型为URL连接分类等。
● 可以提供HTML报告,内容包括警告错误、失效的URL、失效的页面等信息。
Web应用功能测试也是非常重要的,可使用Compuware的TestPartner测试基于浏览器的Web应用(Internet Explorer and Netscape)、测试COM组件。
9.2.3 应用故障定位剖析
基于Web的分布式应用性能分析对保证系统正常运行非常关键。
利用Compuware的Application Vantage,在真实网络环境下,基于Web和分布式的客户机/服务器应用,可以实现如下测试:
● 快速诊断、排除客户机/服务器、Web和多层应用问题。
● 测试跨越多个网段的活动过程。
● 提供有关应用效率的重要统计数据。
● 建立多种报告,为不同的部门提供共同的观察问题视点,便于在应用开发者、网络管理员和数据库管理员之间的交流、沟通和协调。
9.2.4 测试策略剖析
为基础平台和应用系统提供的测试策略还包括:疲劳性能测试、速度测试、数据量测试、对主机和网络的监控测试、安全控制、文件系统测试、用户测试、内存测试、交换区SWAP测试、打印机测试、CPU测试、进程测试、活动进程测试、对数据库及应用系统的监控等。
1.疲劳性能测试
测试电子政务系统在一定时间段内持续执行某一业务的性能,主要考察交易执行的响应时间以及成功执行的交易数。
2.速度测试
测试电子政务系统中某些业务点的执行速率,目的是保证满足需求以及提高系统的易用性。
3.数据量测试
数据量测试主要是针对电子政务中某些业务,测试在大数据量压力下系统的性能以及数据库的性能表现。
4.对主机和网络的监控
对主机和网络的监控主要包括以下方面的内容:
● 采集物理读/写和逻辑读/写的信息。
● 收集操作系统和其他平台上的磁盘忙信息。
● 监控I/O。
● 确定网络是否过载。
● 显示Internet地址、输入和输出的包量、网络连接等信息。
● 显示错误包的比例。
5.安全控制
进行安全控制时,主要查看以下方面的内容:
● 查找未设密码的用户。
● 检查所有设置成全局可写的文件。
● 列出所有访问根用户的信息。
6.文件系统测试
进行文件系统测试时,主要查看以下方面的内容:
● 显示每个文件系统的使用率,检测文件系统空闲空间的大小。
● 剪裁文件系统,即删除指定的Core文件和其他文件。
● 显示文件系统的mount on device、type、size等内容。
● 可以监控特殊的文件系统,如NFS、CD-ROM等。
● 检测特定文件的存在及超出特定期限的文件存在。
7.用户测试
进行用户测试时,主要查看以下方面的内容:
● 显示活动用户的Sessions。
● 监控现在签到的用户情况。
● 显示每个用户的打印任务、用户的进程和用户的磁盘空间。
● 显示用户的用户数目和Sessions数目等内容。
8.内存测试
进行内存测试时,主要查看以下方面的内容:
● 显示可用的内存数量。
● 决定当前的内存短缺量。
● 帮助分析内存问题。
● 显示内存的实存、所有虚存和Kernel的状态等信息。
9.交换区SWAP测试
进行交换区SWAP测试时,主要查看以下方面的内容:
● 列出SWAP设备。
● 显示从二级存储区交换到主存储区的进程数量。
● 监控已用的和空余的交换区的比例。
10.打印机测试
进行打印机测试时,主要查看以下方面的内容:
● 记录打印任务数。
● 显示打印机的device、printer state、queue state、number of jobs in queue等内容。
11. CPU测试
进行CPU测试时,主要查看以下方面的内容:
● 记录CPU的使用率。
● 监测CPU参数。
● 显示CPU的总数。
● 显示CPU处理系统任务和完成用户任务的时间比例。
12.进程测试
进行进程测试时,主要查看以下方面的内容:
● 识别消耗CPU最高的进程。
● 监控重要进程的状态。
● 标识内存使用最多的进程。
● 显示进程的进程数等信息。
● 识别僵死进程。
13.活动进程测试
进行活动进程测试时,主要查看以下方面的内容:
● 通过允许指定需要监控的进程和监控时间(如某参数到达警戒值)来改进监控条件。
● 显示kernel的kernel名和创建日期等信息,监控internal kernel tables的使用率。
14.对数据库及应用系统的监控测试
对数据库及应用系统的监控测试主要查看以下方面:
● 自动地管理数据库及数据库应用,监控数据库系统中关键的资源,一旦资源使用超过设定值则发出警报。帮助将关系数据库的运行调谐在最佳可靠性和最佳的性能表现上。
● 对数据库全天候不间断地监测。在监测到潜在的问题或者出错时发出警报和警告。
● 监测读写页面的使用情况,以便把对页面操作调谐到一个最佳水平。通过这一功能可以节省共享内存资源并且提高系统运行性能。
● 监控超出共享内存缓冲区的操作数,按照这个基准,可以对缓冲区进行额外的调整,以便更好地支持实际系统的运行需要,提高效率。
● 利用扩展的会话/用户检查以及参数控制功能发出警报,帮助发现过多的不合理顺序扫描操作。根据这些信息,可以分配附件的资源或者要求修改其应用程序以降低对系统资源的要求。可以制定更精确的资源容量计划,以便实现对现在和将来的业务运行需要。
● 跟踪逻辑日志的可用性,当达到预定的阀值时发出警告,以帮助尽快维护这一关键资源保持足够的可用空间。通过这项功能,可以保证数据库系统不因为日志空间问题而进入服务停顿状态。
● 监测上一轮询期间作业等待缓冲区的时间,帮助发现可能存在的并发性问题。通过一段时间的监测,可以得出系统的并发访问的需求和可用性基准参数。
● 跟踪共享内存中物理日志和逻辑日志的缓冲区的使用率,使我们能够准确地将其调谐到满足业务要求的最小状态,从而节省内存资源。有利于处理好内存容量计划、满足业务运行与增长的需要。
● 监控磁盘数据块的使用情况以及被频繁读写的热点区域。通过这些信息就可以较容易地平衡在磁盘上数据量的存储分配以及磁盘的I/O分配,有效地帮助我们作好磁盘容量规划并在当前的磁盘设备上有效地提高数据的读写效率。
● 根据用户事务或者表空间监控事务日志,通过这项监控,可以清晰地了解到重要作业对数据库存储、CPU操作和内存使用的情况,精确测算和分析现有资源,使之能够更好地适应对数据库的持续要求。
● 监控数据库锁资源,监测关键业务的数据表的表空间增长,当空间低于预定的阀值时发出警告。通过这项功能,可以有效地安排关键业务数据的存储,并且有效地防止因为数据空间不足导致关键业务停顿。
● 监控碎片大小和扩展块大小。
● 监控SQL执行情况。
● 根据监控的数据库的参数配置、监控的数据和分析的结果调整数据库的参数,使数据库运行在最佳的服务水平上。