隨著軟件測試的快速發(fā)展,自動化測試已經(jīng)成為當前的主流技術。中培《軟件自動化測試與持續(xù)集成最佳實踐》專家劉老師指出,從使用的基本技術來說,自動化集成測試和單元測試在很多方面都很相似。你可以使用相同的測試運行器和構建系統(tǒng)的支持。自動化集成測試和單元測試的主要區(qū)別在于使用了相對較少的mocking。
當一個單元測試簡單地模擬從后端數(shù)據(jù)庫返回的數(shù)據(jù)時,集成測試則會使用一個真實的數(shù)據(jù)庫來測試。數(shù)據(jù)庫是一個你需要的測試資源類型以及能暴露問題的極好例子。
自動化集成測試可能會很棘手,在選擇時需要小心。
假如你在測試一個只讀的中間件適配器,例如數(shù)據(jù)庫的SOAP適配器,可能需要使用產(chǎn)品數(shù)據(jù)庫的拷貝來做測試。數(shù)據(jù)庫的內(nèi)容需要可預測和可重復,否則很難去編寫和運行測試。
這里的附加價值在于我們在使用產(chǎn)品數(shù)據(jù)的拷貝。它可能包含了從頭開始創(chuàng)建測試數(shù)據(jù)時很難預測到的數(shù)據(jù)。這和人工測試的需求一樣。使用自動化集成測試,你需要更多的自動化而不是人工測試。對于數(shù)據(jù)庫來說,這并不是很復雜。自動化的數(shù)據(jù)庫備份和恢復是眾所周知的操作。
在構建自動化測試實驗臺時,使用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)起來比較耗時,盡管這種方式具有一定的實用價值!
想了解更多IT資訊,請訪問中培偉業(yè)官網(wǎng):中培偉業(yè)