Milktea Skills TDD
一次完成一個可觀察行為。測試保護需求,不綁內部實作。
由臨時開發 Agent 執行;Implement Coordinator 只設定要求、接收證據與管理關卡。
適用判斷
必須使用:
- 新增或修改可觀察行為。
- 修正 Bug 或回歸問題。
- 實作具有分支、狀態或轉換規則的邏輯。
文件、純格式、機械搬移、生成檔或沒有穩定測試接縫的變更可不使用;必須記錄原因與替代驗證。不得為了形式覆蓋率製造無價值測試。
前提
- Ticket 已定義行為、驗收條件與測試接縫。
- 已知測試框架、最小測試指令與完整驗證指令。
- 已讀取
docs/planning/requirements.md、docs/planning/architecture.md、CONTEXT.md、相關 ADR 與既有測試慣例。
缺少測試接縫時回報 Implement Coordinator,不得在執行階段自行發明或重新訪談。
基準
- 執行最小相關測試,記錄既有失敗。
- 選定一個尚未成立的可觀察行為。
- 從 Spec、Ticket 或已核准範例取得預期結果。
循環
每次只處理一個垂直切片:
- Red:透過公開介面新增一個測試;執行並確認它因預期原因失敗。
- Green:只寫足以通過該測試的程式;執行目標測試。
- Refactor(必要時):只有目前切片出現明確重複、命名或結構問題時才做最小整理;不為了形式擴大重構。執行後重新跑目標測試。
- 通過後再選下一個行為。
測試一開始就通過時,先確認需求是否已存在、測試是否無效或 Bug 是否未重現;不得假裝完成 Red。
測試規則
- 從公開介面驗證輸入、輸出與副作用。
- 不測私有方法、內部呼叫次數或可任意重構的結構。
- 預期值必須來自 Spec、已知範例或獨立真值,不複製實作算法。
- 只在外部、昂貴、隨機或不可控制的邊界使用 Mock;不 Mock 被測模組內部。
- Bug 修正先寫能重現問題的回歸測試。
- 不一次寫完整測試套件後才實作。
- 不為了讓測試通過而降低正確斷言或改寫已核准需求。
回報
Red/Green/Refactor 是 Developer 的內部迭代,不逐切片回報 Coordinator。保留必要輸出,首次準備 Ready for Review 時一次交付:
- 完成的行為與測試接縫。
- 能證明 Red 因預期原因失敗的最小證據。
- 最終目標測試的指令、退出碼與關鍵輸出。
- 既有失敗、跳過項目與理由。
完整驗收只由 Implement 的 Ready for Review 關卡執行一次;Findings 修正後依 Coordinator 指定的影響範圍重跑,不在每個 TDD 切片重跑全套。