技能 test-driven-development
📦

test-driven-development

安全

應用測試驅動開發

也可從以下取得: Cycleaddict,davila7,DMJGilbert,DYAI2025,Cygnusfear,CodingCossack,obra

在程式碼撰寫後才寫測試會導致錯誤的信心並遺漏邊界情況。此技能強制執行 TDD 紀律:先撰寫失敗的測試,然後實作剛好足夠通過測試的程式碼。

支援: Claude Codex Code(CC)
🥉 74 青銅
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「test-driven-development」。 我需要新增一個驗證電子郵件地址的函式

預期結果:

讓我們從 TDD 開始。首先,我會撰寫一個失敗的測試:

```typescript
test('rejects invalid email', () => {
expect(validateEmail('invalid')).toBe(false);
});
```

現在我會執行此測試以確認它失敗...

正在使用「test-driven-development」。 login 函式應處理錯誤密碼

預期結果:

遵循 TDD,先寫測試:

```typescript
test('rejects wrong password', async () => {
const result = await login('user@test.com', 'wrongpass');
expect(result.success).toBe(false);
expect(result.error).toBe('Invalid credentials');
});
```

執行測試以驗證它失敗...

安全審計

安全
v1 • 2/24/2026

This is a legitimate Test-Driven Development educational skill. The static analyzer detected 73 potential issues, but after semantic evaluation, all findings are FALSE POSITIVES. The 'external_commands' detections are markdown code block delimiters (backticks) in documentation, not actual shell execution. The 'weak cryptographic algorithm' and 'network reconnaissance' detections are similarly false positives triggered by keywords in educational context. No executable malicious code exists in this skill.

2
已掃描檔案
672
分析行數
1
發現項
1
審計總數
中風險問題 (1)
Markdown Code Block Delimiters Flagged as Shell Execution
The static scanner detected 'Ruby/shell backtick execution' patterns in markdown files. These are FALSE POSITIVES - the backticks are markdown code fence delimiters (```typescript, ```bash) used for syntax highlighting in documentation, not runtime command execution. The skill is educational content about TDD methodology with no actual shell commands being executed.
審計者: claude

品質評分

38
架構
100
可維護性
87
內容
50
社群
100
安全
91
規範符合性

你能建構什麼

新功能實作

建構新功能時,先撰寫定義預期行為的測試,觀察它失敗,然後實作使其通過

錯誤修復流程

修復錯誤時,先撰寫重現該錯誤的測試,觀察它失敗,然後修復程式碼使其通過

有信心的重構

重構之前,確保已存在測試。測試可驗證程式碼變更後行為仍正確

試試這些提示

開始新功能 TDD
我需要實作 [描述功能]。遵循 TDD,先撰寫一個失敗的測試來定義預期行為。先不要寫實作程式碼。
驗證 Red 階段
執行我剛寫的測試並確認它因正確原因失敗(功能缺失,而非拼寫錯誤)。顯示確切的錯誤訊息。
Green 階段 - 最小實作
現在撰寫剛好足夠讓測試通過的程式碼。不要新增額外功能或重構。只需讓測試通過。
錯誤修復 TDD
有個錯誤:[描述錯誤]。先撰寫一個重現此錯誤並會失敗的測試。然後我會修復它。

最佳實務

  • 一次撰寫一個測試 - 專注於單一行為
  • 以測試驗證的行為命名測試,而非以被測試內容命名
  • 撰寫實作前一定要先觀察測試失敗
  • 保持實作最小化 - 僅通過當前測試

避免

  • 在測試前撰寫實作程式碼(然後「調整」測試)
  • 撰寫測試時保留失敗的實作程式碼作為「參考」
  • 立即通過的測試 - 它們不能證明任何事
  • 測試 mock 行為而非真實元件行為

常見問題

什麼是測試驅動開發?
TDD 是一種方法論,你先撰寫一個失敗的測試,然後撰寫最少程式碼使其通過,然後重構。循環是:Red(失敗)、Green(通過)、Refactor。
為什麼要在寫程式碼之前寫測試?
程式碼後寫的測試會立即通過,無法證明任何事。先寫測試能強制定義預期行為,並證明測試確實能捕捉錯誤。
如果測試很難撰寫怎麼辦?
撰寫測試困難通常表示設計過於複雜。簡化介面或使用依賴注入使程式碼可測試。
我可以跳過簡單程式碼的 TDD 嗎?
不行。簡單程式碼仍可能出錯。撰寫測試的時間很少,它能證明程式碼運作並防止未來回歸。
如果我已經寫了實作程式碼怎麼辦?
刪除它。用 TDD 重新開始。保留現有程式碼然後新增測試會違背目的並給出錯誤信心。
TDD 會減緩開發速度嗎?
不行。TDD 在提交前發現錯誤、防止回歸,並實現安全的重構。事後除錯比 TDD 更慢。