性能測試的概念
一般來說,性能是一種指標,表明軟件系統或構件對其及時性要求的符合程度;其次,性能是軟件產品的一種特性,可以用時間來進行度量。性能的及時性用響應時間或吞吐量來衡量。響應時間是指服務器對請求作出響應所需要的時間。
系統性能包括時間和空間兩個維度,時間是指客戶操作業務的響應時間,空間是指系統執行客戶端請求時,系統資源消耗情況。客戶關注的性能只是時間的表現,客戶不關注是什么原因引起的性能問題,但性能測試工程師和系統工程師就必須關注系統資源使用的情況。
性能測試是測試系統端到端(即客戶端發送請求經過服務器將信息返回的過程)的性能指標,目前在系統設計階段無法設計出一個定量性能的系統,即開發工程師無法保證設計好的系統其性能表現如何,還是得靠測試來驗證性能的表現,性能測試是一系列的測試過程。在系統投入到市場之前,必須對系統的性能進行測試,否則無法確定系統的性能是否能滿足客戶的需求。
性能測試自動化
手工進行性能測試存在諸多困難,如圖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、http://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 記錄。