テストカバレッジ分析(Test Coverage)
テストカバレッジを分析し、不足しているテストを生成するためのガイド。
このスキルの目的
- カバレッジの測定 - 現在のテストカバレッジを把握
- 不足箇所の特定 - カバレッジが低いファイル・関数を洗い出す
- テストの生成 - 不足しているテストを自動生成
- 目標達成の確認 - 80%以上のカバレッジを目指す
言語自動検出
プロジェクトのファイル構成から言語を自動検出します:
| 検出条件 | 言語 |
|---|---|
package.json + .ts/.tsxファイルが存在 |
TypeScript |
pyproject.toml または requirements.txt が存在 |
Python |
.csproj または .sln が存在 |
C# |
言語が検出できない場合は、ユーザーに確認してください。
ワークフロー
ステップ1: カバレッジ付きでテストを実行
プロジェクトの言語・パッケージマネージャーに応じてコマンドを実行:
TypeScript/JavaScript
# npm
npm test -- --coverage
# pnpm
pnpm test --coverage
# yarn
yarn test --coverage
Python
# pytest + coverage.py(推奨)
pytest --cov --cov-report=term-missing
# JSON形式でレポート生成
pytest --cov --cov-report=json
# poetryプロジェクト
poetry run pytest --cov --cov-report=term-missing
C#
# dotnet test + Coverlet
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura
# JSON形式で出力
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=json
📖 詳細なコマンドオプションは
reference/{language}/commands.mdを参照してください。
ステップ2: カバレッジレポートを分析
言語ごとのカバレッジレポートを確認し、以下を把握:
レポートファイルのパス
| 言語 | 形式 | パス |
|---|---|---|
| TypeScript | JSON Summary | coverage/coverage-summary.json |
| TypeScript | LCOV | coverage/lcov.info |
| Python | JSON | coverage.json |
| Python | HTML | htmlcov/index.html |
| C# | Cobertura | coverage.cobertura.xml |
| C# | JSON | coverage.json |
確認項目
- 全体のカバレッジ率
- ファイルごとのカバレッジ率
- 行カバレッジ、分岐カバレッジ、関数カバレッジ
ステップ3: 80%未満のファイルを特定
カバレッジ閾値(80%)を下回るファイルをリストアップ:
- 優先度の高いファイル(ビジネスロジック、ユーティリティ)を優先
- テスト不要なファイル(設定ファイル、型定義等)は除外を検討
ステップ4: 各ファイルのテストを生成
カバレッジが低いファイルごとに以下を実施:
未テストのコードパスを分析
- カバーされていない行を特定
- 分岐条件の未テスト部分を確認
ユニットテストを生成
- 個々の関数のテスト
- 入力と出力の検証
統合テストを生成(該当する場合)
- API エンドポイントのテスト
- モジュール間の連携テスト
E2Eテストを生成(重要なフローの場合)
- ユーザーの操作フローのテスト
- クリティカルパスの検証
ステップ5: 新しいテストの検証
生成したテストが正常に動作することを確認:
TypeScript
npm test
Python
pytest
C#
dotnet test
ステップ6: Before/After メトリクスを表示
改善前後のカバレッジを比較表示:
| 指標 | Before | After | 変化 |
|------|--------|-------|------|
| 行カバレッジ | 65% | 85% | +20% |
| 分岐カバレッジ | 50% | 78% | +28% |
| 関数カバレッジ | 70% | 90% | +20% |
ステップ7: 目標達成の確認
プロジェクト全体で80%以上のカバレッジを達成していることを確認。
テスト生成の重点項目
テストを生成する際は、以下のシナリオを重点的にカバー:
正常系(Happy Path)
- 期待される入力での正常動作
- 典型的なユースケース
エラーハンドリング
- 例外のスロー
- エラーメッセージの検証
- エラー時のリカバリー動作
エッジケース
null/undefined/Noneの入力- 空の配列・オブジェクト・リスト・辞書
- 空文字列
境界条件
- 最小値・最大値
- 配列の先頭・末尾
- 数値の境界(0、負数、オーバーフロー)
重要な注意事項
- テストの品質を優先: カバレッジ数値だけでなく、意味のあるテストを書く
- モックの適切な使用: 外部依存はモック化し、テストを独立させる
- テストの可読性: テスト名は何をテストしているか明確に記述
言語別リファレンス
より詳細な情報は、各言語のリファレンスを参照してください:
- TypeScript リファレンス
- Python リファレンス
- C# リファレンス
Converted and distributed by TomeVault — claim your Tome and manage your conversions.