テストカバレッジ てすとかばれっじ
テストカバレッジコードカバレッジラインカバレッジブランチカバレッジ品質指標80%目標
テストカバレッジ80%ってよく聞くけど根拠あるの?
簡単に言うとこんな感じ!
80%は「経験則的な目安」であって絶対的な基準ではないよ!カバレッジはあくまで「どれだけのコードがテストされたか」の指標で、100%でもテストの質が低いと意味がない。「高カバレッジで質の良いテスト」が理想だけど、コストとのバランスで現実的な目標を設定するんだ。
テストカバレッジとは
テストカバレッジ(Test Coverage / コードカバレッジ) とは、テストがコード全体のどれだけの割合を実行したかを示す指標です。
カバレッジが低ければ「テストされていないコードが多い」ことを示しますが、高いカバレッジが高品質を保証するわけではありません。テストの内容(アサーションの適切さ)も同様に重要です。
カバレッジの種類
| 種類 | 内容 | 特徴 |
|---|---|---|
| ラインカバレッジ | 実行された行数の割合 | 最も基本的な指標 |
| ブランチカバレッジ | if/else等の分岐を全て通ったか | ラインより厳しい |
| ステートメントカバレッジ | 実行されたステートメントの割合 | ラインと近似 |
| ファンクションカバレッジ | 呼び出された関数の割合 | 関数の死活確認 |
| パスカバレッジ | 全実行パスを網羅 | 完全だが現実的でない |
目標値の考え方
| 状況 | 推奨カバレッジ |
|---|---|
| 新規開発(ビジネスロジック) | 80〜90% |
| 金融・医療等の高リスクシステム | 90%以上 |
| UIコンポーネント | 60〜70% |
| 設定ファイル・ボイラープレート | 対象外でも可 |
歴史と背景
- 1960年代:プログラムテストの研究でカバレッジの概念が生まれる
- TDD(2000年代):テストファーストの普及でカバレッジが開発プロセスに組み込まれる
- 現在:Istanbul(JS)・JaCoCo(Java)・Coverage.py等のツールでCI/CD連携が標準化
関連用語
- ユニットテスト — カバレッジを上げる主要な手段
- TDD(テスト駆動開発) — カバレッジを自然に高めるアプローチ
- CI/CDパイプライン — カバレッジレポートを自動生成・閾値チェック
- コードレビュー — カバレッジをレビューの観点に含める
- 技術的負債 — テスト不足はカバレッジで可視化される技術的負債