在自動化測試中使用Docker
在構建自動化測試實驗臺時,使用Docker會非常方便。它在功能性的級別上添加了一些單元測試的特性。如果你的應用由集群中的幾個服務器組件構成,你可以用一些容器來模擬整個集群。Docker為集群提供了虛擬網(wǎng)絡,在網(wǎng)絡層面上讓集群中的容器交互。
Docker可以很容易將容器恢復到一個已知的狀態(tài)。如果你在Docker容器中運行測試數(shù)據(jù)庫,你可以很輕松地將數(shù)據(jù)庫恢復到測試開發(fā)之前的相同狀態(tài)。這和單元測試中After方法恢復環(huán)境類似。
持續(xù)集成服務器Jenkins已經(jīng)支持啟動和停止容器,在使用Docker做自動化測試時會比較有用。
使用Docker Compose來運行你需要的容器也是一個有用的選擇。
Docker還很年輕,使用Docker做測試自動化有時候需要編寫并不優(yōu)雅的膠水代碼(glue code)。
舉個簡單的例子,啟動可以交互的一個數(shù)據(jù)庫容器和一個應用服務器容器。啟動容器的基本過程比較簡單,并且可以通過shell腳本或者Docker Compose來完成。但是,由于我們要在已經(jīng)啟動的應用服務器上運行測試,如何才能知道它已經(jīng)正常啟動了?在WildFly容器的場景下,除了監(jiān)控輸出日志中特定字符串的出現(xiàn)或者輪詢web socket之外,沒有什么明顯方式判斷容器的運行狀態(tài)。在任何情況下,這些hack的方式都不甚優(yōu)雅,而且實現(xiàn)起來比較耗時。盡管最終的結果還是能值回票價的。