Cobertura とは、オープンソースで開発されているコードカバレッジ測定ツールである。Coberturaはコマンドラインから実行する他、Apache Antのタスクとして実行することもできる。測定した結果は、HTML形式などの視覚的なレポートとして出力される。

Coberturaは、測定対象となるプログラムのクラスファイルの内容を書き換え、カバレッジを取得するためのコードを埋め込む。そして、JUnitのテストケースを実行して、クラスファイルに埋め込まれた測定コードから各処理がそれぞれ何回実行されたかという情報を記録して、その内容をserファイルという形式で出力する。テストの実行が完了すると、Coberturaはserファイルを読み込み、レポートとしてまとめてHTML形式やXML形式で出力する。

コードカバレッジ

コードカバレッジ は、「プログラム全体がテストコードによってどの程度テストされているか」を示す割合のことである。つまり、どれだけテストしたかを表す指標となる。ただし、何を基準に100%とするか測定方法がいくつかある。以下に示すJavaコードを例に、代表的な3種類の測定方法を示す。

public void doSample() {

    if (条件1) {
        処理1
    } else {
        処理2
    }

    if (条件2 || 条件3) {
        処理3
    } else {
        処理4
    }
}

C0カバレッジ(命令網羅)

C0カバレッジ(命令網羅) とは、テストによってプログラムの各行が1回以上実行されれば100%とする測定方法である。

上記のJavaコードの例では、以下のテストケースがあればカバレッジが100%となる。

C1カバレッジ(分岐網羅)

C1カバレッジ(分岐網羅) とは、全ての分岐の組み合わせが実行されれば100%とする測定方法である。

上記のJavaコードの例では、以下のテストケースがあればカバレッジが100%となる。

C2カバレッジ(条件網羅)

C2カバレッジ(条件網羅) とは、条件分岐の全ての組み合わせが実行されれば100%とする測定方法である。

上記のJavaコードの例では、以下のテストケースがあればカバレッジが100%となる。

このように、C0カバレッジが100%となるテストに比べて、C1カバレッジやC2カバレッジが100%となるテストのほうが厳密なテストになる。ただし、その分テストケースが増えることになる。

スポンサーリンク