對於直接面對互連網使用者的WEB應用,在開發設計的時候必須格外小心,因為誰也不知道在單位時間內WEB程式訪問和啟動並執行速度。所以,在程式設計完成以後,最後針對程式進行一些嚴格的甚至是苛刻的測試,以確定程式在複雜的網路環境和伺服器高壓負荷下是否可以保持正常和相對穩定的效率。
什麼是負壓測試
負壓測試一般針對WEB應用進行,比如網站等。進行負壓測試的目的是為了確定WEB應用在現實的網路環境中是否可以正確而安全的處理各種使用者提交的不確定請求,檢驗程式的健壯性。
負壓測試的另外一個目的在於故意提供足夠多的請求,觀察程式在這種情況下的反應能力。
為什麼要負壓測試
可能大家現在都已經很熟悉一個很著名的搜尋引擎Google,我們知道,這個搜尋引擎不但搜尋結果準確,而且,搜尋速度更是奇快無比。搜尋結果準確,那是程式演算法在一個方面的表現,搜尋速度快,則關係到整個系統的構件和程式的健壯行。如果希望自己編寫的程式也可以在大訪問量的情況下“從容不迫”,就有必要對程式進行負壓測試。
對於訪問量較大的網站或者程式,特別是提供一些比較熱門話題程式,最好在正式將網站或者程式公布以前進行比較完備的負壓測試,並且根據測試即使最佳化程式或者合理設定管理員硬體,這樣網站不至於在使用者量急劇增加的情況下出醜甚至崩潰。
使用ACT進行測試
ACT簡介
ACT(或者MSACT)是微軟的Visual Studio 和Visual Studio.NET帶的一套進行程式測試的工具,也正是我們的負壓測試需要用到的。ACT不但可以記錄程式啟動並執行詳細資料參數,用圖表顯示程式健全狀態,而且安裝和使用都比較簡單,結果閱讀也很方便,是一套較理想的測試載入器。
安裝ACT
最起碼,當然我們需要Visual Studio,ACT似乎還沒有單獨的版本出現。在這裡,我們測試一個WEB Service的在高負荷情況下的運行效能。首先,在Visual Studio中開啟ACT()
程式會提示是否建立一個新的工程,點擊“是”,然後輸入一個文字說明,出現以下介面(圖二):
開啟ACT以後,我們可以開始測試了。
建立一個新的測試
點擊菜單【Action】->【New Test】(三)
會出現一個嚮導介面(圖四)
嚮導我們太熟悉了,仔細閱讀每個介面的解說文字, 選擇就可以了。
編輯測試
經過以上的設定,會出現以下介面(圖五):
很明顯,以上介面我們人為的將它分為了三個部分,而且每個部分顏色各不相同。以上不同顏色的三個部分分別為:
左邊藍色部分:導覽列,測試入口和結果人口;
右上綠色:提示資訊列;
右下紅色:VBS代碼欄,在這裡編輯測試需要的一些VBS代碼,測試成功有效與否,全部依靠這些代碼的執行情況。所以,這些代碼最好仔細考慮並且多次測試;
在進行測試之前,首先設定測試的一些選項(菜單【Action】—>【Properties】)六
在以上介面,主要設定兩個參數:
(1) Test duration設定,這裡設定測試進行時間,預設為5分鐘;
(2) 在Counters標籤頁設定一些測試效能資料;
以上設定完成以後,就可以開始修改VBS代碼了,我們沒必要遍曆整個VBS代碼,只看一些主要的:
Test.SendRequest("http://localhost/")
以上是預設代碼,我們可以修改為以下代碼:
Test.SendRequest("http://localhost/philipq/wsmessages/wsmsg.asmx/MPost?webKey=w2k&UName=Ad&UPassword=pwd&UTo=Admin&UMessage=ACT+Test")
以上代碼的編寫應該根據自身程式的特點來修改,以達到最好測試效果。
執行測試
點擊工具列的【Start】按鈕開始測試):
測試進行的時候,會出現以下視窗提示():
以上介面顯示程式測試的時間、剩餘時間、每秒提交的Request數量、提交的Request總量、錯誤數量等。點擊按鈕【Show details】可以查看詳細資料。
測試結束以後,就可以查看測試的結果了。
閱讀測試結果
測試完成以後,可以在圖二左邊的Result分支點擊查看測試結果,在右方的報表欄我們可以查看到以下資料:OverView、Graphs、Requests等,是一個OverView的資料舉例:
從以上報告可以看到,測試的程式每秒提交request23次,總共1400次。
測試結果的使用
根據測試的結果,我們可以知道程式啟動並執行情況、在高負荷下伺服器的承受能力。根據這些資料,我們來確定程式的效能和伺服器的效能,以此來預測在程式正式使用以後可能遇到的情況和伺服器需要的改進。
其他選擇
上面介紹的ACT雖然很不錯,但是,畢竟不是每一個使用者都使用Visual Studio,這時候,我們可以考慮其他工具來進行測試。
Microsoft Web Application Stress Tool (WAS)
這個工具和ACT一樣是微軟的產品,但是,這個工具沒有和Visual Studio整合,可以單獨使用。感覺這個程式現在還在測試,但是一些基本的功能已經很完備,可以完成ACT幾乎所有功能,而且,WAS使用更加簡單,設定也更加完備明了。這個工具的另外一個特點是,它的報表是純文字檔案,而不是流行的HTML檔案格式,但是,內容方面一點也不遜色。
關於這個工具的更多資訊,可以在這裡查閱:
http://homer.rte.microsoft.com/
Open System Testing Architecture (OpenSTA)
OpenSTA的特點是可以類比很多使用者來訪問需要測試的網站,它是一個功能強大、自訂設定功能完備的軟體,但是,這些設定大部分需要通過Script來完成,因此,在真正的使用這個軟體之前,必須學習好它的Script編寫。如果需要完成很複雜的功能,Script的要求還比較高,當然,這也是它的優點,一些程式員不會在意這些Script的。
這個軟體完全免費而且原始碼可以下載,感興趣的朋友可以自己修改達到要求。
關於這個工具的更多資訊,可以在這裡查閱:
http://www.opensta.org/
http://opensta.sourceforge.net/
PureLoad
PureLoad是基於Java的測試載入器,它的Script代碼完全使用XML,所以,這些代碼的編寫很簡單,它的測試報表包含文字和圖形並可以輸出為HTML檔案。由於是基於Java的軟體,所以,可以通過Java Beans API來增強軟體功能。
關於這個工具的更多資訊,可以在這裡查閱:
http://www.pureload.com/
QALoad
QALoad不單單測試WEB應用,還可以測試一些背景東西,比如SQL Server等,只要是它支援的協議,都可以測試;另外一點,QALoad不但可以測試Windows,而且可以測試AIX, HP-UX 和 Solaris等系統。但是,這款軟體價格很高。
關於這個工具的更多資訊,可以在這裡查閱:
http://www.compuware.com/products/qacenter/qaload/
LoadRunner
對於財大氣粗的大公司而言,這款軟體可能比較適合,它的功能和QALoad相比不相上下,市面上著名的公司如IBM、SUN、Oracle等都用這個軟體。但是它的價格也高不可攀,和功能成正比。
關於這個工具的更多資訊,可以在這裡查閱:
http://www-heva.mercuryinteractive.com/products/loadrunner/