Selenium用戶指南 - 第二章 入門

目錄    上一頁    下一頁

入門

Web應用程序測試自動化


今天的軟件應用, 許多或許是大多數, 是運行在一個瀏覽器中的基於Web的應用程序. 這些應用程序的測試效果在不同的公司和組織間變化很大. 在一個高度互動和響應的軟件時代, 許多組織在開發過程中都會使用某種形式的敏捷方法, 測試自動化正在成爲軟件項目的必要條件. 測試自動化是問題的答案. 測試自動化意味着使用一個軟件工具, 對被測試的應用程序運行可重複的測試. 爲迴歸測試提供響應能力。

測試自動化有許多優點. 大多數是和測試的可重複性, 可執行測試的速度有關. 有大量的、可得到的, 有助於測試自動化開發的商用和開源工具. Selenium可能是最廣泛使用的解決方案. 本文檔將幫助新手和有經驗的用戶, 學習有效的技術, 爲Web應用程序構造測試自動化.


用戶指南介紹Selenium, 講授它的功能, 和提供常用的、由Selenium社區積累的最佳實踐。 提供了許多示例。 同樣,提供有關Selenium內部結構的技術信息,和Selenium的推薦使用方法。


測試自動化對改善一個軟件團隊的測試過程的長期的效能有特別的益處。測試自動化支持:

    • 頻繁地迴歸測試
    • 提供開發者快速地回饋
    • 幾乎沒有限制測試案例的迭代執行
    • 支持敏捷和極限開發方法
    • 測試案例的文檔化
    • 自定義缺陷報告
    • 查找手工測試遺漏的缺陷

自動化還是不自動化?


自動化總是有益的麼?應何時決定自動化測試案例?

自動化測試並不總是有益的。有時手工測試可能是更適當地。例如,如果應用程序的用戶接口將在不久的將來作出顯著地改變,則任何自動化測試可能需要重新編寫。同樣,有時僅僅是沒有足夠的時間來構造自動化測試。從短期來看,手工測試可能是更有效的。如果一個應用程序有非常緊的時間期限,沒有現成的、可得到的測試自動化,而且測試必須在給定的時間範圍內完成,顯然手工測試是最佳的解決方案。


Selenium介紹


Selenium是一套不同的軟件工具, 每個擁有一個不同的方法來支持測試自動化。大多數的Selenium QA工程師聚焦於一個或兩個,很好地滿足他們的項目需求的工具,然而,學習所有的工具將給予你許多地、解決不同的測試自動化問題的選項。整個工具集,帶有一套豐富的測試特性,特別適合於所有類型的Web應用程序測試的需要。這些操作是高度靈活的,爲定位UI元素,比較預期的測試結果和實際的應用程序行爲,提供許多選項。Selenium的一個關鍵特徵是,對一個測試可以在多個瀏覽器平臺執行的支持。

Selenium項目簡史


Selenium首次誕生在2004年,當Jason Huggins在ThoughtWorks公司測試一個內部的應用程序的時候。作爲一個聰明的傢伙,他認識到可以更好的使用他的時間比對做出的變更進行手工地測試。他開發了一個可以驅動與頁面交互的Javascript庫,允許他自動地在多個瀏覽器上自動地重複運行測試。那個Javascript庫最終成爲Selenium的內核,成爲所有的Selenium RC(遠程控制)和Selenium IDE的基礎。Selenium RC是開拓性的,因爲沒有其他的產品允許你從一個你選擇的語言去控制瀏覽器。

儘管Selenium是一個令人吃驚的工具,他也不是沒有缺陷。因爲他的基於自動化引擎的Javascript,和瀏覽器應用到Javascript上的安全限制,個別事情成爲不可能完成的任務。讓事情變得“更糟糕的”是,Web應用程序隨着時間的過去變得越來越強大, 使用新瀏覽器提供的各種各樣特定的功能,讓這種限制變得越來越令人不快。

在2006年,Google的一個大膽的工程師Simon Stewart啓動了一個稱之爲WebDriver的項目。Google已經是Selenium的一個重量級用戶,但測試者不得不工作在有限制的產品上。Simon想要一個測試工具。可以使用瀏覽器和操作系統的“本地”方法與瀏覽器直接對話,因此可以避免沙盒Javascript環境的約束。WebDriver項目開始致力於解決Selenium的痛處。

