C1/C1/C2 カバレッジについて

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通りのテストケースとなり、これなら全件テストも現実的になってきた?

関數を分割するメリットがここにも出てくる。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章