C1/C1/C2 カバレッジについて
■いつも忘れてしまうカバレッジの違いについて
C0/C1/C2
検査網羅率(テストカバレージ) ── どれだけテストしたか、の指標。
例:
void function(...) { if ( 条件A || 条件B ) { 処理1 } else { 処理2 } if ( 条件C ) { 処理3 } else { 処理4 } }
C0: 命令網羅 ステートメント・カバレージ
通っていない処理がなくなればC0は100%となる。
この例では 処理1,2,3,4 を少なくとも1度通るべきであるということ。
つまり
- 処理1, 処理3 を通るケース
- 処理2, 処理4 を通るケース
のふたつ。
C1:分岐網羅 ブランチ・カバレージ
分岐の全組み合わせをテストすればC1は100%となる。
この例では
- 処理1, 処理3 を通るケース
- 処理1, 処理4 を通るケース
- 処理2, 処理3 を通るケース
- 処理2, 処理4 を通るケース
の4つ。
C2:条件網羅 コンディション・カバレージ
条件式の全組み合わせをテストすればC2は100%となる。
この例では、条件A,B,C があるので
- 条件A = false, 条件B= false, 条件C= false となるケース
- 条件A = false, 条件B= false, 条件C= true となるケース
- 条件A = false, 条件B= true, 条件C= false となるケース
- 条件A = false, 条件B= true, 条件C= true となるケース
- 条件A = true, 条件B= DC, 条件C= false となるケース
- 条件A = true, 条件B= DC, 条件C= true となるケース
の6つ。
※ (DC: Don't Care = どうでもいいということ)
実コードでは条件式の数がかなり大きくなると思われるので、
C2カバレッジは現実的ではないかも。
※
条件式が10個あったらC2を100%にしようとすれば、
最大1024通りのテストケースが必要となってしまう
しかしたとえば条件式5つずつの二本のコードに分割できるなら、
C2を100%にするには32通りをふたつで
64通りのテストケースとなり、これなら全件テストも現実的になってきた?
関数を分割するメリットがここにも出てくる。
- ソフトウェアテスト入門 押さえておきたい<<要点・重点>>/著者不明
- ¥2,079
- Amazon.co.jp