mcpField
T
test-review

test-review

github.com/atholaテスト・品質34398 回インストール1 日前に更新
リポジトリ

test-review について

テストスイート、カバレッジの不足、シナリオの品質をレビューするスキルで、設計上の不変条件を表すテストを特に重視します。テストの作成や更新ではなく、評価と改善計画を支援します。

主な機能

  1. 01言語とテストフレームワークを検出
  2. 02カバレッジと不足を確認
  3. 03テストシナリオの品質を評価
  4. 04不変条件を表すテストを確認
  5. 05テスト改善を計画
  6. 06根拠のある指摘を検証

活用シーン

  1. 01リリース前のテストスイートのレビュー
  2. 02テスト失敗やカバレッジ不足の調査
  3. 03テストが設計上の不変条件を保つか確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/athola/claude-night-market --skill test-review

インストール後、Claude Code で/test-reviewを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

modules/
content-assertion-quality.md
coverage-analysis.md
framework-detection.md
remediation-planning.md
scenario-quality.md

詳細

テストレビューワークフロー

TDD/BDD の厳密さをもってテストスイートを評価し、改善します。

クイックスタート

/test-review

検証: pytest -v を実行し、テストがパスすることを確認します。

使用する場面

  • テストスイートの品質をレビューするとき
  • カバレッジの不足箇所を分析するとき
  • メジャーリリースの前
  • テスト失敗の後
  • テスト改善を計画するとき

使用しない場面

  • 新しいテストを書く場合 — parseltongue:python-testing を使用します
  • 既存のテストを更新する場合 — sanctum:test-updates を使用します

必須の進捗項目

  1. test-review:languages-detected
  2. test-review:coverage-inventoried
  3. test-review:scenario-quality
  4. test-review:invariant-preservation
  5. test-review:gap-remediation
  6. test-review:evidence-logged
  7. test-review:findings-verified

段階的な読み込み

レビューの深さに応じて、必要なモジュールを読み込みます。

  • 基本レビュー:コアワークフロー(このファイル)
  • フレームワークの検出:modules/framework-detection.md を読み込みます
  • カバレッジ分析:modules/coverage-analysis.md を読み込みます
  • 品質評価:modules/scenario-quality.md を読み込みます
  • 改善計画:modules/remediation-planning.md を読み込みます

ワークフロー

ステップ 1:言語を検出する(test-review:languages-detected)

テストフレームワークとバージョン制約を特定します。 → 参照先:modules/framework-detection.md

簡易チェック:

find . -maxdepth 2 -name "Cargo.toml" -o -name "pyproject.toml" -o -name "package.json" -o -name "go.mod"

検証: --help フラグを付けてコマンドを実行し、利用可能であることを確認します。

ステップ 2:カバレッジを調査する(test-review:coverage-inventoried)

カバレッジツールを実行し、不足箇所を特定します。 → 参照先:modules/coverage-analysis.md

簡易チェック:

git diff --name-only | rg 'tests|spec|feature'

検証: pytest -v を実行し、テストがパスすることを確認します。

ステップ 3:シナリオの品質を評価する(test-review:scenario-quality)

BDD パターンとアサーションのチェックを用いて、テスト品質を評価します。 → 参照先:modules/scenario-quality.md

次の点に注目します。

  • Given/When/Then の明確さ
  • アサーションの具体性
  • アンチパターン(無意味な待機、内部実装のモック化、定型コードの繰り返し)
ステップ 4:改善策を計画する(test-review:gap-remediation)

担当者と日付を含む、具体的な改善計画を作成します。 → 参照先:modules/remediation-planning.md

ステップ 5:証拠を記録する(test-review:evidence-logged)

実行したコマンド、出力、推奨事項を記録します。 → 参照先:imbue:proof-of-work

テスト品質チェックリスト(簡略版)

  • 明確なテスト構造(Arrange-Act-Assert)
  • 重要な処理経路をカバーしている(認証、検証、エラー)
  • コンテキストを伴う具体的なアサーション
  • 不安定なテストがない(無意味な待機、実行順への依存)
  • 再利用可能なフィクスチャ/ファクトリー
  • 不変条件を表すテストが維持されている(下記参照)
