搜索

PythonReactSEOPDF
GitHub Skill

test-driven-development

TDD(テスト駆動開発)スキル。Red-Green-Refactorサイクルに基づく開発支援。Use when: 開発を依頼された時。

yellow-seed☆ 1 仓库 Stars0 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

テスト駆動開発(TDD)

Red-Green-Refactorサイクルに基づくテスト駆動開発を支援します。

TDDサイクル

フェーズ 説明 実施内容
Red 失敗するテストを書く 要件を満たすテストケースを作成し、実行して失敗を確認
Green テストを通す最小限のコード テストが通る最小限の実装を追加
Refactor コードを改善 重複排除、可読性向上、設計改善を実施

TDD原則

  1. テストファースト: 実装前に必ずテストを書く
  2. 最小実装: テストを通す最小限のコードのみを書く
  3. リファクタリング: グリーンになった後、コード品質を改善
  4. 小さなステップ: 一度に1つの機能に集中
  5. 継続的な実行: テストを頻繁に実行し、即座にフィードバック

開発手順

1. Red(失敗するテストを書く)
  • 要件を理解し、期待する振る舞いを定義

  • テストケースを作成(エッジケース、境界値も考慮)

  • テストを実行して失敗を確認

    # プロジェクト固有のテストコマンドを実行
    
    # Shell Script Testing (bats) - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test bats tests/
    
    # 特定のテストファイルのみ実行
    cd docker/ubuntu-test && docker compose run ubuntu-test bats tests/example.bats
    
    # Shell Script Testing (bats) - macOS環境
    cd docker/macos-test && docker compose run macos-test bats tests/
    
    # Windows PowerShell Testing (Pester)
    docker compose run --rm windows-test
    
  • 失敗理由が意図通りであることを確認

テストファイルの扱い:

  • コード開発: 作成したテストファイルは最終成果物として残す(例: tests/*.bats)
  • ドキュメント開発: 検証用のテストチェックリスト(TEST.md など)は、Greenフェーズ完了後に以下のいずれかを実施
    • 不要な場合は削除する
    • 継続的な品質確認が必要な場合は残す
    • 実装ガイドとして有用な場合は本体ドキュメントに統合する
2. Green(テストを通す)
  • テストを通す最小限のコードを実装

  • ハードコードや単純な実装でも可

  • テストが全て通ることを確認

    # Shell Script Testing (bats) - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test bats tests/
    
    # Shell Script Testing (bats) - macOS環境
    cd docker/macos-test && docker compose run macos-test bats tests/
    
    # Windows PowerShell Testing (Pester)
    docker compose run --rm windows-test
    
  • 新しいテストで既存テストが壊れていないか確認

3. Refactor(リファクタリング)
3.1. コード改善
  • コードの重複を排除
  • 命名を改善
  • 設計パターンの適用
  • パフォーマンス最適化
3.2. ローカルテスト実行
  • テストが全て通り続けることを確認

    # Shell Script Testing (bats) - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test bats tests/
    
    # Shell Script Testing (bats) - macOS環境
    cd docker/macos-test && docker compose run macos-test bats tests/
    
    # Windows PowerShell Testing (Pester)
    docker compose run --rm windows-test
    
3.3. ローカルLint/Format実行
  • Lintチェックを実行して警告がないことを確認

    # Shell Script Linting - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test lint-shell
    
    # Shell Script Linting - macOS環境
    cd docker/macos-test && docker compose run macos-test lint-shell
    
  • Lintで問題がある場合には、コードフォーマットを適用する、個別に修正するなどして対応する

    # Shell Script Formatting (check) - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test shfmt -d -i 2 .
    
    # Shell Script Formatting (apply) - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test shfmt -i 2 -w .
    
    # Shell Script Formatting (check) - macOS環境
    cd docker/macos-test && docker compose run macos-test shfmt -d -i 2 .
    
    # Shell Script Formatting (apply) - macOS環境
    cd docker/macos-test && docker compose run macos-test shfmt -i 2 -w .
    
  • Windows環境のPowerShell開発の場合: PSScriptAnalyzerによる静的解析を実行

    # Windows PowerShell Linting (PSScriptAnalyzer)
    # CIと同じ設定(PSGallery)で実行して警告がないことを確認
    docker compose run --rm windows-test-shell pwsh -Command \
      '$results = Invoke-ScriptAnalyzer -Path install/windows -Recurse -Settings PSGallery; if ($results) { $results | Format-Table -AutoSize; Write-Error "PSScriptAnalyzer found issues"; exit 1 } else { Write-Host "No issues found" -ForegroundColor Green }'
    
    • 警告が出た場合の対応:
      • 警告の原因を修正する
      • 正当な理由がある場合は SuppressMessageAttribute で抑制
  • PSScriptAnalyzer警告の抑制例(Windows PowerShell開発時、正当な理由がある場合のみ)

    # 例: 複数形の関数名が意図的な場合
    function Install-Packages {
        [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '',
            Justification='Packages refers to multiple items, plural is intentional')]
        param (
            [string]$PackageFile
        )
        # 実装...
    }
    
    # 例: 状態変更関数でShouldProcessが不要な場合
    function Set-GitConfig {
        [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '',
            Justification='User consent implied by running script')]
        param()
        # 実装...
    }
    
  • GitHub Actionsワークフローを修正した場合はActionLintを実行

    # GitHub Actions Linting - Ubuntu環境
    cd docker/ubuntu-test && docker compose run ubuntu-test actionlint
    
    # GitHub Actions Linting - macOS環境
    cd docker/macos-test && docker compose run macos-test actionlint
    
3.4. Git Commit & Push
  • すべてのローカルチェックが通ったら、変更をコミット・プッシュ

    git add .
    git commit -m "type: description"
    git push
    
3.5. Pull Request 作成
3.6. CI確認
  • Pull Request作成後、GitHubでCI/CDパイプラインが自動実行される
  • 以下のチェックが全て成功していることを確認:
    • Actionlint: GitHub Actions ワークフローファイルの構文チェック
    • ShellCheck + shfmt: シェルスクリプトの静的解析とフォーマットチェック
    • Test: プロジェクト固有のテスト実行
  • CIが失敗した場合:
    1. PRページでログを確認してエラー原因を特定
    2. ローカルで同じコマンドを実行して再現
    3. 修正後、コミット・プッシュしてCIが再実行されるのを確認

テスト品質チェックポイント

項目 チェック内容
カバレッジ 重要なパス、エッジケース、エラーケースを網羅
独立性 テスト間の依存関係がない
明確性 テストの意図が明確で可読性が高い
速度 テストが高速に実行できる
信頼性 テストが安定して同じ結果を返す

出力形式

Red フェーズ
  • 実装する機能の要件説明
  • 作成したテストコード
  • テスト実行結果(失敗の確認)
Green フェーズ
  • 実装したコード
  • テスト実行結果(成功の確認)
  • 実装の説明
Refactor フェーズ
  • リファクタリング内容の説明
  • 改善後のコード
  • ローカルテスト実行結果(引き続き成功の確認)
  • ローカルLint/Formatチェック結果(全て通過)
  • Git Commit & Push の実行
  • Pull Request 作成
  • CI結果の確認(PR作成後に自動実行、全てのチェックが成功)
  • 改善のポイント

GitHub Actions CI

プロジェクトでは以下のCI/CDチェックが自動実行されます:

CI/CDパイプラインのURL: https://github.com/{owner}/{repo}/actions

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-26
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!