用Selenium WebDriver+Grid2實現瀏覽器端性能測試
在 Web 2.0 應用中,頁面裝載時間和瀏覽器渲染時間將成為決定性能的關鍵因素。我們在測試過程中不僅需要手動觸發性能測試工具,而且需要模仿不同的用戶行為,包括不同的瀏覽器、不同的網絡條件和不同的使用習慣。在這種情況下我們需要新的方法與工具來覆蓋特別是瀏覽器端的性能測試。用 Selenium WebDriver + Grid2 可以解決瀏覽器端性能測試中的自動化和并發性問題。本文介紹了這種新的測試框架和腳本的開發過程,并結合案例給出了具體的代碼和結果分析。使用 Selenium WebDriver+Grid2 可以將已有的自動化測試資源為性能測試服務,將測試人員從繁雜的手動測試中解放出來,專注于結果分析和問題解決。
我們需要新的方法與工具來覆蓋瀏覽器端的性能測試
在瀏覽器端的性能測試中遇到的一些問題
在傳統的互聯網應用中,由于瀏覽器端的時間消耗比較有限,并且頁面裝載時間也比較簡單且有限,所以在對傳統互聯網應用的響應時間分析中,我們通常忽略頁面裝載時間和瀏覽器渲染時間,而著重分析服務器響應時間。而在 Web 2.0 應用中,頁面裝載時間和瀏覽器渲染時間將成為決定性能的關鍵因素,所以我們需要新的方法與工具來覆蓋特別是客戶端的性能:瀏覽器響應時間。
我們使用一些工具來幫助我們測試瀏覽器端的性能;比如說 DummyNet 可以模擬不同網絡帶寬和延遲,以便我們分析不同網絡情況下的的網頁性能;HttpWatch 可以分別記錄每個請求的服務器端響應時間、頁面裝載時間、瀏覽器渲染時間;DynaTrace AJAX 是一種詳細的底層工具,它不僅可以顯示所有請求和文件在網絡中的傳輸時間,還會記錄瀏覽器 render、CPU 消耗、JavaScript 解析和運行的詳細情況。我們使用這些工具的時候大多是手動觸發,為了得到數據和分析報告,必須將用戶案例在不同的瀏覽器上手動實現,并且在某一時刻打開或關閉工具和保存結果。過多的手動操作使我們很難專注于數據分析和發現問題。所以我們需要解決以下問題:
需要有工具在模仿用戶使用 web 應用程序的同時自動觸發這些工具,生成分析數據。
可以同時模仿不同的用戶行為,包括不同的瀏覽器,網絡條件和使用習慣。
下面的章節將介紹如何利用自動化工具 Selenium 來搭建測試網頁瀏覽器端性能的測試框架,實現瀏覽器端自動測試和并行測試。
瀏覽器端性能測試框架中用到的技術
我們的測試框架主要采用了以下技術:
Selenium WebDriver
Selenium 是針對 Web 應用的測試框架,支持多種瀏覽器和多種編程語。WebDriver 通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器。它提供了一個更為簡單,一致的編程接口并且解決了在 Selenium-RC API 遇到的問題。Selenium WebDriver 更好的支持了動態網頁。它的目標是為現代的網頁程序測試提供設計良好的面向對象的 API。
Selenium Grid2
Selenium Grid 允許用戶將測試案例分布在幾臺機器上并行執行。用戶可以在一個集中控制點控制不同的環境。在不同的瀏覽器 / 系統組合上面更為容易的運行測試案例。允許用戶更多的利用虛擬資源減少了維護測試環境的成本。Selenium Grid2 很好的支持了 WebDriver。利用原有的 WebDriver 腳本和 Grid 技術就可以將不同的測試用例分布在不同的機器或虛機上,在特定的瀏覽器版本上運行,自動地啟動關閉分析工具,統一地保存測試結果。Selenium Grid2 的機制如圖 1,啟動一個中央節點(Hub),然后啟動多個遠程控制節點(rc),啟動 rc 時告知 Hub 的位置,這樣這些 rc 就可以注冊到 Hub 上,測試程序與 Hub 通訊,當測試被并發地發給 Hub 時,Hub 會自動將這些測試命令分發給已經注冊的 rc,rc 接到命令后執行測試。
TestNG
本測試系統還使用 TestNG 工具來輔助配置自動測試。TestNG 是測試 Java 應用程序的框架之一。TestNG 以其靈活性和參數化成為定義 Selenium 的驅動驗收測試的首選。它通過一些語義注釋來傳遞測試的參數,定義測試腳本的順序并配置運行時的性能。用戶可以通過配置來生成各式測試報告,十分方便。
圖 1. Selenium Grid2 的機制
posted on 2014-07-09 15:59 順其自然EVO 閱讀(1240) 評論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動化測試學習