章: 第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) を学びます。コードを実行せずにバグの可能性を検出する方法を整理しましょう。