Goのテストカバレッジ測定と活用方法
Go
テスト
知識
運用
Goにおけるテストカバレッジの測定方法と効果的な活用方法。カバレッジはテストがソースコードのどれだけの部分を実行・検証しているかを示す指標。
カバレッジの種類
ラインカバレッジ: 実行されたコード行の割合 ブランチカバレッジ: 条件分岐の網羅度 ファンクションカバレッジ: テストされた関数の割合
基本的な測定コマンド
bash
# カバレッジ測定付きでテスト実行
go test -cover ./...
# 詳細なカバレッジレポート生成
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html
# 特定パッケージのカバレッジ測定
go test -cover ./usecase/interactor/memo
# カバレッジプロファイルの可視化
go tool cover -func=coverage.outレイヤー別の推奨カバレッジ目標
- ビジネスロジック層(Interactor): 90%以上
- データアクセス層(Repository): 70%以上
- HTTPハンドラー層: 60%以上
- ユーティリティ関数: 80%以上
カバレッジ活用のベストプラクティス
-
重要度に応じた目標設定
- クリティカルな処理(決済等): 95%以上
- 一般的なCRUD処理: 70%以上
-
増分カバレッジの重視
- 新規コードは高カバレッジを維持
- 既存コードは段階的に改善
-
カバレッジの可視化
- CI/CDでの自動測定
- HTMLレポートでの未テスト箇所の確認
注意点
- カバレッジ100%≠バグゼロ
- 質より量を重視しない(意味のあるテストを書く)
- カバレッジは品質指標の一つに過ぎない
- ビジネスロジックの重要部分の網羅を優先