繼上次的 docker e2e 自動化測試的文章,本篇要在說明一下在自動化測試環境的 debug 方式。
docker e2e 自動化測試中有提到在 Selenium 官方的 docker 雖然沒有辦法在 ubuntu 上的 jenkins 當作測試環境,但可以在自己的機器上進行 debug,以便釐清在自動化測試報錯時,實際的狀況如何。
第一步
定義環境變數
export SELENIUM_IP=11.22.33.44
export HTTP_IP=55.66.77.88
在這邊 SELENIUM_IP 指的是測試標的 server 的 IP,若你是用 Mac 運行 docker 要取得 docker 的 IP 需要透過 boot2docker ip
來取得。
而 browser 因為在 docker 內,所以也需要知道運行 server 實體的 IP 位置,所以要指定 server 的 IP,如此 docker 內的 browser 才能連到正確的網址
設定好環境變數,再來就是要進行安裝。
Selenium 官方的 docker install
安裝指令
git clone https://github.com/SeleniumHQ/docker-selenium.git
cd docker-selenium
docker pull ubuntu:14.04
VERSION=local make build
docker run -d --name selenium-hub -p 4444:4444 selenium/hub:2.45.0
docker port $(docker run -d -P --link selenium-hub:hub selenium/node-chrome-debug:2.45.0) 5900
執行完最後一句,理論上會有類似下面的訊息
#=> 0.0.0.0:49338
指的就是你的 vnc 連結,port 預設密碼為 secret
在 mac 底下若你有用 alfred,可以鍵入下列網址:
vnc://SELENIUM_IP:49160
實際執行的畫面如下
非常乾淨的桌面,因為他只作為 Selenium 運作而存在。
結論
所謂自動化測試,雖說是自動化,很多時候還是會跟開發環境有出入,最不負責任的說法就是:
- 我的環境可以,所以不是問題。
- 我看不到畫面,沒辦法 debug。
- 自動化測試跟一般開發環境不一樣。
所以,自動化測試要能夠 work,還有一個很重要的因素,就是要能夠 debug,讓整個過程能夠被觀測,進而進行狀況排除,特別是前端測試,更需要實際運行畫面的存取。
就我自己的經驗,就算 e2e docker 的測試環境已經可以在 jenkins 正常運作,其測試結果還是跟我自己的 Mac 開發機有出入,也幸好上述的方式可以讓我進行相關微調。
現在在專案所運行的 e2e test 不管是 Mac 的開發環境或是 jenkins 上的自動化測試結果皆相同,在正確通過測試的基礎下,異常狀態將可以被偵測。
完成這一段不容易,能夠導入的應該也不多,給需要的人參考。
沒有留言:
張貼留言