Selenium 是一種 Web 測試框架,它搭建了驗證 Web 應用程序的新途徑。與大多數嘗試模擬 HTTP 請求的 Web 測試工具不同,Selenium 執行 Web 測試時,就仿佛它本身就是瀏覽器。當運行自動的 Selenium 測試時,該框架將啟動一個瀏覽器,并通過測試中描述的步驟實際驅動瀏覽器,用戶將使用這種方式與應用程序交互。
由于開發人員和非開發人員都能夠使用 Selenium 輕松地編寫測試,使得它從眾多測試框架應用程序中脫穎而出。在 Selenium 中,可以通過編程的方式編寫測試,或者使用 Fit 樣式的表,并且編寫了測試后,可以使測試完全自動化。使用一個 Ant 構件(比方說)運行完整的 Selenium 套件非常簡單,并且還可以在持續集成(Continuous Integration,CI)環境中運行 Selenium 測試。
這個月,我將介紹 Selenium,并逐一查看使它成為優秀 Web 測試框架的一些特性 —— 尤其是在結合使用 TestNG、DbUnit 和 Cargo 這樣的軟件時。
驗收測試
由于 Selenium 能夠很好地模擬用戶的行為,它常常用于進行驗收測試,即在完成的系統上運行一整套測試。驗收測試通常需要運行整個應用程序,以使測試發揮作用。如果您要測試一個 Web 應用程序,則需要訪問應用程序數據庫,以及一臺 Web 服務器,一個容器和運行應用程序所需的任何配置元素。
使用 Selenium 進行編程式測試
在 Selenium 中,您可以使用自己喜愛的語言或者 Fit 樣式的表通過編程來編寫測試。從測試的角度來說,不管使用什么語言,測試過程和結果都不會有顯著的差別。在此,我希望研究 Selenium 的編程方法,因為在結合使用 TestNG 時,它提供了一些有趣的可行方法能性。
使用具有類似 TestNG 這樣的框架的 Selenium 進行編程式測試具有這樣一個優點,它允許您創建智能 fixture,而使用 Fit 樣式的表則很難做到這一點。TestNG 尤其適合與 Selenium 結合使用,因為它使您能夠完成其他框架無法做到的測試,例如使用依賴項進行測試,重新運行失敗了的測試,以及使用單獨文件中定義的參數進行參數化測試。所有這些特性結合在一起,當然能夠使它在眾多 Web 應用程序測試框架中脫穎而出,但是,正如您將看到的,在完全自動化的驗收測試中使用這些特性令它更加出眾。
配置第一個測試
Selenium 架構實際上由兩個邏輯實體組成:您編寫的代碼以及能夠簡化與測試中的應用程序的交互的 Selenium 服務器。要成功地執行測試,必須要啟動并運行 Selenium 服務器實例以及要測試的應用程序。(當然,測試結果取決于您編寫的應用程序是否優秀?。?/FONT>
幸運的是,Selenium 服務器是一種輕量級程序,可以在實際的測試范圍內通過編程啟動和停止它。Selenium 服務器(使用 Selenium 對象嵌入)的啟動和停止由一個 fixture 來執行。
要通過編程的方式啟動 Selenium 服務器,必須創建一個新的 Selenium 對象,并告訴它要使用哪一種兼容的瀏覽器 —— 我在下面的示例中使用的是 Firefox。您還必須提供運行服務器實例的位置(通常是 localhost,但不是必須的),以及被測試的應用程序使用的基 URL。
在清單 1 中,我配置了一個本地 Selenium 實例,使用它在本地安裝的 Web 應用程序上驅動 Firefox(http://localhost:8080/gt15/)。正如您從參數中推斷的一樣,Selenium 是作為被測試的應用程序的代理,并相應地促進測試。
清單 1. 配置 SeleniumServer
Selenium driver =
new DefaultSelenium("localhost", SeleniumServer.getDefaultPort(),
"*firefox", "http://localhost:8080/gt15/");
driver.start();
//go to web pages and do stuff...
driver.stop();
原文轉自:http://www.anti-gravitydesign.com