構建(Build)驗證只對軟件的主干功能進行初步測試,具有頻率高和重復性強的特點,所以各軟件產品的 Build 驗證都力圖實現 100% 自動化。本文給出了一種在不影響現有遠程 Build 服務器的前提下,實現面向復雜軟件的 Build 自動驗證的解決方案,該方案具有一定的普遍性意義。
Build 驗證測試(Build Verification Test)是測試過程的第一步,通常只對軟件的主干功能進行初步測試,通過驗證的 Build 才能轉給功能測試人員進行大規模的細化測試,以此確保功能測試人員不會由于安裝壞 Build 而浪費時間。
在持續集成的軟件開發過程中,構建(Build)服務器一般每天都會編譯最新的源代碼并構建新的 build,這就要求 Build 驗證也以同樣的頻率緊隨進行。另一方面,由于軟件的主干功能通常比較穩定,所以 Build 驗證的重復性較強。正是因為這兩個特點,各軟件產品的 Build 驗證都力圖實現 100% 自動化。
相對 Build 的手工驗證,自動驗證能夠帶來以下好處:
- 讓 Build 驗證人員從枯燥的,簡單的重復性測試中解脫出來。
- 自動驗證的執行速度比手工驗證更快,允許開發人員在最短的時間內獲知新 Build 中存在的嚴重問題,并進行及時修復,功能測試人員也能更快獲取值得信賴的新 Build 。
- Build 自動驗證系統 7 × 24 小時工作,不受白天黑夜以及人員假期的影響。當 Build 驗證人員和開發(及功能測試)人員在時區和國度上存在差異的時候,手工驗證就容易滯后。
但是,Build 驗證的自動化在前期需要較大的開發工作量。另外,如何使得 Build 自動驗證系統能夠長期穩定運行,也是一個棘手的問題。任何一個環節的錯誤(例如,軟件安裝測試后的環境清理),都會造成系統崩潰。雖然不同軟件的 Build 自動驗證的具體實現五花八門,但本文力圖提取其中的不變部分,給出一個具有一般性意義的 Build 自動驗證解決方案。此方案已被用于 Websphere Business Monitor 的 Build 自動驗證,實際運行結果證明其能在無人干預的情況下長期穩定運行。
Build 驗證的自動化解決方案
源代碼配置管理服務器和構建(Build)服務器是自動化開發環境的一個基本子集,構建(Build)服務器定期編譯最新源代碼,并生成面向測試人員的 Build 。為了在自動化開發環境中增加 Build 自動驗證的功能,這個基本拓撲需要被進一步擴展。如圖 1 的紅框部分所示,我們添加了構建(Build)驗證服務器和驗證結果發布服務器。
圖 1. 帶 Build 自動驗證的自動化開發環境

構建(Build)驗證服務器
構建(Build)驗證服務器運行 Build 自動驗證程序。如何啟動 Build 自動驗證程序?一般來說,有以下兩種方案:
- 由構建(Build)服務器觸發。構建(Build)服務器每次生成新的 Build 之后,主動啟動構建(Build)驗證服務器上的 Build 自動驗證程序。
- 由構建(Build)驗證服務器觸發。構建(Build)驗證服務器定時輪詢構建(Build)服務器,一旦發現新的 Build,則馬上下載驗證。
考慮到構建(Build)服務器的重要性,Build 自動驗證應該盡量避免對它的影響。方案 1 顯然要求修改構建(Build)服務器上的構建腳本,而方案 2 則對其沒有任何影響,所以我們選擇方案 2 。
文章來源于領測軟件測試網 http://www.kjueaiud.com/