agentskills.codes

測試驅動開發(TDD)工作流程 - 實作前必須參考

Install

mkdir -p .claude/skills/tdd-isbrian && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15615" && unzip -o skill.zip -d .claude/skills/tdd-isbrian && rm skill.zip

Installs to .claude/skills/tdd-isbrian

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

測試驅動開發(TDD)工作流程 - 實作前必須參考
25 charsno explicit “when” trigger

About this skill

[!IMPORTANT] 通訊規範:在執行此技能的過程中,所有與用戶的溝通及回覆均必須使用「繁體中文」。

測試驅動開發 (TDD)

鐵律

沒有測試,禁止編寫正式程式碼

在寫測試前先寫了程式碼?刪掉它,然後重新開始。


Red-Green-Refactor 循環

flowchart LR
    RED[🔴 RED<br/>撰寫必將失敗的測試] --> VERIFY_RED{確認失敗}
    VERIFY_RED -->|正確失敗| GREEN[🟢 GREEN<br/>編寫最簡代碼]
    VERIFY_RED -->|錯誤失敗| RED
    GREEN --> VERIFY_GREEN{確認通過}
    VERIFY_GREEN -->|全部通過| REFACTOR[🔵 REFACTOR<br/>代碼重構]
    VERIFY_GREEN -->|失敗| GREEN
    REFACTOR --> NEXT[下一個測試]
    NEXT --> RED

階段詳情

🔴 RED - 撰寫必將失敗的測試

每次只測試一個行為:

public function test_rejects_empty_email(): void
{
    $result = $this->validator->validate(['email' => '']);
    
    $this->assertFalse($result->isValid());
    $this->assertEquals('Email required', $result->getError());
}

要求:

  • 只有一個行為
  • 明確的命名
  • 使用真實程式碼(模擬 Mock 最少化)

確認:目擊失敗

npm run test  # 或 phpunit

確認事項:

  • 測試失敗(而非編譯錯誤)
  • 錯誤訊息符合預期
  • 確實是因為功能未實作而失敗(而非拼寫錯誤等)

🟢 GREEN - 編寫最簡代碼

編寫能讓測試通過的最少代碼:

public function validate(array $data): ValidationResult
{
    if (empty($data['email'])) {
        return new ValidationResult(false, 'Email required');
    }
    return new ValidationResult(true);
}

禁止事項:

  • 添加額外功能
  • 在此階段重構其他代碼
  • 做超過測試要求的任何事

確認:目擊通過

npm run test

確認事項:

  • 測試通過
  • 舊有的其他測試依然通過

🔵 REFACTOR - 重構清理

僅在 GREEN 改完後進行:

  • 消除重複
  • 改善命名
  • 提取輔助函數

確保測試始終保持綠燈狀態。


常見藉口與現實

藉口現實
「太簡單了不需要測試」簡單的程式碼也會壞。寫測試只要 30 秒。
「稍後再補測試」補寫已過測試毫無意義。
「我手動測試過了」隨機測試 ≠ 系統化。無法重複執行。
「TDD 會變慢」TDD 比除錯快得多。

驗證檢查清單

作業完成前確認:

  • 所有新函數/方法都有對應測試
  • 確認每個測試在實作前確實失敗過
  • 每個測試的失敗原因都符合預期
  • 使用最小量的代碼使測試通過
  • 所有測試均通過
  • 涵蓋了邊界情況與錯誤處理

無法全部勾選?說明你跳過了 TDD,請重新開始。


相關工作流程

  • /run-tests - 執行測試
  • /systematic-debugging - 遭遇 Bug 時
  • /verification - 完成前驗證

Search skills

Search the agent skills registry