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