如何”即時”的啟動多個所需要的測試環境 (Docker應用)
這篇文章主要說明自動化測試程式的環境如何可以即時的啟動測試?
當我們要做自動化測試的時候,常常需要準備一些環境來做相容性測試,
例如 FireFox, Chrome不同瀏覽器的最近 2-3個版本。
因此,傳統的做法是用實體機器或是Virtual Machine,
通常這些環境需要開機的 StandBy ,相對的也會占用系統資源,
如何在需要的時候才啟動而且是”即時”啟動完成,就是這篇要介紹的重點。
Docker 的出現讓需要的時候 on-demand 與即時 real-time 的測試環境變得容易。
為什麼不用 VMWare or VirtualBox? 要用 Docker?
如果使用 VMware or VirtualBox 所建構的虛擬測試環境,
這個環境因為包含整個作業系統,因此佔用的系統資源很大,
另外,Virtual Machine 因為需要整個作業系統開機,啟動需要比較長的時間
因此,多半的情況下,透過 Virtual Machine所準備的環境,
我們通常是將該環境維持開啟啟動的狀態 standby,當然 idel的時間比較長也相對占用系統資源。
相對的Docker 的Containers本質是 Application 但是可以模擬出 Virtual Machine 的獨立作業系統環境。
由於Docker 的Containers 不包含作業系統,啟動的速度很快,就像啟動一般的 Application 。
因此,使用Docker,可以讓我們自動化測試程式在需要的時候,當下、動態、即時的啟動 Containers 符合我們測試需要的環境
測試環境情境
我們主要透過 Docker 建立Selenium GRID的測試環境,
會有 3 個 containers 被啟動,三個的角色分別為:
- Selenium Hub
- Selenium Node 1(FireFox)
- Selenium Node 2 (Chrome)
Docker 測試環境建立
0. 安裝 Docker
根據作業系統的不同有不同的安裝方式,可以參考 https://docs.docker.com/installation/
1. 安裝Docker compose
主要透過 docker Compose來”同時”建立多個 containers
https://github.com/docker/compose/releases/
https://docs.docker.com/compose/install/
安裝步驟如下
|
或
|
檢查是否有安裝成功?
docker-compose |
2. 建立 docker-compose.yml
接著要建立一個檔案,docker-compose.yml
這個檔案主要用來啟動多個 containers,檔案內容如下
[pastacode lang=”markup” message=”” highlight=”” provider=”manual”]
hub:
image: selenium/hub
ports:
- "4444:4444"
firefox:
image: selenium/node-firefox
links:
- hub
chrome:
image: selenium/node-chrome
links:
- hub
[/pastacode]
3. 啟動 Docker containers
透過下列指令,就可以同時啟動三個 Docker containers
docker-compose -f ~/docker-compose.yml up -d |
containers啟動成功之後,利用瀏覽器瀏覽 http://localhost:4444/grid/console
就可以看到 Selenium Hub 與 Selenium Node (FireFox , Chrome )是否有註冊連接成功
同時啟動五個 fireFox 環境
docker-compose scale firefox=5 chrome=5 |
停止 Containers執行
docker-compose -f ~/docker-compose.yml stop && docker-compose -f ~/docker-compose.yml rm -f |
參考資料
https://github.com/SeleniumHQ/docker-selenium