透過Docker動態的啟動自動化測試需要的測試環境

透過Docker動態的啟動自動化測試需要的測試環境

這篇文章主要說明如何利用 Docker 建構測試需要用的測試環境。

使用Docker 最大的優點是可以即時啟動所需要的測試環境,減少開機的等待時間。

我們主要利用 Selenium GRID 的架構,透過Docker建置測試環境。

Selenium GRID

Selenium GRID 需要三個環境。一個是 Selenium HUB主要用來控制並且佈署測試程式到各個 Node。

另外兩個分別是 Selenium Node (FireFox與 Chrome)

  • The Selenium Grid hub
  • The Firefox Selenium Grid node
  • The Chrome Selenium Grid node

因此,我們會準備三個 Docker Image。

安裝 Docker 於 Ubuntu

首先必須先將Docker 環境安裝設定好。這些步驟只會發生一次性的環境設定。

Ubuntu 環境需求: 64bit is required. 3.8 kernel is recommended.

參考指令如下

  • sudo su
  • service docker.io status
  • uname -a
  • apt-get update
  • apt-get install -y docker.io

安裝完之後,可以用下列指令確定 Docker是否有安裝成功

  • service docker.io status
  • docker -v
  • docker version

安裝Docker參考資料

https://docs.docker.com/installation/ubuntulinux/

 

下載 Selenium GRID Docker Images

接著利用下列指令,下載 Selenium GRID 相關 Images

  • docker pull selenium/hub:2.45.0
  • docker pull node-firefox:2.45.0
  • docker pull node-chrome:2.45.0

執行啟動 Selenium GRID

啟動 Selenium GRID HUB

首先我們先啟動 Selenium GRID HUB

  • docker run -d -p 4444:4444 –name selenium-hub selenium/hub:2.45.0
  • docker ps
  • http://127.0.0.1:4444/grid/console

啟動成功之後,用瀏覽器會到下列畫面

 

啟動 Selenium GRID Node FireFox

接著分別啟動 FireFox Node,與兩個 Chrome Nodes

  • docker run -d –link selenium-hub:hub selenium/node-firefox:2.45.0
  • docker run -d –link selenium-hub:hub selenium/node-chrome:2.45.0
  • docker run -d –link selenium-hub:hub selenium/node-chrome:2.45.0

 

關閉所有 Docker Containers

如果測試完畢,可以利用下列指令關閉所有的 Running Docker Containers

docker stop $(docker ps -q)

docker rm $(docker ps -qa)

 

CI 自動化測試流程

一般來說每一次的測試流程會用的指令如下

啟動Selenium GRID Docker Images

  • docker run -d -p 4444:4444 –name selenium-hub selenium/hub:2.45.0
  • docker run -d –link selenium-hub:hub selenium/node-firefox:2.45.0
  • docker run -d –link selenium-hub:hub selenium/node-chrome:2.45.0

執行測試程式,例如 Selenium_Remote_webDriver_Testing.py

  • Python   Selenium_Remote_webDriver_Testing.py

測試程式執行結束後,關閉Docker Containers

  • docker stop $(docker ps -q)
  • docker rm $(docker ps -qa)

 

Leave a Reply

Your email address will not be published. Required fields are marked *