壓力腳本的方式給我們提供了模擬各種壓力狀況的有力手段,通過人為制造各種類型的壓力,我們可以觀察被測系統在各種壓力狀況下的表現,從而定位系統瓶頸,作為系統調優的基礎。因此,提供豐富的對后臺系統進行監控的手段是性能測試工具第二個最主要的評價指標。監控應該不在被測系統上安裝任何軟件,否則的話,為了監控而引入的 “ 代理 ” 之類的小軟件將給被測系統引入新的可變因素,一方面造成了測試結果的不準確,另一方面會給用戶的系統的穩定性可能造成影響,從而導致用戶的反感和拒絕。目前,各種監控手段大都采用所謂 “ 無代理 ” 的方式,即不在被測系統上安裝任何軟件,僅僅通過改變被測系統的配置,就可以對被測系統進行監控。需要監控的部件多種多樣,包括操作系統、數據庫、中間件、應用系統、安全模塊、網絡、防火墻等等。
一組壓力測試運行完畢后,我們會得到詳盡的性能數據。這些數據包括最終用戶的響應時間,后臺系統各個部件的運行數據。這些數據的量非常大,往往包括幾千個變量的運行曲線,大小可能達到上 G 的規模??咳斯とシ治鲞@些數據幾乎是不可能的,性能測試工具必需提供數據分析工具,幫助性能測試人員去閱讀、解讀和分析數據,輔助測試人員定位系統的瓶頸。數據分析工具是保證最終測試成果的手段,因此它是性能測試工具中最重要的部分之一。
目前已經存在的性能測試工具林林總總,數量不下一百種,從單一的開放源碼的免費小工具如 Aapache 自帶的 web 性能測試工具 ab 到大而全的商業性能測試軟件如 Mercury 的 LoadRunner 等等。任何性能測試工具都有其優缺點,我們可以根據實際情況挑選用最合適的工具。
前面已經指出,性能測試是一項復雜的工作,一個性能測試項目的質量如何,測試人員的素質、能力和經驗是最關鍵的因素。擁有世界上最先進的 CT 掃描儀并不能讓你成為一個優秀的醫生。不過, “ 工欲善其事,必先利其器 ” , 擁有一套自己非常熟悉,功能全面、質量可靠的性能測試工具對于從事性能測試的人員非常有吸引力。在商業性能測試軟件中,大多價格非常昂貴。由于大多數性能測試工具是按照并發用戶數收取費用,因此要獲得大的并發量的價格是很高的。雖然存在很多免費的性能測試工具,但其功能不足,彼此不成系統,不能靈活搭配使用。
一套功能全面的性能測試工具的開發工作量是非常大的,這也是為什么商業性能測試軟件價格昂貴的主要因素之一。由于互聯網和開放源碼運動的發展,性能測試工具的各種功能都以各種形式的開源軟件存在了。 如果我們設計出一套合理的架構,在統一的架構下整合各種缺乏系統性的開源工具軟件,使之能夠彼此配套,搭配出一套功能全面、質量可靠,而且是開放源碼的性能測試工具是完全有可能的。
本文的下面部分具體論述性能測試工具的基本框架和技術要點,希望熱愛編程,希望對開放源碼運動有所貢獻的讀者能從本文的論述中獲得一些啟發,沿著作者的思路繼續往前行。
• 性能測試工具的體系架構
作者對性能測試工具 LoadRunner 比較熟悉,通過對 LoadRunner 的了解和評估,作者設計的性能測試工具體系架構如下圖所示:性能測試工具的組成部分有如下幾個:
• 虛擬用戶腳本產生器 Vugen(Virtual User Generator)
• 壓力調度和監控系統 Conductor
• 壓力產生器 Player
• 壓力結果分析工具 Analysis
通常,進行性能測試項目的一般步驟如下:
• 用戶確定需要錄制的交易,通過用戶操作和 Vugen 的錄制,記錄并生成自動化腳本。
• 修改腳本,確定腳本能夠回放成功。
• Conductor 是一個集中控制平臺,它和壓力產生器 player 互連,指定腳本在 player 上的分配,并控制 player 向被測系統的加壓方式和行為。
• Conductor 同時負責搜集被測系統的各個環節的性能數據。各個 Player 會記錄最終用戶響應時間和腳本執行的日志。
• 壓力運行結束以后, Player 將數據傳送到 Conductor 中, Conductor 負責將數據匯總。
• 數據分析工具 Analysis 讀取壓力測試數據,進行分析工作,確定瓶頸和調優方法。
原文轉自:http://www.uml.org.cn/Test/200503183.htm