Pages

搜尋此網誌

2015年4月27日 星期一

前端自動化測試之 Selenium docker 環境 debug 指南

"前端自動化測試之 Selenium docker 環境 debug 指南

enter image description here

繼上次的 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

實際執行的畫面如下

enter image description here

非常乾淨的桌面,因為他只作為 Selenium 運作而存在。

結論

所謂自動化測試,雖說是自動化,很多時候還是會跟開發環境有出入,最不負責任的說法就是:

  • 我的環境可以,所以不是問題。
  • 我看不到畫面,沒辦法 debug。
  • 自動化測試跟一般開發環境不一樣。

所以,自動化測試要能夠 work,還有一個很重要的因素,就是要能夠 debug,讓整個過程能夠被觀測,進而進行狀況排除,特別是前端測試,更需要實際運行畫面的存取。

就我自己的經驗,就算 e2e docker 的測試環境已經可以在 jenkins 正常運作,其測試結果還是跟我自己的 Mac 開發機有出入,也幸好上述的方式可以讓我進行相關微調。

現在在專案所運行的 e2e test 不管是 Mac 的開發環境或是 jenkins 上的自動化測試結果皆相同,在正確通過測試的基礎下,異常狀態將可以被偵測。

完成這一段不容易,能夠導入的應該也不多,給需要的人參考。

張貼留言