background image

Sep 06 2020

透過Jenkins啟動Selenium Grid執行自動化測試

寫在前面

一般我們上線流程都含有QA的測試階段,QA的測試與RD的開發有著很大的區別...

QA測試當然不是只測試RD這次上線的範圍而已,而是把過去上線的功能都要在驗過一遍才能算是經過QA測試的版本,但是隨著時間的積累線上的系統越來越多 有時候QA無法透過手動的方式完成所有驗證,這時候都會導入自動畫測試selenium來協助QA做完系統的驗證,在目前我服務的公司把CD與自動化測試的部分做了整合, 當QAT部署完成後就會驅動QA的自動化驗證,但是當自動化驗證的Job越來越多一台機器已經很難在3-5分鐘內完成自動化測試怎麼辦?

在網路上很多採用Selenium Grid的人,大多都是有一個需求是多瀏覽器測試,目前我們只針對chrome做測試但他也能在多台機器上為我們完成許多 自動化測試的需求,我們則是因為許多小而美的自動化測試需要被完成

在做自動化測試的時候,我的建議是每一次只驗證一項功能是否如我們預期的運作,然後把每個工作都拆分成小的Task來完成

好處是可以透過Selenium Grid同時執行驗證減少時間成本,另外也可以避免某一個功能驗證失效,而導致後面的功能無法驗證

架構說明

Jenkins我是採用Master跟Agent的方式建制的,Selenium 也適用Hub跟Node的方式建置的

jenkins 與 Selenium Grid架構圖
jenkins 與 Selenium Grid架構圖

Jenkins與Selenium均採用docker並結合docker compose起動,這邊是我撰寫的docker-compose.yml

在Selenium Node的部分是採用linux的版本,主要原因是雲端服務的Windows機器價格比較高,所以在部署服務上以linux為主

建立Jenkins test agent的docker image

在test agent 的dockerfile我選用了ubuntu作為base image,時區的部分設定到了台北並安裝openjdk等等的套件

最後將Jenkins的Job指定到Test Agent上執行,在Selenium的部分把webdriver的設定改道遠端的位置上就可以享受Selenium Grid了!

參考資料

Selenium Grid 中文文黨

文章標籤