3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Go言語で説明するテストカバレッジについて

Last updated at Posted at 2023-03-01

Go言語において、テストカバレッジはテストスイートがプログラムのどの程度をカバーしているかを測定するためのツールです。
テストカバレッジは、テストがコードのどの範囲に到達したかを定量化し、コードの品質と安全性を向上させるために使用されます。
ようは、テスト対象のコードについて、テストを実施した割合です。

具体的には、テストカバレッジは以下の2つのメトリックで測定されます。

  • 行カバレッジ: テストスイートがプログラムの各行をどの程度実行したかを示すパーセンテージです。
  • 分岐カバレッジ: プログラム内の各条件分岐をどの程度テストしたかを示すパーセンテージです。

例えば、以下のようなコードがある場合を考えます。

func add(a, b int) int {
    if a > 0 && b > 0 {
        return a + b
    }
    return 0
}

この場合、行カバレッジが100%になるようなテストケースは次のようになります。

func TestAdd(t *testing.T) {
    if add(2, 2) != 4 {
        t.Errorf("add(2, 2) should be 4")
    }
    if add(0, 1) != 0 {
        t.Errorf("add(0, 1) should be 0")
    }
    if add(-1, 1) != 0 {
        t.Errorf("add(-1, 1) should be 0")
    }
}

これらのテストケースを実行すると、行カバレッジが100%になります。

テストカバレッジを測定することにより、テストスイートがカバーしていないコードの範囲を特定し、それに応じたテストを追加することができます。これにより、コードの品質と安全性を向上させることができます。

テスト方法

Go言語におけるテストカバレッジの測定方法は、標準ライブラリで提供されている go test コマンドを使用して行います。
具体的には、以下のコマンドを実行します。

go test -cover ./...

このコマンドは、カレントディレクトリおよびサブディレクトリ内のすべてのパッケージのテストを実行し、カバレッジレポートを出力します。

レポートには、各関数の行カバレッジおよび分岐カバレッジのパーセンテージが表示されます。
また、どの行が実行されたかどうか、どの分岐がテストされたかどうかを示すカバレッジプロファイルが生成されます。

また、カバレッジレポートをHTML形式で出力することもできます。
以下のコマンドを実行すると、coverage.html という名前のHTMLファイルが生成されます。

go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.html

このHTMLレポートには、視覚的にカバレッジレポートを確認できるツールが含まれており、どの部分がカバーされているかどうかをより簡単に理解できます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?