AgentSkillsCN

t-wada-tdd

t_wada(和田卓人)式TDD(测试驱动开发)指南。遵循Kent Beck的定义,践行正统的TDD。 适用于:(1) 使用TDD编写代码;(2) 采用测试优先的开发方式;(3) 遵循红-绿-重构循环;(4) 创建测试列表;(5) 在设计时考虑测试的便捷性;(6) 为遗留代码添加测试。

SKILL.md
--- frontmatter
name: t-wada-tdd
description: |
  t_wada(和田卓人)式 TDD(テスト駆動開発)ガイド。Kent Beck の定義に基づく正統な TDD を実践。
  Use when: (1) TDD でコードを書く、(2) テストファーストで開発する、(3) Red-Green-Refactor サイクルを回す、
  (4) テストリストを作成する、(5) テスト容易性を考慮した設計、(6) レガシーコードにテストを追加する。

t_wada 式 TDD(テスト駆動開発)

和田卓人氏(@t_wada)が提唱する、Kent Beck の定義に基づく正統な TDD 実践ガイド。

TDD とは何か

TDD は「開発者テストをより効率的に進めるための Tips 集」である。

テストを書くタイミングと実装のタイミングを近づけ、同じ人がテストと実装を担当することで生じる課題を解決する手法

5 ステップサイクル(Kent Beck の定義)

text
1. テストリストを書く
   ↓
2. リストから 1 つ選び、テストを書く(Red: 失敗を確認)
   ↓
3. テストを通す最小限の実装(Green)
   ↓
4. 必要に応じてリファクタリング(Refactor)
   ↓
5. テストリストが空になるまで 2 へ戻る

重要: Red-Green-Refactor だけでは不十分。テストリストが核心。

核心原則

1. テストリストを作る

実装前にテストすべきシナリオをリスト化する。

markdown
## テストリスト

- [ ] 正の整数を渡すとその値を返す
- [ ] 0 を渡すと 0 を返す
- [ ] 負の整数を渡すと絶対値を返す
- [ ] null を渡すと例外を投げる

2. 一度に 1 つだけ

  • テストリストから 1 つだけ 選ぶ
  • 1 つだけ のテストを書く
  • 1 つだけ の変更で Green にする

3. 「動く」と「きれい」を分離

text
Red:    テストを書く(失敗を確認)
Green:  テストを通す(動くコード)  ← ここでは「動く」だけを追求
Refactor: 設計を改善(きれいなコード) ← ここで「きれい」を追求

同時に追求しないことで認知負荷を下げる。

4. 小さなステップ

  • 大きな変更は小さな変更の積み重ね
  • 不安なら歩幅を小さく
  • 自信があれば歩幅を大きく

実装パターン(Green にする 3 つの戦略)

パターン説明使いどころ
仮実装ハードコードで Green にする最初の一歩、不安時
三角測量複数テストで一般化を強制一般化の方向が不明時
明白な実装自明なら直接正しい実装を書く自信がある時

詳細: references/implementation-patterns.md

TDD サイクル詳細

詳細なサイクルの回し方: references/tdd-cycle.md

テスト記述の Tips

テストの書き方: references/test-writing-tips.md

チェックリスト

各フェーズのチェックリスト: references/checklists.md

TDD のメリット

  1. 使いやすい設計: テスト先行により使用者視点の設計が実現
  2. 自己効力感: 小さな成功の積み重ねがモチベーションを生む
  3. 安心してリファクタリング: テストがセーフティネット
  4. ドキュメントとしてのテスト: テストが仕様を表現

TDD ではないもの

  • テストを先に全部書くこと(× テストファースト)
  • 設計をスキップすること
  • 自動テストを書くこと全般

クイックリファレンス

フェーズやることやらないこと
テストリストシナリオを網羅的にリスト化完璧を目指す
Red失敗するテストを 1 つ書く複数テストを同時に書く
Green最小限の実装で通すきれいなコードを書く
Refactor重複除去・設計改善新機能を追加する

参考資料