AgentSkillsCN

tdd

指导测试驱动开发(TDD)的实施流程,助力测试设计、测试实现与代码重构的迭代循环。当用户提出“希望用 TDD 实现”“想采用测试先行的方式推进”“按照红-绿-重构的模式进行”“先写测试再写代码”等需求时,可灵活运用此技能。

SKILL.md
--- frontmatter
name: tdd
description: テスト駆動開発(TDD)の進め方をガイドし、テスト設計/実装/リファクタリングの反復を支援する。ユーザーが「TDDで実装して」「テストファーストで進めたい」「レッド・グリーン・リファクタで」「テストを先に書いて」などと依頼した時に使う。

TDDガイド

概要

TDDで機能追加や不具合修正を進めるための、短い反復手順と判断基準を示す。原則として「失敗の確認」を必須とする。

基本ワークフロー

  1. 仕様を最小の振る舞いに分解する。
  2. Red: 失敗するテストを書く。
  3. Red確認: 意図した理由で失敗するのを確認する。
  4. Green: 最小実装でテストを通す。
  5. Green確認: 全テストが通ることを確認する。
  6. Refactor: テスト維持のまま設計を改善する。
  7. 1つの振る舞いごとにサイクルを繰り返す。

鉄則

  • 失敗テストなしで本番コードを書かない。
  • 失敗を見ていないテストは無効とみなす。
  • 例外が必要なら人に相談する。

テスト設計の指針

  • 仕様を例で表現する。
  • 失敗理由が1つになるようにする。
  • I/O境界と純粋ロジックを分ける。
  • テスト名は「条件_期待結果」など意図が分かる形にする。

Greenの指針

  • 最小のコードで通す。
  • 早すぎる抽象化を避ける。
  • まずはハードコードで通してもよい。

Refactorの指針

  • 重複を削減し、命名と責務を整える。
  • 既存テストが通ることを維持する。
  • テストが不足している場合は先に追加する。

よくある失敗と対処

  • 失敗テストなしで実装する → 実装を削除してRedからやり直す。
  • テストがすぐ通る → 既存挙動の可能性があるためテストを見直す。
  • 「簡単だから省略」 → 省略せず最小のテストを1つ書く。

つまずいた時

  • テストが難しい → 仕様や設計を簡素化し、扱いやすいAPIにする。
  • モックだらけ → 依存を切り出し、境界の設計を見直す。

検証チェックリスト

  • 新しい振る舞いごとにテストを書いた。
  • Redの失敗を確認した。
  • 失敗理由が意図通りだった。
  • Greenで全テストが通った。
  • Refactor後も全テストが緑のまま。
  • テスト出力に警告やエラーがない。

依頼対応の進め方

  • まず振る舞いを確認し、最小のテストケースに落とす。
  • 1サイクルずつ進め、各段階の差分を明確に示す。
  • 既存テストがある場合は整合性を確認する。