到2008年,北京的奧林匹克運動會標誌着中國作爲一個全球力量的到來,在美國龐大的抵押貸款違約觸發了自大蕭條以來最糟糕的國際衰退,黑暗騎士被人們看見了兩次,還要遭受不合時宜的失去希斯·萊傑(希斯·安德魯·萊傑,Heath Andrew Ledger,1979年4月4日-2008年1月22日,澳大利亞男演員,曾以《黑暗騎士》一片獲得第81屆奧斯卡金像獎)的不良影響。但那一年最重大的故事是Selenium和WebDriver的融合。Selenium有着龐大的社區和商業支持,但WebDriver無疑地是這個工具的未來。兩個工具的結合爲所有的用戶提供了一個公共的特徵集,並且帶來了某些最耀眼地、在同一個屋檐下的測試自動化思想。或許爲何WebDriver和Selenium進行融合的最佳說明是Simon Stewart在2009年8月6日給WebDriver和Selenium社區的一封郵件中的的陳述,

爲何兩個項目合併?部分是因爲WebDreiver標定了某些在Selenium中的不足之處(例如能夠去旁路JS沙盒,並且我們有一個華麗的API),部分是因爲Selenium標定了某些WebDriver的不足之處(諸如對廣泛的瀏覽器的支持),部分是因爲主要的Selenium貢獻者和我覺得這是提供用戶最佳的可能框架的最佳方式。


Selenium工具套件


Selenium是由多個軟件工具組成的。每一個有一個特定的角色

Selenium2(亦稱Selenium WebDriver)

Selenium 2是該項目的未來方向,和對Selenium工具包的最新的增加物。這嶄新的自動化工具提供了各種各樣的令人敬畏的特徵,包括一個更有聚合力和麪向對象的API,以及一個對舊的實現的限制的解決方法。

正如你在Selenium項目簡史中讀到的,Selenium和WebDriver的開發者一致同意兩個工具個有優勢,並且合併這兩個項目將產生一個更健壯的自動化工具。

Selenium 2.0是那項努力的產物。它支持WebDriver API及其潛在的技術,以及Selenium 1的技術在WebDriver的底層,爲了最大化移植你的測試的靈活性。此外,爲了向後兼容Selenium 2仍然運行Selenium 1的Selenium RC接口。

Selenium 1(亦稱Selenium RC或遠程控制)

正如你在Selenium項目簡史中讀到的,長期以來Selenium RC是最重要的Seleniumx項目,在WebDriver/Selenium合併產生Selenium 2,這最新的和更加強有力的工具之前。

