重點摘要#
- Commit-and-run(提交後就跑)是一種犯罪行為,因為它會破壞團隊的工作節奏
- 開發者為了節省自己的時間而浪費整個團隊的時間,是不尊重他人的行為
- 架構師的職責是確保系統有健全的自動化測試架構,讓測試能快速執行
- 投資在讓系統快速可測試上,能減少「偷懶提交」的動機
詳細內容#
一個常見的場景#
下午時分,團隊正在全力衝刺迭代的最後功能。John 趕著赴約,匆忙完成程式碼,編譯後就提交離開了。幾分鐘後,紅燈亮了 — 建置失敗。John 沒有時間執行自動化測試,他做了一次 commit-and-run,讓所有同事陷入困境。
Commit-and-run 是一種犯罪行為,因為它會扼殺團隊的工作流(flow)。這是開發者為了節省自己的時間,卻浪費其他人時間最常見的方式之一,而且是非常不尊重他人的行為。
為什麼會發生?#
通常是因為建置系統太慢,或者測試執行時間太長。如果人們必須等待電腦,他們就會走捷徑,而這些捷徑往往會給其他人造成問題。
架構師的角色#
這正是架構師應該介入的地方。如果你已經投入大量心力建立了靈活的架構、教導開發者敏捷實踐、設置了持續整合伺服器,那你也應該培養一種文化:不允許以任何方式浪費他人的時間和工作流。
為了達成這個目標,架構師需要確保:
- 系統有健全的自動化測試架構
- 測試能快速執行 — 如果測試跑得快,開發者就會更頻繁地執行
- 依賴外部系統的測試改用 mock 或 stub,或至少使用記憶體資料庫
- 系統被分割成較小的模組,減少相依性
投資在讓系統快速可測試上。使用 mock、建立模擬器、減少依賴、將系統分割成較小的模組。確保沒有人有任何理由想做 commit-and-run。
— By Niclas Nilsson