導入: なぜテストカバレッジの即時確認が重要なのか
Goで開発を行う際、テストコードを書くことは必須の習慣ですが、そのテストが「どれだけのコードを網羅できているか」を把握できていますか?カバレッジ(網羅率)を意識せずに開発を進めると、未検証のコードパスが放置され、本番環境での思わぬバグに繋がります。今回は、ファイル生成などの手間をかけず、ターミナル上でクイックにカバレッジを確認し、開発サイクルの品質を維持するためのTipsを紹介します。
基礎知識: カバレッジとは何か
カバレッジとは、テスト実行時に「ソースコードのどの部分が実行されたか」をパーセンテージで示した指標です。Goの標準テストツールには、このカバレッジを算出する強力な機能が組み込まれています。通常、詳細なレポートを得るにはHTMLファイルなどを生成しますが、開発中の頻繁な確認には、コマンドラインで完結する簡易サマリ表示が最も効率的です。
実装/解決策: go test -coverの活用
開発中に品質レベルをチェックするためには、go testコマンドに -cover オプションを付与します。これにより、パッケージ単位での網羅率が標準出力に表示されます。複雑なツールを導入することなく、現在のテスト実行結果と同時に「今の実装がどれだけカバーされているか」を即座にフィードバックとして受け取れるため、リファクタリング時や機能追加時の安心感が劇的に向上します。
サンプルプログラム: カバレッジを確認する実践コマンド
以下のコード例は、テスト対象の簡単な関数と、それを検証するためのテストコードです。これを作成した後、ターミナルでコマンドを実行してください。
// calc.go (テスト対象のコード)
package main
// Add は二つの整数の和を返します
func Add(a, b int) int {
return a + b
}
// calc_test.go (テストコード)
package main
import “testing”
func TestAdd(t testing.T) {
if Add(1, 2) != 3 {
t.Error(“期待値は3です”)
}
}
実行コマンド:
ターミナルで以下のコマンドを入力して実行してください。
go test -v -cover
実行結果の出力例:
=== RUN TestAdd
— PASS: TestAdd (0.00s)
PASS
coverage: 100.0% of statements
ok example/app 0.001s
この表示により、現在のパッケージが100%カバーされていることが瞬時に確認できます。
応用・注意点: 現場で役立つ補足とバグ回避
1. パッケージごとの確認: プロジェクトが大きくなると、ルートディレクトリで実行するだけでは不十分です。go test ./… -cover を実行することで、全サブパッケージの網羅率を一覧表示できます。
2. 注意点: カバレッジが100%だからといって、バグがないとは限りません。あくまで「通ったコード」の割合であり、論理的な分岐や境界値テストが網羅されているかは別の話です。テストケースの中身自体が適切か、常に意識することが重要です。
3. CI/CDとの連携: 現場では、このコマンド結果をパイプラインで解析し、カバレッジが一定基準を下回った場合にビルドを失敗させる設定を行うと、チーム全体の品質維持に繋がります。
まずは日々の開発で go test -cover を叩く癖をつけることから始めてみてください。小さなフィードバックの積み重ねが、堅牢なGoプログラムへの近道となります。

コメント