不変条件を符号化するテスト

テストは動作を検証するだけでなく、設計上の不変条件も符号化します。 「モジュール A はモジュール B からインポートしない」とアサートするテストは、レイヤーの境界を符号化します。「この関数は純粋である」とアサートするテストは、並行処理モデルを符号化します。こうしたテストは、カバレッジ指標では捉えられない形で重要な役割を担っています。

レビューでは、次の点を確認してください。

  1. 不変条件を符号化するテストが削除または弱められていませんか? アーキテクチャ上の境界、データ構造の制約、または API コントラクトを強制するテストを削除する場合は、放棄する不変条件を明示し、人間の判断を仰ぐ必要があります。

  2. 壊れた実装に合わせてテストの期待値が変更されていませんか? アサーションの値が変わった場合は、要件が変わったのか、それともエージェントがコードを通すためにテストを変更したのかを確認してください。後者は、テスト改ざんの中で最も危険なものです。

  3. 新しい不変条件がテストとして符号化されていますか? 設計上の決定(データ構造の選択、モジュール境界、エラー処理方針)が行われた場合、その不変条件への違反を失敗で示すテストが少なくとも1つ必要です。

危険なパターン:

パターンリスク
成功しているテストに @pytest.mark.skip が追加される不変条件がひそかに放棄される
アサーションが具体的なものから広範なものに変更される制約が緩和される
新しい動作を説明する名前にテストが変更される古い不変条件が履歴から消される
「古いコードをテストしていたから」という理由でテストが削除される不変条件が置き換えられずに削除される

不変条件の侵食が検出された場合:

承認してはいけません。品質上の重大な問題として指摘し、人間に次の3つの選択肢を提示してください。

  1. 維持:テストの変更を元に戻し、不変条件を満たすように実装を修正する
  2. 併存:不変条件のテストを維持し、新しい動作を併せて追加する(不格好さは受け入れる)
  3. 改訂:不変条件に根本的な誤りがある場合、古いテストを削除し、置き換える不変条件を符号化する新しいテストを作成する

これは判断を要する問題であり、モデルはあまりにも頻繁に誤った判断をします。人間に確認できない場合は、既定で選択肢1(維持)を選んでください。

出力形式

## Summary
[Brief assessment]

## Framework Detection
- Languages: [list] | Frameworks: [list] | Versions: [constraints]

## Coverage Analysis
- Overall: X% | Critical: X% | Gaps: [list]

## Quality Issues
[Q1] [Issue] - Location - Anchor: `verbatim source text at file:line` - Fix

## Remediation Plan
1. [Action] - Owner - Date

## Recommendation
Approve / Approve with actions / Block

検証: 利用可能かどうかを確認するため、--help フラグを付けてコマンドを実行してください。

統合に関する注意事項

  • 再現可能なエビデンスの取得には imbue:proof-of-work を使用してください
  • リスク評価には imbue:diff-analysis を参照してください
  • 出力は imbue:structured-output のパターンを使用して整形してください

検出結果の根拠を確認する(test-review:findings-verified)

検出結果を .review/findings.json に書き込み、引用検証ツール(Skill(imbue:review-core) Step 5)を実行し、検証ツールが却下した項目は削除するか UNVERIFIED とラベル付けしてください。

完了条件

  • フレームワークを検出し、記録した
  • カバレッジを分析し、ギャップを特定した
  • シナリオの品質を評価した
  • 担当者と日付を含む是正計画を作成した
  • 引用付きでエビデンスを記録した
  • 報告するすべての検出結果に、citation_verifier.py によって確認された Location と逐語的な Anchor が付いている(終了コード 0)。または、未検証の検出結果が削除されているか、UNVERIFIED とラベル付けされている

トラブルシューティング

よくある問題

テストが検出されない テストファイル名が test_*.py または *_test.py のパターンに一致していることを確認してください。pytest --collect-only を実行して確認してください。

インポートエラー テスト対象のモジュールが PYTHONPATH に含まれていることを確認するか、pip install -e . でインストールしてください。

非同期テストが失敗する pytest-asyncio をインストールし、テスト関数に @pytest.mark.asyncio を付けてください

コメント