条件網羅とは?ゆるーくわかりやすく解説



1. 条件網羅の要点
条件網羅とは・・・
- それぞれの条件式が真と偽になるケースを少なくとも1回はテストする。
- C2と呼ばれる
- ホワイトボックステストの一つ
- 英語だと、conditional coverage
2. 条件網羅(Condition Coverage)とは?
条件網羅は、ソフトウェアテストにおけるホワイトボックステストの一つです。プログラム内の条件分岐における個々の条件式が「真(True)」または「偽(False)」になる場合をそれぞれ少なくとも1回はテストします。
2.1. 条件網羅の考え方
条件式は「真(True)」または「偽(False)」という結果を持ちます。たとえば、A && B
(AかつB)の条件式では、次のような真偽が考えられます。
- A=True, B=True(条件式全体が真)
- A=True, B=False(条件式全体が偽)
- A=False, B=True(条件式全体が偽)
- A=False, B=False(条件式全体が偽)
条件網羅では各条件式AとBがそれぞれ真と偽になるケースの組合わせが必要になるので、次のようなテストで条件網羅を行うことができます。
「A=True, B=True(条件が真)とA=False, B=False(条件が偽)のケース」
または
「A=True, B=False(条件が偽)とA=False, B=True(条件が偽)のケース」

2.2. 英語から推測すると
「条件網羅(Condition Coverage)」を英語から意味を推測すると、次のように解釈できます。
- Condition は「条件」や「状況」を意味します。ソフトウェアテストにおいては、「条件式(if文やwhile文など)」を指します。
- Coverage は「網羅」や「カバー」を意味します。これは、特定の範囲や内容を漏れなく含むことを指します。
したがって、「Condition Coverage」を直訳すると「条件を網羅する」という意味になります。
3. 他のテスト手法との違い
条件網羅と並んでよく使われるテスト手法を比較します。
3.1. 命令網羅(Statement Coverage)
命令網羅はプログラム中のすべての命令が少なくとも一度実行されるようにテストしますが、条件式の評価結果には着目しません。
3.2. 分岐網羅(Branch Coverage)
分岐網羅はすべての分岐(if文やswitch文など)を網羅的にテストしますが、条件式の個々の部分には着目しません。
3.3. 複合条件網羅(Multiple Condition Coverage)
複合条件網羅は条件式のすべての部分の組み合わせを網羅する方法ですが、テストケースが非常に多くなる傾向があります。
4. 条件網羅の例
ラーメンの注文を例にして考えてみましょう。この店では、ラーメンまたは定食かどうかを選択できます。また、ラーメンの味を味噌、醤油かどうか選択できます。また、大盛かどうかを選択できます。
ここで、「たれを用意する」と「定食を用意する」、「量を6倍にする」という特別な命令を分岐で行います。それぞれの条件を条件網羅で見ていくと
醤油と味噌が真と偽になるケースを試す。例えば、
「醤油 YES 味噌 YESの場合」と「醤油 NO 味噌 NO」の場合をテストケースとする。
一方で、大盛かどうかは単純に真と偽になるようなケースを試せばよい。