持續集成是一個自動化的周期性的集成測試過程,從檢出代碼、編譯構建、運行測試、結果記錄、測試統計等都是自動完成的,無需人工干預。我們的項目都是團隊協作開發,采用持續集成的優勢顯而易見:
持續集成最大的好處在于能夠盡早高效發現問題,降低解決問題的成本。而發現問題的手段主要就是測試。
根據 Martin Fowler 的測試理論,測試應該遵循如下測試金字塔組合,測試金字塔最底層是單元測試,然后是集成測試,繼而是面向應用程序服務層的中間層測試,最高層是面向用戶的業務邏輯測試:
測試自動化的測試層級越多,持續集成平臺就能產生越大的價值。
UI 測試目標是覆蓋最核心的代碼,盡可能去掉依賴,讓不穩定因子降到最低,這樣既保證自動化測試層級的全面性,又保證持續集成的穩定構建,降低測試的投入產出比。因此,在我們的 UI 自動化測試中,我們選擇核心功能的冒煙用例來完成持續集成中的測試金字塔。
Jenkins 是一個開源的持續集成工具,提供了一種易于使用的持續集成系統,使開發者從繁雜的集成中解脫出來,專注于更為重要的業務邏輯實現上。
Jenkins 以 Job 為單位運行項目,一個 Job 的工作流程為:在指定的時機,選擇合適的 salve 節點,從版本管理系統上獲取對應的源碼,使用命令行腳本或者 maven 或者 ant 進行構建,構建后歸檔文件,處理報告,如果構建失敗那么就通過郵件進行反饋等。
Job 的觸發時機主要有3種選擇: