第43回: コードカバレッジの測り方 — テストの「抜け漏れ」を数値で見える化する

章: 第5章: テストと品質管理

テストは書いているけど、どこがカバーできているか分かりますか?

テストを書いても、実際にどのコードパスが通過しているかを確認しなければ、未テストの分岐が本番でバグを起こします。コードカバレッジを可視化することで、テストが不足している箇所を客観的に把握できます。

カバレッジを測定しないと何が起きるか

「テストは書いた」と思っていても、例外ケースや分岐の一方だけしかテストしていないことがあります。カバレッジレポートを見ることで、赤くハイライトされた未テスト行を一目で発見できます。

カバレッジ計測の比較

観点 計測なし カバレッジ計測あり
抜け漏れの発見 気づかず本番でバグ レポートで未通過行が一目で分かる
品質の基準 主観的な「テストが多い」 数値(行カバレッジ・分岐カバレッジ)で客観評価
CI連携 手動確認 一定カバレッジ以下でビルド失敗にできる
ツール 不要 Xdebug または pcov が必要

チェックポイント: カバレッジ100%を目指す必要はありません。重要なビジネスロジックと分岐条件を重点的にカバーし、getter/setter のようなシンプルなコードは優先度を下げましょう。むしろ80%前後を維持しながら、カバーされていない箇所の「なぜテストしないか」を明確にしておくことが大切です。

コードサンプル


# Xdebugまたはpcovが必要

# HTML形式でレポート生成
./vendor/bin/phpunit --coverage-html coverage/

# テキスト形式で確認
./vendor/bin/phpunit --coverage-text

# Laravelの場合
php artisan test --coverage

まとめ & 次のステップ

  • コードカバレッジを測定すると、テストの抜け漏れを客観的に把握できます
  • --coverage-html でブラウザから視覚的にレポートを確認できます
  • カバレッジ100%が目標ではなく、重要なロジックを優先的にカバーしましょう
  • CIに --coverage-text を組み込み、カバレッジの低下をアラートできます
  • Xdebugよりもpcovの方が計測が速いため、CI環境ではpcovを推奨します

次回は 静的解析(PHPStan) を学びます。コードを実行せずにバグの可能性を検出する方法を整理しましょう。

Related Articles