使用持續整合
透過自動化測試驗證,開發人員能更頻繁地將其工作成果合併至共享的分支,達成非同步協作。合併的頻率越頻繁、貢獻的規模越小,在合併時所發生的衝突就越容易解決。
自動化測試所有功能,使人更加信賴貢獻內容發揮其功用且沒有引發任何錯誤,同時讓審查人員專注在貢獻的結構與作法。測試越聚焦,就越容易辨識並瞭解所出現的問題。
以文件記錄程式基底的持續整合工作流程,能協助貢獻者瞭解對貢獻內容的期待。持續整合讓 監管程式基底狀態變得更為簡單。
需求規定
- 原始碼中的所有功能,都「必須」有自動化測試。
- 所有貢獻內容都「必須」先通過自動化測試,才能上傳至程式基底。
- 程式基底「必須」有解說如何撰寫貢獻內容結構的相關指引。
- 程式基底「必須」有能夠審查貢獻內容的活躍貢獻者。
- 「應該」公開貢獻內容的自動化測試結果。
- 程式基底指引「應該」指出,每次的貢獻內容都只應聚焦在單一議題上。
- 「應該」監管原始碼測試與文件的涵蓋範圍。
- 「可選擇」是否測試政策和文件,與原始碼之間有無一致性,或是反之亦然。
- 「可選擇」是否測試政策和文件所採用的樣式,以及連結有無失效。
- 「可選擇」是否使用文件中的範例來測試軟體。
測試方式
- 確認有測試可用。
- 確認原始碼覆蓋率工具能檢查到 100% 的原始碼。
- 確認貢獻內容只有在通過所有測試後,才會認可上傳至程式基底。
- 確認有貢獻指引解說如何撰寫貢獻內容的結構。
- 確認最近三個月內有貢獻內容上傳。
- 檢查是否可以查看測試結果。
- 檢查是否有公布原始碼覆蓋率數據。
公共政策制定者:需要的工作
- 儘早讓管理人員、開發人員與設計師一同加入,並且讓他們持續參與您政策的制定程序。
- 確保政策文件也有設好自動化測試。
- 如果政策文件未能通過測試,請快速修正。
- 確保原始碼能反映出政策的任何變動(請參閱〈維護版本控制〉)。
管理人員:需要的工作
- 確保能儘快且經常給真正的終端使用者進行測試。
- 以頻繁整合少量部分內容的方式做專案規劃,而非久久一次繳交大量部分內容。
- 聘請有能力處理漸進式交付,並跟得上規劃進度的顧問服務。
- 發生重大失誤後,鼓勵公開事故報告,以及公開討論事後學到的教訓。
開發人員與設計師:需要的工作
- 協助管理人員擬定工作規劃,例如規劃成可以拆分成小部分逐次整合。
- 協助貢獻者聚焦其貢獻內容與功能請求,讓涵蓋範圍盡可能合理地縮小。
- 協助管理人員與政策制定者測試其貢獻內容,例如測試其貢獻內容中的失效連結或樣式。
- 編排原始碼結構時,要將難以在測試環境下創造出來的情況,得以在測試過程中模擬出來。例如硬碟空間不足、記憶體分配失敗等資源耗盡情況,都是難以創造的典型案例。
- 調整程式碼覆蓋率測試工具,避免在 inline 過程或其他最佳化處理時得到假警報。
- 經常部署。
- 至少每天整合工作內容一次。
延伸閱讀
- Martin Fowler《什麼是持續整合》。
- 英國政府數位服務團《使用持續交付》。
- 英國政府數位服務團《品質保證:定期測試您的服務》。