「条件網羅」と「複合条件網羅」の違い
予備知識
| 用語 | 意味 |
|---|---|
| 条件分岐処理 | 「これだったら、あれをして。これじゃなかったら、それをして」のように、条件を満たすかどうかでプログラムさんにやらせることを変える命令。if文とか、switch文とかを使って書く処理 |
それぞれの用語の意味
| 用語 | 意味 |
|---|---|
| 条件網羅 | 「条件によって分岐する処理が出てきたとき、それぞれの条件のYes/Noを全部1回は確認するぜ!」になるようにテストを設定すること |
| 複合条件網羅 | 「条件によって分岐する処理が出てきたとき、取り得るすべてのパターンを確認するぜ!」になるようにテストを設定すること |
似ているところ
どちらもテストの方針を表す用語です。
「どれくらい、しっかりテストする?」です。
また、どちらも条件分岐処理における条件に注目してテスト内容を決めます。
違うところ
条件分岐の条件が複数あった場合に、条件同士をバラバラに考えるか関連付けて考えるかの違いです。
条件網羅では「それぞれの条件」に注目してパターンを網羅するようにテストをやります。
それに対して、複合条件網羅では「それぞれの条件の組み合わせ」に注目してパターンを網羅するようにテストをやります。
例えば、そうですね。
ここにピヨ太プログラムが ありました。

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

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

条件として取り得る値には
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の4つの可能性があります。

「それぞれの条件」に注目してパターンを網羅するようにテストをするのが条件網羅です。
例えば
1.お腹が空いた? → Yes
のテストをやって「1.お腹が空いた? → Yes」の確認をやり、
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
のテストをやって「2.お腹が空いた? → No」と「3.嫌なことがあった? → Yes」の確認をやり、
1.お腹が空いた? → No
2.嫌なことがあった? → No
のテストをやって「4.嫌なことがあった? → No」の確認を行えば、条件網羅になります。

条件として取り得る値
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
が少なくとも1回は確認できていますよね。
それに対して、複合条件網羅では「それぞれの条件の組み合わせ」に注目してパターンを網羅するようにテストをやります。
身も蓋もない言い方をすると「全部の可能性をテストするよ!」です。
具体的には、ピヨ太プログラムを
1.お腹が空いた? → Yes
2.嫌なことがあった? → Yes
にして動かすテストと
1.お腹が空いた? → Yes
2.嫌なことがあった? → No
にして動かすテストと
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
にして動かすテストと
1.お腹が空いた? → No
2.嫌なことがあった? → No
にして動かすテストをやれば複合条件網羅になります。

条件として取り得る値の組み合わせ
1.お腹が空いた? → Yes、嫌なことがあった? → Yes
2.お腹が空いた? → Yes、嫌なことがあった? → No
3.お腹が空いた? → No、嫌なことがあった? → Yes
4.お腹が空いた? → No、嫌なことがあった? → No
が確認できていますよね。
個人的な使い分け
可能であれば、複合条件網羅でテストをやるようにしています。
あまり大きな声では言えませんが、時間が足りなかったり面倒くさいときは条件網羅でお茶を濁すときもあります。
備考
条件網羅では横着してやっていない部分もきっちりやるのが複合条件網羅です。
複合条件網羅の方が「しっかりとテストをやってるね!」なテスト方針です。
条件網羅や複合条件網羅は「C2」と表現されることも あります。
私の理解では、本来「C2」は条件網羅を指す表現です。
ただし、複合条件網羅は条件網羅の仲間と言えるでしょう。
そのせいか、複合条件網羅を意図して「C2」と表現されている場合も あります。






