性能测试的概念
一般来说,性能是一种指标,表明软件系统或构件对其及时性要求的符合程度;其次,性能是软件产品的一种特性,可以用时间来进行度量。性能的及时性用响应时间或吞吐量来衡量。响应时间是指服务器对请求作出响应所需要的时间。
系统性能包括时间和空间两个维度,时间是指客户操作业务的响应时间,空间是指系统执行客户端请求时,系统资源消耗情况。客户关注的性能只是时间的表现,客户不关注是什么原因引起的性能问题,但性能测试工程师和系统工程师就必须关注系统资源使用的情况。
性能测试是测试系统端到端(即客户端发送请求经过服务器将信息返回的过程)的性能指标,目前在系统设计阶段无法设计出一个定量性能的系统,即开发工程师无法保证设计好的系统其性能表现如何,还是得靠测试来验证性能的表现,性能测试是一系列的测试过程。在系统投入到市场之前,必须对系统的性能进行测试,否则无法确定系统的性能是否能满足客户的需求。
性能测试自动化
手工进行性能测试存在诸多困难,如图16-1 所示。
1、消耗大量的测试资源(主要包括测试人员和测试机器的成本)。
2、如何保证并发测试?
3、如何收集测试结果?
4、如何重复执行该测试?
需要使用性能测试工具来代替手工测试,即性能测试自动化的过程,自动化性能测试是利用人员、流程和技术来减少应用程序部署、升级或补丁部署过程中的风险的方法。自动化性能测试的核心是将生产工作量应用到部署前的系统,同时测量系统性能和最终用户体验。
自动化性能测试解决方案应该能够解决以下问题:
1、模拟成百上千个用户与系统交互,而无需过多的硬件需求。
2、 测量最终用户响应时间。
3、 监控负载系统组件。
高效的自动化测试解决方案(即性能测试工具)通常使用四个主要组件来构建并运行测试:
1、 虚拟用户生成程序,用于将最终用户业务流程捕获到自动化脚本中。
2、 监视器,用于组织、驱动、管理和监控负载。
3、 负载生成程序,用于在执行时运行虚拟用户。
4、 分析引擎,用于查看、剖析和比较结果。
结构完善的性能测试应该能够回答以下问题:
1、 应用程序对目标用户响应是否够迅速?
2、 应用程序是否能够处理预期的用户负载以及更多的负载?
3、 应用程序是否能够处理业务所需要的大量交易?
4、 应用程序在预期或非预期的用户负载下是否稳定?
5、 在投入使用时用户是否具有积极的体验(即快速响应时间)?
主流性能测试工具
目前市场上的性能测试工具较多,主流的性能测试工具有LoadRunner、QALoad、SilkPerformer和Rational Performance Tester。这类都为负载性能测试工具,其原理都相同。首先是录制脚本,通过录制脚本,性能测试工具通过协议来获取客户向服务器端发送的内容;接着通过回放脚本,将录制好的内容进行回放,来模拟多用户同时向被测试系统发送请求,以达到并发测试的目的;最后性能测试工具将收集到的测试数据保存到数据库中,通过分析器生成相关的视图达到性能测试的目的。
下面就这几款主流性能测试工具进行简单的介绍:
(1)LoadRunner
LoadRunner 是一种预测系统行为和性能的负载测试工具。可以模拟上千万用户并发负载并实时监测系统性能的方式来确认和查找问题。LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
当前最新版本为11.0 版,生产厂商Mercury(美利科)已于2006 年被HP(惠普)收购。
LoadRunner 支持的协议如下:
1)自定义:C Vuser、VB Vuser、VBScript Vuser、/VB.NET Vuser、Java Vuser、JavaScript Vuser。
2)电子商务:Action Message Format(AMF)、AJAX(Click and Script)、File Transfer Protocol (FTP)、Flex、Listing Directory Service(LDAP)、Microsoft .NET、Web(Click and Script)、Web(HTTP/HTML)、Web Services。
3)客户端/服务器:DB2 CLI、Domain Name Resolution(DNS)、Informix、MS SQL Server、 ODBC、Oracle(2-Tier)、Sybase CTlib、Sybase DBlib、Windows Sockets。
4 )ERP/CRM :Oracle NCA 、Oracle Web Applications 11i 、PeopleSoft Enterprise 、Peop leSoft-Tuxedo、SAP-Web、SAP(Click and Script)、SAPGUI、Siebel-Web。
5)邮件服务:Internet Messaging(IMAP)、MS Exchange(MAP)、Post Office Protocol(POP3)、Simple Mail Transfer Protocol(SMTP)。
6)中间件:Tuxedo、Tuxedo 6。
7)无线服务:i-Mode、Multimedia Messaging Service(MMS)、WAP。
8)流媒体:Media Player(MMS)、Real。
(2)QALoad
QALoad 是客户/服务器系统、企业资源计划(ERP)和电子商务应用的自动化负载测试工具。QALoad 是QACenter 的一部分,它通过可重复的、真实的测试,能够彻底地度量应用的可扩展性和性能。QACenter 汇集完整的跨企业的自动测试产品,专为提高软件质量而设计。QACenter 可以在整个开发生命周期,跨越多种平台自动执行测试任务。在投产准备时期,QALoad 可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试,并针对所发现的问题对系统性能进行优化,确保应用的成功部署。当前最新版本为5.6 版,生产厂商为Compuware(康博)公司。
QALoad 支持的协议如下:
通信层:Winsock、IIOP、WWW、WAP、Net Load。
数据层:ODBC、MS SQL Server、Oracle、Oracle Forms Server、Sybase、DB2、ADO。
应用层:SAP、Tuxedo、Uniface、QARun、Java。
(3)SilkPerformer
SilkPerformer 是业界领先的应用性能测试解决方案,它支持目前业界主流应用平台,通过成千上万的虚拟用户来模拟生产环境可能遇到的各种真实负载场景,帮助用户快速定位可能存在的性能瓶颈,同时提供诊断、分析能力帮助开发、测试团队快速修复应用性能问题,为应用发布决策提供有力的信息支撑,加速产品发布。当前最新版本为7.0 版,生产厂商为Micro Focus 公司。
SilkPerformer 支持的协议如下:
1)主流数据库访问协议:ODBC、ADO、Oracle OCI、IBM CLI。
2)主流协议:HTTP(S)、SMTP/POP、MAPI、FTP、LDAP、WAP、MMS、Radius、TCP/IP、UDP、SSL、SOAP(XML)、i-Mode。
3)流媒体技术:Macromedia Flex/AMF、Streaming(MS, Real)。
4)主流接口和应用框架:CORBA(IIOP)、EJB(IIOP、RMI)、(D)COM(COM+、MTS)、ActiveX、DLL、BEA Tuxedo(ATMI、JOLT)、Oracle Forms、.NET Framework、J2EE/Java Framework、VB6 Framework。
5)ERP/CRM 系统:SAP、PeopleSoft、Siebel、Oracle Applications。
6)其他:Outlook Web Access、MS .NET SOAP Stack、Apache Java SOAP Stack、Chordiant、E.piphany、Lawson、SSPS ShowCase、Amdocs Clarify。
(4)Rational Performance Tester
Rational Performance Tester(简称 RPT)也是一款性能测试工具,适用于基于 Web 的应用程序的性能和可靠性测试。Rational Performance Tester 将易用性与深入分析功能相结合,从而简化了测试创建、负载生成和数据收集,以帮助确保应用程序具有支持数以千计并发用户并稳定运行的性能。当前最新版本为8.1 版,生产厂商为IBM Rational 公司。
Rational Performance Tester 支持的协议包括:HTTP、SAP、Siebel、SIP、TCP Socket 和Citrix 等。
Rational Performance Tester 在录制脚本时可以选择4 种类型的记录器:RPT HTTP 记录、SAP记录、SDK Smaple Socket 记录和Citrix 记录。