条件網羅 【C2】 condition coverage / コンディションカバレッジ
概要
条件網羅(C2)とは、ソフトウェアテストにおける網羅性の水準の一つで、対象プログラム中に含まれる条件分岐について、個々の条件が真あるい偽になる場合を少なくとも一回は含むこと。すべての条件のうちテストされた割合を「条件網羅率」という。プログラムの内部構造に基づいてテスト方針を決める「ホワイトボックステスト」の網羅性を表すレベルの一つで、複数の条件を組み合わせた条件分岐がある場合に、個々の条件の真偽に着目する。
例えば、if(A or B) という複合的な条件がある場合、Aが真の場合と偽の場合、Bが真の場合と偽の場合のすべてが含まれるようにする。すなわち、(A,B)=(真,真)(偽,偽)の2ケース、あるいは、(A,B)=(真,偽)(偽,真)の2ケースのどちらかをテストすれば網羅できる。
網羅性の水準としては他に「命令網羅」(C0)や「分岐網羅」(C1)などがあり、条件網羅はこれらより多数のテストケースが必要だが網羅性も高くなる。分岐網羅は命令網羅を包含するという関係にあるが、条件網羅は必ずしもこれらを含んだり含まれたりするとは限らない。
複合条件網羅 (MCC:Multiple Condition Coverage)
プログラム中の条件分岐に複数の条件の組み合わせがある場合に、そのすべての組み合わせを網羅することを複合条件網羅という。
条件網羅では個々の条件について真と偽の両方が含まれていれば別の条件との組み合わせは関知しないが、複合条件網羅では条件の真偽のすべての組み合わせをテストする必要がある。if(A or B) という2つの条件を組み合わせた分岐の場合、(A,B)=(真,真)(偽,偽)(真,偽)(偽,真)の4ケースが必要となる。
複数条件網羅
「複数条件網羅」という用語は、一般的には複合条件網羅の同義語として、一つの条件分岐に含まれる複数条件のすべての真偽の組み合わせを網羅することを意味する場合が多い。
一方、複合条件網羅とは異なるとする立場もあり、その場合は、プログラム中の複数の条件分岐の真偽のすべての組み合わせを網羅するという意味に解釈することが多い。例えば、テストするプログラム中に条件分岐がXとYの2つ含まれている場合に、(X,Y)=(真,真)(偽,偽)(真,偽)(偽,真)のすべての組み合わせを網羅する。ただし、分岐が入れ子(ネスト)状になっておりXの結果によってYへ到達するか変わる場合にはこの限りではない。