性能測試是任何分布式或Web應(yīng)用程序測試計劃的重要組成部分。在計劃和開發(fā)周期中進(jìn)行性能評價,可以保證交付給客戶的應(yīng)用程序滿足客戶對于高負(fù)載、可用性和可伸縮性的要求。提前確定軟件的負(fù)載限制可以為適當(dāng)?shù)剡M(jìn)行系統(tǒng)配置提供幫助,從而避免出現(xiàn)意料之外的故障。系統(tǒng)性能分析中要處理的幾個問題是:系統(tǒng)或服務(wù)器能否處理數(shù)百個或數(shù)千個客戶端的同時請求,以及系統(tǒng)可以處理請求的頻率。這種類型的測試不但提供了系統(tǒng)響應(yīng)時間的度量值,而且針對服務(wù)器的回歸測試和應(yīng)用程序代碼,檢查服務(wù)器的響應(yīng)是否和預(yù)期結(jié)果相匹配,并為不同供應(yīng)商的中間件解決方案的評價和比較提供幫助。
Apache JMeter——Apache的性能測試框架,已經(jīng)廣泛地作為Web應(yīng)用程序的性能測試工具。它可以用于在模擬重負(fù)載的條件下分析整個服務(wù)器性能。該軟件提供了FTP和HTTP請求功能和可擴展自定義腳本功能。本文闡述了Jmeter可用于對Web services進(jìn)行負(fù)載測試的原因。我們特別通過在BEA WebLogic Server 9.0中配置一個簡單的Web Services來進(jìn)行說明。示例測試計劃闡述了測試計劃的創(chuàng)建、線程組、循環(huán)和Web Services請求。我們還討論了如何測量數(shù)據(jù),并通過隨附的JMeter圖表對圖形工具中所顯示的結(jié)果進(jìn)行了說明。
JMeter
Apache JMeter是可以對利用HTTP或FTP服務(wù)器的應(yīng)用程序進(jìn)行測試的工具。它是基于Java的,通過所提供的API它還具有高度可擴展性。典型的JMeter測試包括創(chuàng)建循環(huán)和線程組。循環(huán)使用預(yù)設(shè)的延遲來模擬對服務(wù)器的連續(xù)請求。線程組是為模擬并發(fā)負(fù)載而設(shè)計的。JMeter提供了用戶界面。它還公開了API,用戶可以從Java應(yīng)用程序來運行基于JMeter的測試。為了在JMeter中創(chuàng)建負(fù)載測試,需要構(gòu)建測試計劃。在實際操作中,Jmeter需要執(zhí)行一系列的操作。簡單的測試計劃通常包括下列元件:
*線程組——這些元件用于指定運行的線程數(shù)和等候周期。每個線程模擬一個用戶,而等候周期用于指定創(chuàng)建全部線程的時間。例如,線程數(shù)為5,等候時間為10秒,則創(chuàng)建每個線程之間的時間間隔為2秒。循環(huán)數(shù)定義了線程的運行時間。使用調(diào)度器,還可以設(shè)置運行的起始時間。
*取樣器——對于服務(wù)器HTTP、FTP或LDAP請求,這些元件是可配置請求。該教程僅側(cè)重于Web Services請求。
*監(jiān)聽器——這些元件用于請求數(shù)據(jù)的后期處理。例如,可以將數(shù)據(jù)保存到文件或用圖表來說明結(jié)果。此時JMeter圖表并沒有提供許多配置選項;然而它是可擴展的,它始終可以添加額外的可視化效果或數(shù)據(jù)處理模塊。
Apache JMeter網(wǎng)站給出了關(guān)于可用元件的詳細(xì)說明。在某些情況下,如果可用元件不適合特定的測試,開發(fā)人員可通過在安裝Jmeter的libext目錄中放置jar文件來編寫他/她自己的腳本或Java類,并將其嵌入測試計劃。
本文中我們使用的是版本是JMeter 2.1。從 Web 站點 下載可執(zhí)行二進(jìn)制文件,將其解壓縮,然后應(yīng)用程序即可在Windows或Unix平臺中使用。如果是在Windows操作系統(tǒng)中工作,要轉(zhuǎn)到bin文件夾用jmeter.bat 或jmeterw.bat啟動應(yīng)用程序。初始用戶界面如圖1所示。
圖1:啟動Apache JMeter
創(chuàng)建負(fù)載測試
使用Jmeter的負(fù)載測試功能,可以在服務(wù)器上產(chǎn)生高負(fù)載并確定其容量和限制。注意:若要使用Web services樣本,需要有可用的mail.jar和activation.jar,它們可從Sun Microsystems中獲。ㄕ垍㈤喯旅娴逆溄樱。由于授權(quán)限制,Apache沒有分發(fā)這些庫。下載這兩個jar文件之后,將它們放入Java classpath或安裝Jmeter的lib目錄中。
圖2:創(chuàng)建線程組和基本W(wǎng)eb Services測試計劃
現(xiàn)在,右鍵單擊Test Plan并添加Thread Group和Loop Controller。我們使用這兩個元件來設(shè)置模擬的并發(fā)用戶數(shù)和測試持續(xù)時間。在樹狀結(jié)構(gòu)的Loop Controller下面,添加“WebService (SOAP) Request”和Graph,如圖2所示。如果不能向測試計劃添加WebService請求,則可能是路徑中沒有mail.jar或activation.jar。
鍵入線程數(shù)、等候周期和循環(huán)數(shù)。在本教程中我們分別使用5、10和100。將循環(huán)控制器計數(shù)設(shè)置為1。如果配置了Web Services的WebLogic Server仍然沒有運行,請手動啟動它或從WebLogic Workshop中啟動。