コードカバレッジ
本記事の概要
本記事では、下記3種類のカバレッジについて記載する。
- ステートメントカバレッジ(C0:命令網羅)
- ブランチカバレッジ(C1:分岐網羅)
- 単純条件カバレッジ(C2:条件網羅)
説明で用いるサンプルコード
if (条件文a1 || 条件文a2) { //判定条件A
命令文1
} else{
命令文2
} if (条件文b1 && 条件文b2) { //判定条件B
命令文3
}
ステートメントカバレッジ(C0:命令網羅)
結論
- 実行可能なステートメント(命令)のうち、テストで実行された命令の割合のこと
⇒カバレッジを100%にするには、実行可能なステートメントを全て少なくとも1回は実行する必要がある
上記サンプルコードの場合
- 命令文1~3のステートメントを行う2つのテストケースが必要
ブランチカバレッジ(C1:分岐網羅)
結論
- 全ての判定条件のうち、テストで実行された判定条件の割合のこと
⇒カバレッジを100%にするには、それぞれの判定条件の真偽が少なくとも1回は実行する必要がある
上記サンプルコードの場合
- 下記の2つのテストケースが必要(※それぞれの判定条件の真偽が少なくとも1回は実行されていることが確認できる)
- 判定条件A:真、判定条件B:偽
- 判定条件A:偽、判定条件B:真
単純条件カバレッジ(C2:条件網羅)
結論
- 全ての条件文のうち、テストで実行された条件文の割合のこと
⇒カバレッジを100%にするには、それぞれの条件文の真偽が少なくとも1回は実行する必要がある
上記サンプルコードの場合
- 下記の2つのテストケースが必要(それぞれの条件文の真偽が少なくとも1回は実行されていることが確認できる)
- 条件文a1:真、条件文a2:偽、条件文b1:真、条件文b2:真
→判定条件A:真、判定条件B:真 - 条件文a1:偽、条件文a2:真、条件文b1:偽、条件文b2:偽
→判定条件A:真、判定条件B:偽
- なお、上記の例のようにC2のカバレッジが100%でも、C0, C1のカバレッジが100%になるとは限らない