判定条件/条件網羅
テストの方針だよ
判定条件網羅+条件網羅だよ
すべての枝分かれの行き先を確認するよ
すべての条件のYes/Noを確認するよ
簡単に書くよ
判定条件/条件網羅(読:ハンテイジョウケンジョウケンモウラ)とは
「判定条件網羅と条件網羅の両方を満たすようにテストしますよ」のこと。
用語の中身としては
「どれくらい、しっかりテストする?」の方針のひとつ
であり
「処理が枝分かれしたときの行き先を全部1回は確認するぜ!あと、それぞれの条件のYes/Noを全部1回は確認するぜ!」になるようにテストを設定すること
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「判定条件網羅」と「条件網羅」について説明します。
「そんなの説明されなくても知ってるよ!」な人は、ここから先を読む必要は ありません。
判定条件網羅と条件網羅の両方を満たすようにするのが「判定条件/条件網羅」です。
判定条件網羅は「処理が枝分かれしたときの行き先を全部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
2.嫌なことがあった? → No
のテストと
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
のテストをやれば条件網羅です。
すべての条件に対するYes/Noが確認できていますよね。
※実際には「お腹が空いた? → Yes」の条件を満した時点で(プログラミング言語によっては)「(お腹が空いた? == Yes) or (嫌なことがあった? == Yes)」の条件判定が終わるので「嫌なことがあった? → No」の確認は取れていなかったりしますが、今回は気にしないことにします。そーゆー難しいことが気になるだけの知識がある人は他のところで勉強してください。
以上が判定条件網羅と条件網羅の説明です。
判定条件網羅:「枝分かれの行き先(分岐)」に注目してテスト
条件網羅:「枝分かれの行き先が変わる要素(条件)」に注目してテスト
です。
さて、いよいよ本題の「判定条件/条件網羅」の説明に入ります。
先ほどの条件網羅の説明を思い出してください。
ピヨ太プログラムを条件網羅でテストする場合、2パターンのテストをやりました。
1.お腹が空いた? → Yes
2.嫌なことがあった? → No
のテストと
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
のテストです。
この2パターンをテストすれば条件網羅になります。
ただし、この2パターンのテストは、どちらも
1.ケーキを食べる
ルートに入ります。
2.ケーキを食べない
ルートには入りません。
つまり、この条件網羅のテストは判定条件網羅ではありません。
判定条件網羅となるには
1.ケーキを食べる
2.ケーキを食べない
の2パターンを確認できる必要がありますが「ケーキを食べない」が確認できていないからです。
せっかくなので「ケーキを食べない」も確認しておきましょうか。
追加で
1.お腹が空いた? → No
2.嫌なことがあった? → No
のテストをやりました。
これで「ケーキを食べない」も確認できました。
めでたし、めでたし。
ここまでの流れをまとめます。
やったテストは
1.お腹が空いた? → Yes
2.嫌なことがあった? → No
1.お腹が空いた? → No
2.嫌なことがあった? → Yes
1.お腹が空いた? → No
2.嫌なことがあった? → No
の3パターンです。
この3パターンのテストによって
1.ケーキを食べる
2.ケーキを食べない
の分岐と
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の条件が、すべて確認できました。
よって、今回やった3パターンのテストは
判定条件網羅であり条件網羅でもある
と言えます。
このような
すべての判定条件(枝分かれの行き先)と、すべての条件(枝分かれの行き先が変わる要素)を網羅したらテストを終わりにしよう!
なテスト方針が判定条件/条件網羅です。
なお、判定条件/条件網羅は「判定条件・条件網羅」のように表現される場合も あります。
そこら辺の表記ゆれは、ゆるく解釈してください。
本質は
判定条件網羅と条件網羅の両方を満たすよ!
です。
一言でまとめるよ
まぁ「判定条件/条件網羅」って単語が出てきたら「『すべての枝分かれの行き先とすべての条件のYes/Noを確認できたらOK!』なテスト方針なんだな~」と お考えください。