Selenium 1 仍然被支持(大部分是在維護模式),並且提供了某些在Selenium 2可能暫時沒有提供的特徵,包括對幾個語言(Java,Javascript,Ruby,PHP,Python,Perl和C#)的支持,以及對幾乎每種瀏覽器的支持。

Selenium 集成開發環境

Selenium IDE(集成開發環境)是一個用於構造測試腳本的原型工具。它是一個Firefox插件,並且提供了一個易於使用的開發自動化測試的接口。Selenium IDE有一個錄製功能,可以記錄用戶執行的動作,然後可以導出它們作可重用的腳本,以許多種編程語言中的一種, 稍後可以被執行。

註釋

雖然Selenium IDE有一個“保存(Save)”功能,那個允許用戶去以基於表格的形式保存這些測試,爲了稍後的導入和執行,但它不是設計用於運行你的測試,也不是涉及用於構造所有你將需要的自動化測試。特別是Selenium IDE不爲測試腳本提供迭代或條件語句。在編寫的時候沒有計劃去增加這些功能。這理由部分是技術上的,部分是基於Selenium的開發者鼓勵在測試自動化中總是需要一定數量的編程工作的最佳實踐。Selenium IDE僅僅打算做爲一個快速原型工具。Selenium的開發者很認真地推薦,健壯的測試自動化應該使用Selenium 2或Selenium 1,用許多支持的編程語言中的一種。

Selenium柵格

Selenium柵格允許Selenium RC解決方案擴展爲大規模的測試集,和爲那些必須運行在多個環境下的測試集。Selenium柵格允許你並行地運行你的測試,也就是說,不同的測試可以在相同的時間運行在不同的遠程機器上。這有兩個好處。首先,如果你有一個大規模的測試集,或一個運行緩慢的測試集,你可以增加它的性能,通過使用Selenium柵格去劃分你的測試集,運行不同的測試在同一時間在不同的機器上。同樣,如果你必須運行你的測試集在多個環境,你可以有不同的遠程機器的支持和運行你的測試在同一時間在不同的遠程機器上。在任何一種情形下,Selenium都將充分利用並行處理,極大地改善運行你的測試所花費的時間。

Selenium工具選擇


許多人從Selenium IDE開始,如果你還沒有編程或腳本語言的經驗,你可以使用Selenium IDE去熟悉Selenium命令。使用IDE你可以快速地創建簡單的測試,有時甚至在幾秒內。

然而,我們不推薦你使用Selenium IDE做所有的自動化測試。爲了有效地使用Selenium,你需要構造和運行你的測試,使用Selenium 2或Selenium 1,連同一種支持的編程語言。選擇哪種編程語言取決於你。

在編寫本文檔的時候,Selenium的開發者正計劃使Selenium-WebDriver成爲Selenium的未來方向。Selenium 1被提供爲了向後兼容。我們將在相應的章節討論兩者的優缺點。

我們推薦Selenium的完全新手應通讀所有的章節。然而對那些正在使用Selenium並且正在從頭開始構造一個新的測試的開發者,你或許想要選用Selenium 2,因爲這是Selenium將在未來繼續支持的部分。

支持的瀏覽器平臺


在Selenium 2.0, 支持的瀏覽器將依賴於你使用的是Selenium-WebDriver還是Selenium-RC而變化。

Selenium-WebDriver

Selenium-WebDriver支持下面的瀏覽器,以及這些瀏覽其兼容的操作系統。

        > Google Chrome 12.0.712.0+

        > Internet Explorer 6, 7, 8, 9 - 32 and 64-bit

        > Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7

        > Opera 11.5+

        > HtmlUnit 2.9

        > Android – 2.3+ 爲移動電話和平板電腦(設備或模擬器)

        > iOS 3+ 移動電話(設備或模擬器) 以及3.2+ 平板電腦(設備或模擬器)

註釋:在編寫文檔時,Android2.3有一個模擬器bug,會妨礙驅動器在設備模擬器上正常的工作。然而,在平板電腦模擬器和真實的設備上是工作良好的。

Selenium 1.0和Selenium-RC

這是舊的Selenium 1.0的支持平臺。它應該仍然適用於Selenium 2.0的Selenium-RC。

Browser  Selenium IDE  Selenium 1 (RC)  Operating Systems
Firefox 3.x  錄製和回放測試  啓動瀏覽器運測試  Windows, Linux, Mac
Firefox 3  錄製和回放測試  啓動瀏覽器運測試  Windows, Linux, Mac
Firefox 2  錄製和回放測試  啓動瀏覽器運測試  Windows, Linux, Mac
IE 8  測試執行只能通過Selenium RC*  啓動瀏覽器運測試  Windows
IE 7  測試執行只能通過Selenium RC*  啓動瀏覽器運測試  Windows
IE 6  測試執行只能通過Selenium RC*  啓動瀏覽器運測試  Windows
Safari 4  測試執行只能通過Selenium RC  啓動瀏覽器運測試  Windows, Mac
Safari 3  測試執行只能通過Selenium RC  啓動瀏覽器運測試  Windows, Mac
Safari 2  測試執行只能通過Selenium RC  啓動瀏覽器運測試  Windows, Mac
Opera 10  測試執行只能通過Selenium RC  啓動瀏覽器運測試  ;Windows, Linux, Mac
Opera 9  測試執行只能通過Selenium RC  啓動瀏覽器運測試  Windows, Linux, Mac
Opera 8  測試執行只能通過Selenium RC  啓動瀏覽器運測試  Windows, Linux, Mac
Google Chrome  測試執行只能通過Selenium RC  啓動瀏覽器運測試  Windows, Linux, Mac
Others  測試執行只能通過Selenium RC  可能部分支持**  如適用

*通過Selenium IDE在Firfox上開發的測試,可用通過一個簡單的Selenium RC命令行在任何其它的瀏覽器上執行。

**Selenium RC服務器可以啓動任何執行,但依賴於瀏覽器的安全設置,可能有技術上的限制將限制某些功能。

適應性和擴展性


你將發現Selenium是高度靈活的。有許多方法你可以增加功能到Selenium測試腳本和Selenium框架來自定義你的測試自動化。這或許是Selenium與其它自動化工具比較而言最偉大的優勢。這些自定義方法描述在貫穿本文檔的各個地方。此外,因爲Selenium是開源的,源代碼總是可以被下載和修改。

本文檔包含內容


用戶指南的以新用戶和那些已經使用過Selenium但仍在尋找附加的知識的用戶爲目標。我們介紹Selenium給新用戶,並且我們不假定先前有Selenium的經驗。然而,我們假定用戶至少有一個隊測試自動化的基本理解。對那些有經驗的用戶,本指南可以作爲一個參考資料。對有經驗的用戶,我們推薦瀏覽章節和子標題(選擇閱讀)。我們提供了有關Selenium架構的信息,常見用法的示例,和一個有關測試設計技術的章節。

本參考在剩下的章節裏提供了:

Selenium IDE介紹了Selenium IDE以及描述瞭如何使用Selenium集成開發環境構造測試腳本。如果你在編程南方面沒有多少經驗,但仍然希望學習測試自動化,這是你應該開始的地方,你會發現你可以使用Selenium IDE創建一些自動化的測試。同樣如果你是一個在編程方面有經驗的用戶,這一章可能仍然對你來說是有趣,因爲你可以使用Selenium IDE來開發你測試的快速原型。這一章也演示瞭如何“導出”你的測試腳本到一種支持的編程語言,爲了增加更多的Selenium IDE不支持的高級能力。Selenium 2 解釋瞭如何使用Selenium 2 開發一個自動化測試程序。Selenium 1 解釋如何使用Selenium RC API開發一個自動化的測試程序。提供了許多示例使用編程語言和腳本語言。同樣,Selenium RC的安裝和設置也被包含在這一章。描述了Selenium RC支持的各種各樣的模式或配置,以及他們的優缺點和限制。提供了一個構架圖有助於演示這些關鍵點。對新的Sel-R用戶感覺困難的經常發生的公共問題的解決方案也在本章描述,例如,處理安全證書,https請求,彈出和打開一個新的窗口。測試設計考慮這一章提供了Selenium-WebDriver和Selenium RC使用的編程技術。我們也演示了一些在用戶論壇上經常提及的一些技術,諸如如何設計setup和teardown函數,如何實現數據驅動的測試(可以在多次測試時改變數據的測試),以及其他的公共的測試自動化編程方法。Selenium柵格這一章仍然沒有被開發出來。用戶擴展描述了Selenium可以被修改,擴展和自定義的方法。

文檔團隊 - 作者們的過去和現在


按字母的順序,下面的人員對本用戶指南的創作,它的發佈結構或兩者做出了重要的貢獻。我們非常感激他們所有的人。

 Dave Hunt
 Luke Inman-Semerau
 Mary Ann May-Pumphrey
 Noah Sussman
 Paul Grandjean
 Peter Newhook
 Santiago Suarez-Ordonez
 Simon Stewart
 Tarun Kumar
 

致謝

特別感謝Patrick Lightbody。作爲一個SeleniumHQ站點的管理員,對Selenium RC的主要貢獻者,他的支持是無價的,對編寫本用戶指南的第一個發佈。Patrick幫助我們理解我們的讀者。他爲了我們每一個人發佈本文檔到seleniumhq.org提供了所需的一切。同樣要感謝Andras Hatvani 有關在發佈解決方案上的建議,感謝Amit Kumar參與我們的討論並協助審覈本文檔。

當然,我們必須對Selenium的開發者致謝。他們真的設計了一個令人驚奇的工具。沒有最初的設計者的想象力,和現在的開發者的不斷地努力,我們就不會有這樣一個很棒的工具需要推薦給你。


© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.

目錄    上一頁    下一頁

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章