TDD Red-Green-Refactor Skill
概要
このSkillは、TDD (Test-Driven Development) のRed-Green-Refactorサイクルを実践するためのパターン・チェックリスト・判断基準を提供します。ADR_009テスト指針で確立した品質基準(テストカバレッジ80%以上・Domain層100%)を自動維持します。
使用タイミング
Claudeは以下の状況でこのSkillを自律的に使用すべきです:
- •
新機能実装時
- •新規ドメインモデル作成時
- •新規ユースケース実装時
- •新規APIエンドポイント作成時
- •
バグ修正時
- •バグ再現テスト作成時
- •修正後の回帰テスト実行時
- •
リファクタリング時
- •コード構造変更前のテスト網羅確認
- •リファクタリング後のテスト成功確認
- •
unit-test Agent起動時
- •unit-test Agentへの指示作成時
- •テストカバレッジ確認時
Red-Green-Refactorサイクル
Phase: Red(失敗するテストを書く)
詳細: patterns/red-phase-pattern.md
実施手順:
- •✅ 要件理解: 実装すべき機能仕様を明確化
- •✅ テストケース設計: 正常系・異常系・境界値を洗い出し
- •✅ テストコード作成: xUnit + FluentAssertions/FsUnit.xUnit使用
- •✅ テスト実行: 失敗することを確認(Red状態)
- •✅ 失敗理由確認: 期待する実装が未作成であることを確認
チェックポイント:
- •❌ テストが失敗している(Red状態)
- •✅ テストコードが実装仕様を明確に表現している
- •✅ テストが1つの責務のみをテストしている
- •✅ テストメソッド名がテスト内容を明確に表現している
典型的な問題: テストが最初からGreenになる(実装が先行している)
Phase: Green(テストを通す最小実装)
詳細: patterns/green-phase-pattern.md
実施手順:
- •✅ 最小実装: テストを通すための最小限のコード作成
- •✅ テスト実行: Green状態になることを確認
- •✅ テストカバレッジ確認: 新規コードが100%カバーされていることを確認
- •✅ ビルド確認: 0 Warning / 0 Error維持
チェックポイント:
- •✅ テストが成功している(Green状態)
- •✅ 実装が必要最小限(過剰実装なし)
- •✅ ビルドが成功している(0 Warning / 0 Error)
- •✅ 既存テストが全て成功している(回帰なし)
典型的な問題: 過剰実装(テストされていないコードを追加)
Phase: Refactor(コード品質改善)
詳細: patterns/refactor-phase-pattern.md
実施手順:
- •✅ リファクタリング対象特定: 重複コード・長いメソッド・命名改善
- •✅ リファクタリング実行: コード構造改善
- •✅ テスト再実行: Green状態維持を確認
- •✅ ビルド確認: 0 Warning / 0 Error維持
- •✅ コードレビュー: Clean Architecture準拠確認
チェックポイント:
- •✅ テストが成功している(Green状態維持)
- •✅ コード品質が改善している(可読性・保守性向上)
- •✅ Clean Architecture準拠(レイヤー分離・依存関係方向)
- •✅ F# + C#混在環境での型安全性確保
典型的な問題: リファクタリング中にテストが失敗(動作変更してしまった)
unit-test Agent活用パターン
unit-test Agent起動判断
起動すべき状況:
- •新規テストクラス作成時(3個以上のテストメソッド必要時)
- •既存テストクラス拡張時(5個以上のテストメソッド追加時)
- •テストカバレッジ不足時(80%未満)
MainAgentで直接実施すべき状況:
- •単純なテストメソッド1-2個追加時
- •テストメソッド名修正のみ
- •アサーション修正のみ
unit-test Agentへの指示テンプレート
unit-test Agent, 以下のテスト作成をお願いします: **対象**: [テスト対象クラス・メソッド名] **テストケース**: 1. 正常系: [シナリオ] 2. 異常系: [シナリオ] 3. 境界値: [シナリオ] **期待するテストカバレッジ**: [%] **参照ADR**: ADR_009テスト指針 **参照Skill**: tdd-red-green-refactor
テスタブルコード設計原則
1. 依存性注入(DI)
F# Domain層:
// ✅ Good: 純粋関数(外部依存なし)
module UserValidation =
let validateEmail (email: string) : Result<Email, ValidationError> =
if String.IsNullOrWhiteSpace(email) then
Error EmptyEmail
else
Ok (Email email)
C# Application層:
// ✅ Good: コンストラクタインジェクション
public class UserService
{
private readonly IUserRepository _userRepository;
public UserService(IUserRepository userRepository)
{
_userRepository = userRepository;
}
}
2. インターフェース分離
C# Infrastructure層:
// ✅ Good: インターフェース定義
public interface IUserRepository
{
Task<User?> GetByIdAsync(Guid id);
Task AddAsync(User user);
}
// ✅ Good: テスト時はNSubstituteでモック作成
3. F#純粋関数の活用
F# Domain層:
// ✅ Good: 純粋関数(副作用なし・テスト容易)
module UserDomain =
let createUser (name: string) (email: Email) : Result<User, DomainError> =
if String.IsNullOrWhiteSpace(name) then
Error InvalidUserName
else
Ok { Name = name; Email = email }
テストカバレッジ管理方法
カバレッジ目標(ADR_009準拠)
- •全体: 80%以上
- •Domain層(F#): 100%(最優先)
- •Application層(C#): 90%以上
- •Infrastructure層(C#): 70%以上
- •Web層(Blazor Server): 50%以上(UI統合テストで補完)
カバレッジ測定コマンド
# カバレッジ測定 dotnet test --collect:"XPlat Code Coverage" # カバレッジレポート生成(reportgenerator使用) reportgenerator \ -reports:**/coverage.cobertura.xml \ -targetdir:coverage-report \ -reporttypes:Html
カバレッジ不足時の対応
- •
Domain層カバレッジ < 100%
- •🔴 重大: 即座にテスト追加(最優先)
- •unit-test Agent起動してテスト網羅
- •
Application層カバレッジ < 90%
- •🟡 警告: 次Step開始前にテスト追加
- •統合テストで補完検討
- •
Infrastructure層カバレッジ < 70%
- •🟡 警告: Phase完了前にテスト追加
- •integration-test Agent起動検討
TDDサイクル実践チェックリスト
Red Phase チェックリスト
- • 要件仕様を明確に理解した
- • テストケース(正常系・異常系・境界値)を洗い出した
- • テストメソッド名が明確である(
[TestMethod]_[Scenario]_[ExpectedResult]形式) - • テストが失敗する(Red状態)ことを確認した
- • 失敗理由が「実装が未作成」であることを確認した
Green Phase チェックリスト
- • テストを通すための最小実装を作成した
- • テストが成功する(Green状態)ことを確認した
- • 新規コードのテストカバレッジが100%である
- • ビルドが成功した(0 Warning / 0 Error)
- • 既存テストが全て成功した(回帰なし)
Refactor Phase チェックリスト
- • リファクタリング対象を特定した
- • リファクタリングを実行した
- • テストが成功する(Green状態維持)ことを確認した
- • ビルドが成功した(0 Warning / 0 Error)
- • Clean Architecture準拠を確認した(clean-architecture-guardian Skill使用)
- • コード品質が改善した(可読性・保守性向上)
参照元ADR・Rules
- •ADR_009: テスト指針(テストピラミッド・品質基準)
- •テスト戦略ガイド.md: テスト実行戦略・CI/CD統合
- •組織管理運用マニュアル.md: unit-test Agent選択・実行パターン
関連Skills
- •unit-test Skill: 単体テスト設計・実装・実行(SubAgent)
- •clean-architecture-guardian Skill: Clean Architecture準拠性チェック(Refactor Phase使用)
- •fsharp-csharp-bridge Skill: F#↔C#境界のテスト方法
作成日: 2025-11-01 Phase B-F2 Step2: Agent Skills Phase 2展開 参照ADR: ADR_009テスト指針