カテゴリ: Go言語 更新日: 2026/01/08

Go言語のカバレッジ計測(-cover)を使ったテスト品質向上ガイド

Go言語のカバレッジ計測(-cover)を使ったテスト品質向上
Go言語のカバレッジ計測(-cover)を使ったテスト品質向上

先生と生徒の会話形式で理解しよう

生徒

「Go言語でテストを書いた後、ちゃんと全部のコードがテストされているか確認する方法はありますか?」

先生

「あります。Goには-coverというカバレッジ計測の機能があり、テストで実行されたコードの割合を確認できます。」

生徒

「カバレッジって何ですか?」

先生

「カバレッジとは、テストによって実際に実行されたコードの割合のことです。100%に近いほどテストでコード全体がチェックされていることを示します。」

1. -coverオプションとは?

1. -coverオプションとは?
1. -coverオプションとは?

Go言語では、go testコマンドに-coverオプションを付けることで、テスト実行時にどのコードが実行されたかを計測できます。これにより、テスト漏れを防ぎ、品質の高いコードを書きやすくなります。


go test -cover

上記のコマンドを実行すると、テストの成否とともに、コードのカバレッジ率が表示されます。

2. カバレッジの詳細レポートを作る

2. カバレッジの詳細レポートを作る
2. カバレッジの詳細レポートを作る

さらに詳しく知りたい場合は、-coverprofileオプションを使ってカバレッジの詳細情報をファイルに出力できます。


go test -coverprofile=coverage.out

生成されたcoverage.outファイルを使って、HTML形式のレポートを作ることもできます。


go tool cover -html=coverage.out -o coverage.html

このHTMLレポートをブラウザで開くと、どの行がテストされているか色で確認できます。テストされていないコードが視覚的に分かるので、テスト漏れの補完に便利です。

3. カバレッジ計測で気をつけるポイント

3. カバレッジ計測で気をつけるポイント
3. カバレッジ計測で気をつけるポイント

カバレッジはあくまで「テストで実行された割合」を示すだけで、バグがないことを保証するものではありません。しかし、低いカバレッジはテストが足りないことを示すので、改善の目安になります。

  • if文やfor文のすべての分岐が実行されるようにテストを書く。
  • 複雑な関数は小さく分けてテストしやすくする。
  • mockやinterfaceを使って外部依存のテストもカバーする。

4. 実際にカバレッジを上げる工夫

4. 実際にカバレッジを上げる工夫
4. 実際にカバレッジを上げる工夫

例えば、条件分岐を持つ関数をテストする場合、trueとfalse両方のケースをテストします。mockを使う場合は、通常時と異常系の動作を切り替えられるので、カバレッジが向上します。


func IsAdult(age int) bool {
    if age >= 20 {
        return true
    }
    return false
}

func TestIsAdult(t *testing.T) {
    if !IsAdult(25) {
        t.Error("Expected true for age 25")
    }
    if IsAdult(15) {
        t.Error("Expected false for age 15")
    }
}

このようにテストを書くことで、if文の両方の分岐が実行され、カバレッジが100%に近づきます。

5. 初心者でもできるカバレッジ活用法

5. 初心者でもできるカバレッジ活用法
5. 初心者でもできるカバレッジ活用法

テストを書いたら、まずgo test -coverで簡単に確認。次に-coverprofileで詳細を確認する。この順番で進めると、どの部分のテストが不足しているかがすぐにわかります。テスト漏れを補いながらコードを改善すると、Go言語のテスト品質は格段に向上します。

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
New2
Kotlin
Kotlinのコーディング規約(公式スタイルガイド)とは?読みやすいコードを書くための基本ルール
New3
Kotlin
Kotlinの関数型を整理するパッケージ・ファイル構造の例を初心者向けにやさしく解説!
New4
Swift
Swiftデータ型まとめ|String・Int・Bool・Arrayの基本を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.3
Java&Spring記事人気No3
Go言語
Go言語のWebアプリにおけるセキュリティベストプラクティス集
No.4
Java&Spring記事人気No4
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.5
Java&Spring記事人気No5
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.6
Java&Spring記事人気No6
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.7
Java&Spring記事人気No7
Kotlin
Kotlinのgetter・setterのカスタマイズ方法をわかりやすく解説!初心者向け完全ガイド
No.8
Java&Spring記事人気No8
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!