隨著新的應用技術的發展及業務系統用戶數的增加,業務系統的上線性能要求越來越高,要求進行性能測試的項目數量迅速增長、性能測試范圍迅速擴大。為適應業務發展需要,需要進行性能測試。性能測試目的是在業務應用性能調優、容量規劃部署、投產架構驗證等方面進行性能測試能力建設。Loadrunner是性能測試領域非常知名的測試工具軟件,在市場占有率上遙遙領先,是性能測試領域的標桿性測試軟件。Loadrunner是企業級的具有極高規模適應性的自動負載測試工具,它能預測企業IT系統的行為,優化性能,它強調的是整個企業的業務系統。通過模擬實際用戶的操作行為和實時性能監測,可以幫助更快的確認和查找各關鍵系統可能出現的性能瓶頸問題。
Loadrunner工作流程圖及結構說明:
Loadrunner組件如下:
Loadrunner典型部署結構如下圖:
性能測試過程設計及執行如下:
1、 創建虛擬用戶腳本
使用LoadRunner的Virtual User Generator引擎,用戶能很簡便地創立起系統負載。該引擎能夠生成代理或虛擬的用戶模擬業務流程和真正用戶的操作行為。它先記錄下業務流程,如網銀查詢或轉帳,然后將其轉化為測試腳本。利用虛擬用戶,用戶可以在Windows, UNIX 或Linux機器上同時運行成千上萬個測試。所以LoadRunner能極大的減少負載測試所需的硬件和人力資源。另外,使用了LoadRunner的TurboLoad專利技術,用戶能獲得最高的規模適應性水平。TurboLoad使用戶有能力創立與每天幾十萬名在線用戶和數以百萬計的點擊數相匹配的負載。
圖1 腳本樣例
2、創建真實的負載
虛擬用戶建立起后,用LoadRunner的控制器,用戶能很快組織起多用戶的測試方案??刂破鞯奶峁┮粋€互動的環境,在其中用戶既能建立起持續且循環的負載,又能管理和驅動負載測試方案。
圖2 創建真實的性能場景和負載
3、定位性能問題
LoadRunner內含集成的實時監測器,在負載測試過程的任何時候,您都可以觀察到應用系統的運行性能。這些被動監測器為您實時顯示交易性能數據,如反映時間,和其它系統組件包括應用服務器,Web服務器,網路設備和數據庫等的即時性能。
4、分析結果精確定位問題所在
一旦測試完畢后,LoadRunner收集匯總所有的測試數據,并提供用戶高級分析和匯報能力,以便迅速查找到性能問題并追溯原由。例如使用LoadRunner的Web 交易細節監測器,用戶可以確定將每一網頁上所有的圖象,框架和文本下載所需得的時間。
分析示例:
DB CPU=25.7, DB Time=29.2,則25.7/29.2=88.01% 說明CPU利用率比較高.
Redo Size:535119字節/s=0.51m/s說明DML操作或者系統并不是特別繁忙.
Logical reads=918550個block/s=918550*8192/1024/1024=7176m/s,說明sql并發比較多.
Block changes=2914.4,說明每秒中有2914.4個block被修改.
Physical reads/writes都比較小,說明我們的buffer cache可以滿足需求.
Parses=5560,每秒解析5560次,包括fast parse,soft parse hard parse,Hard parses=0說明大部分的都是fast parse和soft parse.這樣子減少CPU的消耗.
1. 針對GUI界面應用和無界面應用的性能測試
一般而言,普通的性能測試工具是通過錄制應用系統前端的用戶界面操作而產生腳本的,這能夠滿足大多數的實際應用需求。在這些接口當中,普通的性能測試工具都可以錄制,但是其它接口就沒有通常的人機界面供性能工具錄制使用。如果我們希望對前置機產生足夠的壓力,模擬出更加真實的業務壓力狀況,那么就需要進行無界面錄制腳本。
因此,能否提供對所謂“無界面”程序產生的壓力進行錄制的手段,對于客戶來說應該是非常有意義的。 LoadRunner除了支持一般的界面錄制之外,其Port Mapping技術完全支持“無界面”程序的錄制功能,如下圖所示,在客戶中常見的中間件Tuxedo/ TCP Server環境中都能完美的使用,支持的平臺跨越Windows, Unix、Linux等各類平臺。
2. 真實的負載能力
使用LoadRunner的虛擬用戶生成器模塊,用戶能很簡便地創建性能測試的腳本。該模塊能夠錄制基于真實用戶的業務流程和操作行為,如下訂單或訂單處理,然后將其自動轉化為測試腳本。利用虛擬用戶,用戶可以在多臺機器上同時運行成千上萬個測試。所以LoadRunner能極大的減少負載測試所需的硬件和人力資源。
3. 易用的操作方式
在性能測試中,靈活性是不容忽視的問題,一般來說,性能測試任務往往是時間非緊,任務重,環境復雜,為了在有限的時間和環境內完成性能測試工作,測試產品的易用性將起到決定性作用。
從實際工作的效果來看,僅僅由于LoadRunner的易用性一方面,保守的估計,僅僅參數化一項功能的實現,至少可以使得正式的壓力測試工作縮短50%以上的時間。這具有非常重大的現實意義。
4. 靈活的參數化
為了模擬真實的業務壓力狀況,通常采用一個腳本帶多組測試數據的方式,利用腳本里面的參數,讓一個腳本在不同的循環中執行不同的業務數據。LoadRunner既快速完成簡單的參數化功能:如從數據庫或文件中獲得不同數據進行參數化;同時,LoadRunner具有廣泛的平臺支持和良好的編程支持能力,通過其靈活性的特點,很容易集成用戶現有的API對腳本進行參數化的功能,特別是對于一些加密解密的處理,從而能夠模擬出更加真實的業務壓力來。
5. 產生壓力的方式
測試腳本創建好后,通過LoadRunner的控制臺模塊,用戶能很快組織起多用戶的測試方案??刂婆_提供一個互動的環境,在其中用戶既能建立起持續且循環的負載,又能管理和驅動負載測試方案。
另外,使用了LoadRunner的TurboLoad專利技術,用戶能獲得最高的規模適應性水平。TurboLoad使用戶有能力創立與每天幾十萬名在線用戶和數以百萬計的點擊數相匹配的負載。
6. 自定義測試場景
Loadrunner允許用戶自定義各種測試場景,如:定時自動測試、遞增式加壓、隨時間任意變化加壓(即是說進入自動化性能測試產品后,其中應提供直觀的界面用來配置隨時間的任意組合加壓場景)、多個腳本組合加壓等??傮w來說,可以任意組合來實現實際需要的各種方式。
Loadrunner不僅可以建立手工場景進行壓力測試,同時用戶可以根據需要建立面向目標的加壓模式,如基于每秒事務數,事務相應時間,最大承受虛擬用戶數,每秒點擊次數等等。方式靈活多變,有利于用戶根據實際需要進行相應的選擇。
在加壓的時候,LoadRunner還可以對每個虛擬用戶的行為進行個性化處理,如虛擬用戶的訪問可以模擬成來自不同IP地址的訪問,這樣能夠更加有效地模擬實際應用中來自于不同地點的訪問,同時我們還可以模擬不同的訪問帶寬,模擬廣域網環境等等。
7. 實時的性能監控
一般而言性能測試的目的并不僅僅是得出系統的吞吐能力,評價系統的當前性能,更主要的是發現系統可能存在的瓶頸,確認性能瓶頸并優化和調整應用。
很顯然,如果需要來實現這樣的目標,在性能測試的同時,沒有一套實時的同步系統監控功能是無法實現的。我們不可能在使用性能測試軟件的同時,借助第三方的系統軟件來完成“實時”監控。因為第三方監控軟件即使能夠監控,也很難和性能測試軟件實現同步,而且會添加大量的手工工作,例如記錄加壓時間,將性能測試報表與系統監控軟件報表關聯等等。
Loadrunner性能測試解決方案在提供強大的性能測試的同時還提供了功能豐富的服務器監控功能,在性能測試過程中能夠監測系統各層面的每一部件的性能。通過記錄整個系統所有性能數據,測試人員可以將這些信息對應最終用戶的負載和響應時間,以此定位瓶頸所在。更為重要的是:對于待測服務器的同步監控,不需要安裝任何代理,只要進行簡單的配置就可獲得服務器上相關的性能數據,這樣就以一種完全無干擾原先系統的方式進行,最大限度地減少了對被測服務器性能的影響。
相比其他同類性能測試產品來說,LoadRunner監控功能尤為突出,支持各類環境、操作系統、網絡、應用服務器和數據庫服務器。對于客戶有Windows、Unix以及Linux等眾多環境的情況尤為適合,客戶將不必為由于測試環境的改變而改換其他測試產品。下面是LoadRunner所提供的部分監控功能:
? 運行時間監控 – 虛擬用戶狀態,用戶指定的數據站
? 交易監控 – 反應時間,交易成功與否
? 網絡服務器資源監控 – 單位秒的點擊數,吞吐量
? 多操作系統資源監控 – CPU,內存,I/O等
? 中間件監控 – Tuxedo, Weblogic, Websphere等
? 數據庫服務器監控 – Oracle,SQLServer,DB2,Sybase
8. 強大的關聯分析
性能測試測試結束,通過高度準確的記錄達到模擬真實用戶的行為,與此同時實時對應性能監控數據也采集完畢,但這并不能說明性能測試完畢,因為分析性能測試結果才是性能測試過程中最后壓軸戲。如何通過對測試數據的分析,提供數據關聯的功能,盡可能自動查找到與所測業務最為相關的性能數據,幫助定位性能瓶頸,這才是性能測試解決方案必須完成的工作。市場上有相當多的性能測試產品也能提供一定的性能測試功能,借助第三方的軟件還能夠集成性能監控數據,但是往往只能提供一些簡單的報表。但它們恰恰忽略了最重要的分析,用戶在性能測試完畢后,面對大量的數據通常是無從入手,簡單的報表離分析瓶頸更是相差甚遠,因此如何能夠提供良好的分析功能往往會成為衡量性能測試解決方案是否優秀的一個重要標準。
Loadrunner 除了提供性能測試的功能之外,還提供了一個分析模塊:Analysis。Analysis主要了提供一個集成環境,集中收集所有在測試周期中產生的數據。由于這個工具功能強大且使用簡單,測試人員可以創建跨場景的圖表數據比較,增強數據分析的能力和速度。
同時LoadRunner 的分析功能利用內置的先進數學分析模式提供了高水平的問題定位能力,能幫助測試人員找出這些場景中的瓶頸所在,再輔以利用一系列復雜的圖表和文字說明來解釋問題。其關聯功能更是大大提高了智能分析能力,加快幫助用戶分析結果。例如:可以在一個時間段內將多個視圖疊加進行比較,還可以將兩次運行的結果放在一起進行對比,了解性能是否得到提高。最后LoadRunner通過自動關聯分析能夠自動生成測試分析報告,可以是基于word,html的,也可以是Crystal Report格式。
下面是LoadRunner 提供的部分性能圖表
? 百分比 – 分析在一定時間段內完成執行的交易所占百分比
? 負載下的性能 – 指明在場景執行中,任何方位運行虛擬用戶的數量和與之相關的交易時間
? 交易性能 – 在場景執行過程中每秒內完成交易平均花費的時間
? 交易性能概述 – 顯示場景中所有交易的最長,最短和平均時間
? 虛擬用戶反應交易性能 – 顯示每個虛擬用戶各自完成交易所需時間
? 交易分布情況 – 顯示執行各個交易占用到的時間分布狀況
9. Loadrunner更多技術特點
? 采用無代理的性能監控器,用于采集被測系統的性能參數,在被測試系統上,不安裝任何代理軟件,消除對被監測系統的外源性影響。
? 全面分析壓力測試結果,使用類似自動關聯的技術,自動擬合應用性能參數(如應用響應時間,應用并發用戶數)和系統性能參數(如網絡性能指標,操作系統性能指標,數據庫性能指標等),得出應用系統性能的瓶頸。
? 產生基于各類格式的測試報告。
? 支持最廣泛的業界標準:Winsocket、MS SQL Server、ODBC、Oracle、Web、LDAP、FTP、SOAP、DNS、SAP、Siebel、People-Soft、RMI、EJB、Corba、COM、Tuxedo、MQSeries、Citrix、RTE、Real player、MS media player、.Net及移動應用等各類環境。
? 中文版產品,包括安裝文件,幫助文檔,使用界面,測試報告均為中文。
廣州泰息特電子科技有限公司
Guangzhou Tester Electronic Technology Co., Ltd.