這幾天正好把兩年多前搭建的用於自動跑自動化測試應例 的 Jenkins 系統升級到最新版本。當年搭建這個框架也是頗費一番周折,(可惜僅忙於搭建,沒有記錄下來)現在正好是個時機整理下。
在整個測試團隊中,自動化測試雖然帶來了回歸測試的便利。但是往往會花費比較多的人力來運行、管理、跟蹤整個自動化測試。尤其是運行和管理,如果沒有一個好的平台(框架),本身維護的 effort就不是一個團隊能輕易接受的。
在比較大且長期的項目中,往往會開發一個完整的平台來整合這些自動化測試相關的日常工作。筆者曾經在一個團隊中維護過這樣的平台。從測試任務的觸發->測試虛擬機鏡像的准備->鏡像的部署->測試應例的運行->測試結果自動分析->測試報告生成,這一系列的過程自動完成。但是這些理想化的結果的背后,現實是一整個獨立團隊的開發、維護。而這並不是所有的測試團隊可以接受的。
但是今天給大家介紹的這個輕量化的框架,卻是簡單實現,易於維護。並且有很好的應用結果。其具有以下幾個優點:
- 基於成熟的測試工具。Jenkins 是目前業內最流行的快速持續集成工具之一, 其穩定的性能和豐富的擴展性, 使得很多的團隊都優先選擇它作為項目的主要支持工具。其屬於主流工具,很多團隊已經有過相應的經驗,可以大大縮短學習曲線和成本。
- 方便的定制自動化測試job。Jekins 擁有自己的Web 界面。按照需求方便地創建所需的自動化測試任務。
- 所有的自動化執行歷史記錄都可以保存在平台上。可以通過 Web 的方式隨時查閱。同時也可以在job的后期處理時,寫入現有的數據庫,方便以后選擇其他的展示方式。
- Jenkins 支持豐富的插件,用戶可以按照需求進行選擇安裝和配置,以實現生成執行狀態表格,自動部署/更新自動化測試包等高級功能.
測試框架主要是基於 Jenkins 自帶的 Master/Slave 結構。如下圖
主要的工作流程,如下圖
主要腳本實現的功能介紹:
Trigger.py 監測軟件測試版本的發布,包括客戶端發布和服務器端發布。偵測到新版本發布后,記錄下 version 號。作為后期 job 的 label 使用。
PrepareProcess.py 在偵測到新版本后,觸發一系列的准備工作。同步最新的測試工具,測試應例到 master 端,方便后面 slave 能夠從 master 同步最新的 code。
startTest.sh/startTest.bat 唯一部署在 slave 上的腳本,主要任務就是建立與 master 的連接,同步最新的測試工具,測試應例,然后觸發測試執行。
Install.py 在 startTest 同步完所有運行需要的文件之后。開始安裝客戶端 (瀏覽器系統清理),准備好所有自動化運行前的准備。
RunCase.py 控制所有類型的自動化運行。譬如,客戶端和瀏覽器純 web 的回歸測試, 性能測試。最后把結果返回給 master 和寫入數據庫。