Selenium
Selenium是ThroughtWorks公司一個強大的開源Web功能測試工具系列,本系列現在主要包括以下4款:
- Selenium Core:支持DHTML的測試案例(效果類似數據驅動測試),它是Selenium IDE和Selenium RC的引擎。
- Selenium IDE:FireFox的一個插件,支持腳本錄製。
- Selenium RC:Selenium Remote Control。後續的系列文章我會主要針對Selenium RC展開介紹。
- Selenium Grid:允許同時並行地、在不同的環境上運行多個測試任務,極大地加快Web應用的功能測試。
既然Selenium工具有4款這麼多,那到底如何選擇呢??我從"Selenium官網"這裡找了一個表:
Selenium IDE | Selenium Remote Control | Selenium Core | Selenium Core HTA | |
瀏覽器支持 | 僅Firefox | 很多 | 所有 | 僅IE |
需要遠程安裝 | 否 | 否 | 是 | 否 |
支持 HTTPS/SSL | 是 | 是* | 是 | 是 |
支持跨域 | 是 | 是* | 否 | 是 |
需要Java | 否 | 是 | 否 | 否 |
將測試結果保存到磁盤 | 是 | 是 | 否 | 是 |
多語言支持 | 僅Selenese | 很多 | 僅Selenese | 僅Selenese |
這裡沒有介紹Selenium Grid,但介紹了另外一個Selenium Core HTA,Selenium Core HTA其實是Selenium Core的額外模式,你只要Selenium Core配置稍加修改,即為HTA模式,Selenium Core HTA可以在IE最高安全等級(特權)下工作,這意味著它僅能在IE下工作,由於限制較大,下面將排除對Selenium Core HTA的討論。
1.瀏覽器支持:
(1).Selenium IDE僅可以在Firefox中工作。
(2).Selenium Remote Control支持很多瀏覽器,包括最常用的:firefox,ie,safari等N款瀏覽器。
(3).Selenium Core支持的瀏覽器是最廣的,這點和它的實現有關。作為IDE和RC的引擎,Selenium Core幾乎可以在任何瀏覽器中工作。
2.需要遠程安裝:是否需要在被測網站的服務端安裝?
這裡只有Selenium Core需要,這是出於同源策略的原因。這也是Selenium Core一個很大的限制,試問,如果你要測試Google.com,還得在google的服務器上裝一個Selenium Core,那是多搞笑的一件事。
而Selenium IDE和Selenium Core HTA不會被同源策略所限制,因為他們對瀏覽器擴展了。
Selenium RC提供一個代碼服務器來保證Selenium JS文件看似來自相同的遠程服務器,從而符合同源策略;代理服務器欺騙瀏覽器,讓它認為這裡的確有像http://www.google.com/selenium/這樣的目錄。
3.支持HTTPS/SSL:
這裡不說了,都支持。Selenium RC在「是」後面加*因為它是在最近版本支持的,僅此而已。
4.需要Java:準確的說是需要JRE
這項只有Selenium RC需要,上面2中所說的「代理服務器」是一個Java程序,需在跑測試案例前啟動。
5.將測試結果保存到磁盤
只有Selenium Core不能將任何測試結果寫到磁盤上(因為它是用javascript寫的,它不允許向磁盤寫數據),其解決方案是當然你可以將測試結果發送到另外一台服務器保存。這也是Selenium Core的一大限制。
6.多語言支持
(1).Selenium IDE僅支持Selenium語言。
(2).Selenium RC支持很多語言,如:C#,Java,Python,Ruby等。
(3).Selenium Core也是僅支持Selenium語言。
Selenium語言的測試案例如下:
它的優點是:簡單,用(Command,Target,Value)三種元素組成一個行為,並且有輔助錄製腳本工具(如:Firefox IDE,Selenium Core等),不懂程序的測試人員都可以輕鬆地編寫測試案例。
它的缺點是:Selenese有一些嚴格的限制:它沒有條件(沒有"if"表達式),並且它沒有循環(沒有"For"表達式)。這會使編寫複雜的測試變得困難甚至不可能。
OK,現在我們來研究下到底該使用哪款工具開展測試!
(1).Selenium IDE支持並且只支持Firefox瀏覽器,支持的瀏覽器太少,而依附於Firefox也不便於日後開展自動化測試,但是,它的錄製快捷好用!並且有代碼 轉換功能,可以把Selenium語言測試案例轉為C#,Java等語言的測試案例,我建議使用Selenium IDE + FireBug進行測試案例的編寫,然後轉為其他語言的測試案例後,再調用Selenium RC運行測試案例。
(2).Selenium Core,它的優點是編寫測試案例簡單,並且支持絕大多數的瀏覽器,但缺點也同樣明顯,Selenium Core需要遠程安裝,Selenese語言也限制了複雜案例的可能性,並且沒有良好的外部擴展,這是些都會是致命的問題。因為一個款測試工具不可能 100%滿足你測試需求的,當它不能滿足你測試需求時候,它必須有一個擴展機制可以讓你可以使用其他的方式滿足你需求,否則這款測試軟件即使功能強大,也 請三思慎用,否則當投入大量資源後才發現某些問題不能解決,那時候已經晚了,這是我的切身體會。
(3).Selenium RC是我推薦使用的工具,它支持很多瀏覽器,可以使用C#,Java等語言編寫測試案例,易於維護,同時提供了很好的擴展性,所以後續的文檔我會以Selenium RC作為默認的測試工具。