TDD ワークフロー
概要
テスト駆動開発(TDD)の手法に従って、以下のサイクルで開発を進めます:
- •赤フェーズ: 失敗するテストを書く
- •テスト実行: テストが落ちることを確認
- •緑フェーズ: テストを通す最小限の実装を行う
- •テスト成功確認: テストが通ることを確認
- •リファクタリング: コードを整理・改善
重要な原則
1. Todoによる計画確認
- •実装前に必ずTodoWriteツールでタスク計画を作成
- •ユーザーの確認を得てから実装を開始
- •各フェーズごとにTodoの状態を更新
2. テスト作成のルール
- •最初に小さな動作を確認するテストを書く
- •テストのデータはテスト関数内に記述(fixtureは使わない)
- •assertionに関係ないデータについてのみfixture利用を許可
3. モックの使用制限
- •モックはなるべく使わない
- •API呼び出しやDB呼び出しなど外部依存がある時だけ利用を許可
4. コメントのルール
- •WHYを書く(なぜこの実装なのか)
- •WHATは複数行にまたがる等、コードの可読性に響く場合のみ
- •余計なコメントは書かない
テスト実行コマンド
プロジェクトの種類に応じて適切なテストコマンドを使用:
Python
bash
# uv.lockがある場合 uv run python -m pytest -v # poetry.lockがある場合 poetry run python -m pytest -v # それ以外 python -m pytest -v
Go
bash
go test ./... -v
Node.js
bash
npm test
TDDサイクルの実施手順
赤フェーズ(テストを書く)
- •実装したい機能の小さな動作を特定
- •その動作を検証するテストを書く
- •テストを実行して失敗することを確認
- •失敗理由が想定通りか確認
緑フェーズ(実装する)
- •テストを通すための最小限の実装を行う
- •過度な設計や抽象化は避ける
- •テストを実行して成功することを確認
リファクタリングフェーズ
- •テストが通っている状態で開始
- •コードの重複を削除
- •可読性を向上させる
- •各変更後にテストを実行して動作を確認
- •過度な抽象化や将来の拡張性は考慮しない
スラッシュコマンド
各フェーズを個別に実行したい場合は、以下のコマンドを使用:
- •
/tdd:red- 赤フェーズ: 失敗するテストを書く - •
/tdd:green- 緑フェーズ: テストを通す実装を行う - •
/tdd:refactor- リファクタリング: コードを整理
実装時の注意事項
- •セキュリティ脆弱性(XSS, SQLインジェクション等)に注意
- •パスワードやAPIキーをハードコーディングしない
- •ユーザーの確認なしにデータを削除しない
- •過度なエラーハンドリングや検証は避ける(システム境界のみ)
- •未使用のコードは完全に削除(後方互換性ハックは不要)