条件網羅率
テスト全体に対して、どれくらいの確認が終わったか?だよ
テスト方針は条件網羅だよ
簡単に書くよ
条件網羅率(読:ジョウケンモウラリツ)とは
「条件によって分岐する処理が出てきたとき、それぞれの条件のYes/Noを全部1回は確認するぜ!」になるように設定してやるテスト(条件網羅でやるテスト)における「テストを全部やると、これだけ確認できるはずだよ。それに対して今はこれだけの確認が終わってるよ」な割合のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「条件網羅」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
条件網羅は「すべての条件のYes/Noが確認できればテストはOKだよね?」なテスト方針です。
「条件」とか言われても、よく分からない人は
「ここの値が変わったら処理の行き先が変わるかもね」な要素
と解釈してください。
「ここの値が変わったら処理の行き先が変わるかもね」な要素すべてに対して、あっちに行く場合とこっちに行く場合を最低1回は確認するのが条件網羅です。
例えば、そうですね。
ここにピヨ太プログラムが ありました。
ピヨ太プログラムは
1.お腹が空いた
2.嫌なことがあった
のどちらかの条件を満たすと、ケーキを食べます。
そんな役立たずなプログラムです。
ピヨ太プログラムの処理を、もう少しプログラムっぽく書くと以下のようになります。
if((お腹が空いた? == Yes) or (嫌なことがあった? == Yes)){
ケーキを食べる
}
ピヨ太プログラムにおける枝分かれの行き先が変わる要素(条件)は
1.お腹が空いた?
2.嫌なことがあった?
の2つです。
それぞれの条件ごとにYesの場合とNoの場合があるので、
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の4パターンあります。
すべての枝分かれの行き先が変わる要素(条件)を最低1回は確認するのが条件網羅です。
具体的には
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の4パターンを確認できるように条件を設定してテストをやります。
例えば
1.お腹が空いた? → Yes
のテストと
2.お腹が空いた? → No
のテストと
(2.お腹が空いた? → No)
3.嫌なことがあった? → Yes
のテストと
※(プログラミング言語によっては)「お腹が空いた? → Yes」の条件を満した時点で「(お腹が空いた? == Yes) or (嫌なことがあった? == Yes)」の条件判定が終わります。「嫌なことがあった?」がYesでもNoでも全体としてYesになるからです。よって「嫌なことがあった?」の確認をするためには「お腹が空いた? → No」である必要があります……が、よく分からない人は気にしなくてOKです。
(2.お腹が空いた? → No)
4.嫌なことがあった? → No
のテストをやれば条件網羅です。
すべての条件に対するYes/Noが確認できていますよね。
なお、今回は分かりやすくするために条件をバラしました。
実際には1回のテストで複数項目を確認するのが一般的です。
例えば
・お腹が空いた? → No
・嫌なことがあった? → Yes
の条件設定をしてからピヨ太プログラムを動かすことで
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
の2つをまとめて確認したりします。
以上を踏まえて
「条件網羅でテストをやってるんだけどさ~。何割くらい確認が終わったかな?」を何となく数字で表したやつ
が「条件網羅率」です。
ピヨ太プログラムを例にとると、条件網羅で確認することは
1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No
の4パターンです。
当たり前ですが、最初の時点では、何も確認できていません。
条件網羅率は0%です。
次にピヨ太プログラムを
1.お腹が空いた? → Yes
の条件に設定してテストをやりました。
このテストにより
1.お腹が空いた? → Yes
の条件で期待した通りに動くことを確認できました。
これで条件網羅率は25%です。
全部で4つ確認するつもりです。
そのうちの1つが確認できました。
4分の1終わった計算です。
次にピヨ太プログラムを
2.お腹が空いた? → No
の条件に設定してテストをやりました。
このテストにより
2.お腹が空いた? → No
の条件で期待した通りに動くことを確認できました。
これで条件網羅率は50%です。
全部で4つ確認するつもりです。
そのうちの2つ確認できました。
半分終わった計算です。
次にピヨ太プログラムを
(2.お腹が空いた? → No)
3.嫌なことがあった? → Yes
の条件に設定してテストをやりました。
このテストにより
(2.お腹が空いた? → No)
3.嫌なことがあった? → Yes
の条件で期待した通りに動くことを確認できました。
これで条件網羅率は75%です。
全部で4つ確認するつもりです。
そのうちの3つ確認できました。
4分の3終わった計算です。
次にピヨ太プログラムを
(2.お腹が空いた? → No)
4.嫌なことがあった? → No
の条件に設定してテストをやりました。
このテストにより
(2.お腹が空いた? → No)
4.嫌なことがあった? → No
の条件で期待した通りに動くことを確認できました。
これで条件網羅率は100%です。
全部で4つ確認するつもりです。
そのうちの4つとも確認できました。
全部終わった計算です。
このような「条件網羅における確認の消化率」が条件網羅率です。
一言でまとめるよ
まぁ「条件網羅率」って単語が出てきたら「すべての条件のYes/Noを確認できたらOK!な方針でやっているテストにおける、確認が終わった部分の割合なんだな~」と お考えください。
おまけ
■検索してみる?






