「分岐網羅」と「条件網羅」の違い
予備知識
| 用語 | 意味 |
|---|---|
| 条件分岐処理 | 「これだったら、あれをして。これじゃなかったら、それをして」のように、条件を満たすかどうかでプログラムさんにやらせることを変える命令。if文とか、switch文とかを使って書く処理 |
それぞれの用語の意味
| 用語 | 意味 |
|---|---|
| 分岐網羅 | 「処理が枝分かれしたときの行き先を全部1回は確認するぜ!」になるようにテストを設定すること |
| 条件網羅 | 「条件によって分岐する処理が出てきたとき、それぞれの条件のYes/Noを全部1回は確認するぜ!」になるようにテストを設定すること |
似ているところ
どちらもテストの方針を表す用語です。
「どれくらい、しっかりテストする?」です。
また、どちらも条件分岐処理に注目してテスト内容を決めます。
違うところ
条件分岐処理の何に注目してテスト内容を決めるかが違います。
「枝分かれの行き先(分岐)」に注目してテストするのが分岐網羅です。
「枝分かれの行き先が変わる要素(条件)」に注目してテストするのが条件網羅です。
例えば、ここにピヨ太プログラムが あったとしましょう。

ピヨ太プログラムは
1.お腹が空いた
2.嫌なことがあった
のどちらかの条件を満たすと、ケーキを食べるプログラムです。

ピヨ太プログラムの処理を、もう少しプログラムっぽく書くと以下のようになります。
if((お腹が空いた? == Yes) or (嫌なことがあった? == Yes)){
ケーキを食べる
}

ピヨ太プログラムにおける枝分かれの行き先(分岐)は
1.ケーキを食べる
2.ケーキを食べない
の2つです。

枝分かれの行き先が変わる要素(条件)は
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の4パターンです。

すべての枝分かれの行き先(分岐)を最低1回は確認するのが分岐網羅です。
具体的には
1.ケーキを食べる
2.ケーキを食べない
の2パターンを確認できるように条件を設定してテストをやります。

例えば
1.お腹が空いた? → Yes
のテストと
1.お腹が空いた? → No
2.嫌なことがあった? → No
のテストをやれば分岐網羅です。

すべての分岐が確認できていますよね。
それに対して、すべての枝分かれの行き先が変わる要素(条件)を最低1回は確認するのが条件網羅です。
具体的には
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の4パターンを確認できるように条件を設定してテストをやります。

例えば
1.お腹が空いた? → Yes
のテストと
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
のテストと
1.お腹が空いた? → No
2.嫌なことがあった? → No
のテストをやれば条件網羅です。

すべての条件に対するYes/Noが確認できていますよね。
ちなみに、3回テストをやっているのは「お腹が空いた? → Yes」の条件を満たすと「嫌なことがあった?」の判定が行われないからです。
1.お腹が空いた? → Yes
2.嫌なことがあった? → No
の条件でテストをやると「お腹が空いた? → Yes」の条件を満たした時点で条件判定が終わります。
嫌なことがあったかどうかは気にしません。
どちらにしろケーキを食べるからです。
よって
1.お腹が空いた? → Yes
2.嫌なことがあった? → No
の条件でテストをやって確認が取れるのは「お腹が空いた? → Yes」だけです。
「嫌なことがあった? → No」の確認は取れません。
1.お腹が空いた? → Yes
2.嫌なことがあった? → No
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
の2回のテストだと「嫌なことがあった? → No」の確認が取れないのです。
これが、テストが3回になる理由です。
1.お腹が空いた? → Yes
で「お腹が空いた? → Yes」の確認を取り
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
で「お腹が空いた? → No」の確認と「嫌なことがあった? → Yes」の確認を取り
1.お腹が空いた? → No
2.嫌なことがあった? → No
で(「お腹が空いた? → No」の確認と)「嫌なことがあった? → No」の確認を取っています。
備考
分岐網羅は「判定条件網羅」とも呼ばれます。
紛らわしいですね。
「条件網羅」と「判定条件網羅(=分岐網羅)」は違います。





