応用情報技術者 2022年 春期 午前2 問47
問題文
次の流れ図において、判定条件網羅 (分岐網羅) を満たす最少のテストケースの組みはどれか。

選択肢
ア:(1) A=0, B=0 (2) A=1, B=1
イ:(1) A=1, B=0 (2) A=1, B=1(正解)
ウ:(1) A=0, B=0 (2) A=1, B=1 (3) A=1, B=0
エ:(1) A=0, B=0 (2) A=0, B=1 (3) A=1, B=0
🔒 解説は解答すると表示されます
判定条件網羅【午前2解説】
正解の理由
判定(分岐)網羅は、各判定(複合式全体)が「真」と「偽」の両方の評価を少なくとも一度は取ることを要求します。本問題の流れ図には2つの判定があり、それぞれの「真/偽」をテストセット全体で取得する必要があります。
選択肢のうち、イの組合せ((1) A=1, B=0と (2) A=1, B=1)は、
- 第1判定「A>0かつB=0」に対して (1) で真、(2) で偽 を与え、
- 第2判定「A>0かつC=1」に対して (1) で真、(2) で偽 を与えます。
したがって、両判定について真・偽の両方が出力され、判定(分岐)網羅を満たします。
ここで重要なのは、判定網羅が「各原子条件を両方の真偽で評価すること(条件網羅)」を要求するわけではない点です。本例ではA>0が両ケースとも真(A=1)でも判定全体の真偽が両方出ているため、判定(分岐)網羅は満たされます。
解法ステップ
- 流れ図から判定点を洗い出す。ここでは
- D1: 「A>0かつB=0」
- D2: 「A>0かつC=1」
- 各判定について、「真」と「偽」を少なくとも一度は出すことを目標にする(判定=複合式全体の真偽)。
- パス上の代入文が判定の評価に与える影響を整理する。
- 最初の四角で (1→C)。
- D1がNoの場合は2→Cにより 。
- D1がYesの場合はA×C→Cにより(直前の を用いて)。
- D2を真にするためには「A>0かつC=1」になることが必要。D1 Yesのとき なのでD2が真になる条件は かつ 、すなわち 。
- 以上より、1つのケースでD1=真かつD2=真(例:A=1,B=0)、もう1つのケースでD1=偽かつD2=偽(例:A=1,B=1)を用意すれば良い。これで各判定の両方の評価を得られるため最少は2ケースとなる。
選択肢別の誤答解説
- ア: (1) A=0, B=0 (2) A=1, B=1
(1) はD1偽、D2偽。 (2) はD1偽、D2偽。どちらもD1が一度も真にならず、判定網羅を満たさない。 - イ: (1) A=1, B=0 (2) A=1, B=1
先述の通り、D1は (1) で真、(2) で偽。D2も (1) で真、(2) で偽。両判定の真・偽を網羅する最小の組合せである。 - ウ: (1) A=0, B=0 (2) A=1, B=1 (3) A=1, B=0
D1・D2は網羅できるが、ケース数が3で冗長。最少を問う設問には適さない。 - エ: (1) A=0, B=0 (2) A=0, B=1 (3) A=1, B=0
これもD1・D2は網羅できるが、ケース数が3で最少ではない(A=1が1回しかなく冗長な組合せを含む)。
よくある誤解
- 「判定網羅=条件網羅」と混同する
- 判定(分岐)網羅は「複合判定そのものの真偽を両方出す」こと。条件網羅は「各原子条件を両方の真偽にする」こと。どちらか一方を満たしても必ずしも他方を満たすとは限らない。
- Cを固定の入力だと誤認する
- 図中の1→Cや2→C、A×C→C、C²→Cは変数Cの代入であり、判定の真偽はこれらの代入結果によって変わる。テストケース間でCの値が異なることを意識する必要がある。
- 「各判定の原子条件を個別に真偽させる必要がある」と考え、不要にケースを増やす
- 判定網羅では不要にケースを増やさず、判定全体の真偽を満たせばよい。
補足コラム
最小性の簡単な証明:少なくとも1つの判定(ここではD1)を真と偽の両方にする必要があるため、テストケースは最低2つ必要です。2つで可能かどうかは、パスごとの代入が判定評価にどう影響するかを考えればよく、本問題では上で示した通り2つで十分です。
また、さらに厳密な網羅基準として「判定と条件の両方を満たす基準(condition+decision coverage)」や「MC/DC(修飾条件-判定網羅)」があります。これらは原子条件と判定全体の組合せや独立性を要求するため、今回の最少2ケースより多くのケースが必要となることが多い点に注意してください。
FAQ
Q. なぜA=0のケースは必要ないのですか?
A. 判定(分岐)網羅は複合判定の真偽を両方出すことが目的であり、本問題ではA=1の組合せだけで両判定の真偽を確保できるため、A=0を含める必要はありません(条件網羅を要求されていれば別ですが)。
A. 判定(分岐)網羅は複合判定の真偽を両方出すことが目的であり、本問題ではA=1の組合せだけで両判定の真偽を確保できるため、A=0を含める必要はありません(条件網羅を要求されていれば別ですが)。
Q. 第2判定でC=1を得るにはどういう場合か?
A. 初期で に設定され、D1がYesのときにA×C→Cが実行されるため、その結果は になる。従ってD2が真になるには(D1 Yesの場合) を満たす必要があります。D1 Noの場合は となるためD2は偽になります。
A. 初期で に設定され、D1がYesのときにA×C→Cが実行されるため、その結果は になる。従ってD2が真になるには(D1 Yesの場合) を満たす必要があります。D1 Noの場合は となるためD2は偽になります。
関連キーワード: 構造的テスト、分岐網羅、条件網羅、判定網羅、MC/DC

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

