快速上手
如果你對 Selenium 自動化測試已經非常熟悉,你僅僅需要一個快速上手來使程序運行起來。本章節的內容能滿足不同的技術層次,但是如果你僅僅需要一個可以快速上手的指引,那么顯得有點多。如果是這樣,你可以參考 Selenium Wiki 的相關文章。
什么是 Selenium-Grid ?
Selenium-Grid 允許你在多臺機器的多個瀏覽器上并行的進行測試,也是說,你可以同時運行多個測試。本質上來說是,Selenium-Grid 支持分布式的測試執行。它可以讓你的測試在一個分布式的執行環境中運行。
何時需要使用
通常,以下兩種情況你都會需要使用 Selenium-Grid。
在多個瀏覽器中運行測試,在多個版本的瀏覽器中進行測試,或在不同操作系統的瀏覽器中進行測試。
減少測試運行時間。
Selenium-Grid 通過使用多臺機器并行地運行測試來加速測試的執行過程。例如,如果你有一個包含100個測試用例的測試套件,你使用 Selenium-Grid 支持4臺不同的機器(虛擬機或實體機均可)來運行那些測試,同僅使用一臺機器相比,你的測試所需要的運行時間大致為其 1/4。對于大型的測試套件和那些會進行大量數據校驗的需要長時間運行的測試套件來說,這將節約很多時間。有些測試套件可能要運行好幾小時。另一個需要縮短套件運行時間的原因是開發者檢入(check-in)AUT 代碼后,需要縮短測試的運行周期。越來越多的團隊使用敏捷開發,相比整夜整夜的等待測試通過,他們希望盡快地看到測試反饋。
Selenium-Grid 也可以用于支持多執行環境的測試運行,典型的,同時在多個不同的瀏覽器中運行。例如,Grid 的虛擬機可以安裝測試必須的各種瀏覽器。于是,機器 1 上有 ie8,機器 2 上有 ie9,機器 3 上有新版的 chrome,而機器 4 上有新版的 firefox。當測試套件運行時,Selenium-Grid 可以使測試在指定的瀏覽器中運行,并且接收每個瀏覽器的運行結果。
另外,我們可以擁有一個裝有多個類型和版本都一樣的瀏覽器 Grid。例如,一個 Grid 擁有 4 臺機器,每臺機器可以運行 3 個 firefox 12 實例,形成一個 firefox 的服務農場。當測試套件運行時,每個傳遞給 Selenium-Grid 的測試都被指派給下一個可用的 firefox 實例。通過這種方式,我們可以使得同時有 12 個測試在并行的運行以完成測試,顯著地縮短了測試完成需要的時間。
Selenium-Grid 非常靈活。以上兩個例子可以聯合起來使用,這樣可以可以使得不同類型和版本的瀏覽器有多個可運行實例。使用這樣的配置,既并行地執行測試,同時又可以測試多個瀏覽器類型和版本。
Selenium-Grid 2.0
Selenium-Grid 2.0 是在編寫本文時(5/26/2012)已發布的新版本。它同版本 1 有很多不同之處。在 2.0 中,Selenium-Grid 和 Selenium-RC 服務端進行了合并。現在,你僅需要下載一個 jar 包可以獲得它們。
Selenium-Grid 1.0
版本 1 是 Selenium-Grid 的第一個發布版本。如果你是一個 Selenium-Grid 新手,你應該選擇版本 2 。新版本已經在原有基礎上進行了更新,頁增加了一些新特性,并且支持 Selenium-WebDriver。一些老的系統可能仍然在使用版本 1.關于 Selenium-Grid 版本 1 的信息可以參考 Selenium-Grid website
Selenium-Grid 的 Hub 和 Nodes 是如何工作的?
Grid 由一個中心和一到多個節點組成。兩者都是通過 selenium-server.jar 啟動。在接下來的章節中,我們列出了一些例子。
中心接收要執行的測試信息,包括在哪些平臺和瀏覽器執行等。它知道每個注冊了的節點的配置。根據測試信息,它會選擇符合需求的節點進行測試。一旦選定了一個節點,測試腳本會初始化 Selenium 命令,并且由重心發送給選定的要運行測試的節點。這個節點會啟動瀏覽器,然后在瀏覽器中執行這個 AUT 的 Selenium 命令。
我們提供了一些圖標來演示其原理。第二張圖標是用以說明 Selenium-Grid 1 的,版本 2 也適用并且對于我們的描述是一個很好的說明。的區別在于相關術語。使用“Selenium-Grid 節點”替換“Selenium Remote Control”即符合我們對 Selenium-Grid 2 的描述。
下載
下載過程很簡單。從 SeleniumHq 站點的下載頁面下載 Selenium-Server jar 包。你需要的鏈接在“Selenium-Server (以前是 Selenium-RC)”章節中。
將它存放到任意文件夾中。你需要確保機器上正確的安裝了 java。如果 java 沒有正常運行,檢查你系統的 path 變量是否包含了 java.exe 的路徑。
啟動 Selenium-Grid
由于節點對中心有依賴,所以你通常需要先啟動一個中心。這也不是必須的,因為節點可以識別其中心是否已經啟動,反之亦然。作為教程,我們建議你先啟動中心,否則會顯示一些錯誤信息,你應該不會想在第一次使用 Selenium-Grid 的時候看到它們。