追求代碼質量: 使用 Selenium 和 TestNG 進行編程式測試

發表于:2008-06-26來源:作者:點擊數: 標簽:代碼質量seleniumSeleniumtestng
Selenium 是一種 Web 測試框架 ,它搭建了驗證 Web 應用程序的新途徑。與大多數嘗試模擬 HTTP 請求的 Web 測試工具 不同,Selenium 執行 Web 測試時,就仿佛它本身就是瀏覽器。當運行自動的 Selenium 測試時,該框架將啟動一個瀏覽器,并通過測試中描述的步

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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97