負載測試—網站的“體能”測試

通常來說,負載測試可以採用手動和自動兩種方式。手動測試會遇到很多問題,如無法模擬太多用戶、測試者很難精確記錄相應時間、連續測試和重複測試的工作量特別大等。因此對於負載測試,手動方式通常用於初級的負載測試。目前,絕大多數的負載測試都是通過自動化工具完成的。 

 

負載測試的相關問題 

 

從網站內容上看,每個網站都有自己的客戶羣和工作負載,不同網站其軟硬件結構差異也很大。下圖是一個網站的基本框架。 

 

這種複雜性給負載測試帶來了很大的挑戰。一方面,由於一些設備的原因,有時我們不能直接進行負載測試,必須繞過某些設備,造成很大麻煩。另一方面,由於整個體系結構的複雜,也給尋找問題帶來了一定的困難。例如防火牆常常阻止負載測試的進行,因此通常需要對防火牆進行調整,讓它暫時支持負載測試; 有時服務器的應用程序採用加密方式與客戶端進行交互,在這種情況下,還需要更改服務器應用程序。因此,負載測試人員需要對整個網絡架構和應用系統非常熟悉。 

 

另外,負載測試的成功與否,在很大程度上取決於自動化工具。在功能方面,主要考慮它所支持的協議、分析方式、監視目標種類等,以及該工具能否精確記錄、回放用戶的訪問情況。在性能方面,則主要考慮它模擬虛擬用戶的能力,例如在一定資源下可以模擬的用戶的數量和速度。 

 

負載測試的過程 

 

負載測試是一項非常複雜的工作,一次測試常常要持續幾天甚至幾周。因此,在進行一次負載測試前,必須做好充分的準備,可以按照以下幾個步驟來進行。 

 

(1)系統分析 

 

分析被測系統需要滿足什麼要求,例如支持多少人在線、支持連續多長時間的訪問等。測試者的主要任務就是將系統的需求轉換成測試目標,對系統進行全面的分析和評估,並結合測試的實際環境和條件以確保測試目標和測試計劃的正確性。 

 

(2)產生腳本 

 

爲了模擬多個用戶訪問服務器必須編寫腳本。簡單的腳本可以通過自動化工具提供的腳本編輯環境來編寫。複雜的腳本則通常是通過記錄單用戶的活動生成最初的腳本,再在此基礎上進行修改以保證該腳本可以支持多個用戶。其中最主要的修改是關於數據池的,因爲不同用戶通常使用不同數據,例如用戶名和密碼等。因此,我們通常要將這些數據存儲在數據庫(或者數據池)中,以便在執行中被腳本程序調用。 

 

(3)構造運行場景 

 

有了腳本後,就可以通過一個場景來管理這些腳本的執行。場景是一個執行單位,可以通過場景來模擬一個工作負載。在場景中,我們將管理腳本的數量、執行次數、執行時間等,甚至還可以加上一些定時器、同步點等控制機制。另外,還可以將模擬用戶分配到不同的計算機上。 

 

(4)運行場景 

 

設置好場景後,就可以運行了。通常,在運行場景的同時還要啓動相關監控模塊,監控服務器性能、網絡狀態、Web服務器性能和數據庫性能等。自動化工具同時記錄了各種客戶端信息,包括相應時間、交易成功率等。 

 

(5)分析報告 

 

通常,在場景運行後,自動化工具會生成標準報告,可以通過分析這個報告來分析整個系統性能,找到系統瓶頸。這一步驟通常需要測試人員和開發人員共同完成。 

 

負載測試市場和工具 

 

負載測試市場的發展非常迅速,預計到2003年該市場將達到7億美元。從目前來說,負載工具市場主要由一些大的軟件公司分享,例如CA、Rational和Mercury Interactive。 

 

(1) Load Runner 

 

Load Runner是Mercury Interactive公司推出的專業負載測試工具,是目前世界上最強大的負載測試工具之一,它佔領了負載測試工具市場的半壁江山。這是一個企業級的自動化工具,提供了非常強大的監視功能,能夠監控各種軟硬件模塊。 

 

從支持的協議來說,Load Runner支持HTTP(S)、WAP、i-Mode、 RealPlayer、LDAP、Winsock、RMI、FTP、POP3、SMTP、CORBA、COM/DCOM以及Tuxedo等。在監視器部分,它支持Windows NT/2000/XP、 SUN Solaris、HP UX、IBM AIX和Linux等操作系統,支持Apache、Web Logic等各種Web Server,還支持各種大型數據庫。 

 

(2) Astra LoadTest 

 

Astra LoadTest也是Mercury Interactive 公司推出的負載測試工具。相對Load Runner來說,該工具更加容易使用,不需要使用者掌握複雜的編程語言,完全通過可視化界面進行操作。該工具支持大量HTML相關技術,例如JavaScript、XML、ActiveX、Flash、DHTML以及SSL等,並支持大部分的瀏覽器。它的另外一個優點就是能夠高效模擬更多虛擬用戶,例如使用PIII 1G/512M機器最大可以支持100~250個用戶。另外,Astra LoadTest 繼承了LoadRunner的監視模塊,可以監控所有LoadRunner支持的對象。 

 

由於Astra LoadTest並不是定位在企業級用戶,因此它對一些高級協議的支持不夠充分,不能支持CORBA、LDAP、COM、WAP以及POP3等協議。 

 

(3) Rational Robot 

 

Rational在軟件測試方面也有非常好的成績。該公司推出的Robot工具支持SQABasic這種面向對象的記錄語言。不過,在性能測試方面,Robot並不是很出名。但是Robot提供了一種新的腳本記錄語言—VU語言,它基於傳統的C語言,能夠方便地訪問Robot提供的環境變量。同時Robot還提供了很多良好定義的庫函數,調用通信函數更加方便。Robot還提供了其他許多相關測試技術,例如數據池(Datapool)、同步點等,並且通過TestManager可以對所有類型腳本進行管理。 

 

從功能來說,Robot支持衆多的網絡協議,例如COM、DCOM、SOCKET、IIOP、Tuxedo等,並且可以對協議進行過濾,選取自己關心的協議。從操作方面來說,它對用戶的要求也比較高,需要用戶在整個訪問過程中,對客戶和服務器之間的交互類型和內容比較熟悉,同時對Robot也必須有足夠的瞭解。 

 

(4) WebLoad 

 

WebLoad是RadView公司推出的專業負載測試軟件。WebLoad提供了一種非常簡單的腳本語言記錄通信過程,同時它主要支持HTTP相關的技術和應用協議,例如JavaScript、XML、Java、EJB、ActiveX、WAP、HTTP、SNMP、Real以及 Microsoft Streaming Technologies等。該軟件的操作非常容易,並且提供格式良好的分析報告。目前IBM公司大量採用該產品進行負載測試。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章