この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

テストカバレッジ(網羅基準)の包含関係に関する問題です。命令網羅(C0)は「すべての命令を少なくとも1回実行する」基準、判定条件網羅(分岐網羅、C1)は「すべての判定条件について真と偽の両方の分岐を少なくとも1回実行する」基準です。判定条件網羅を満足するテストケースは、すべての分岐の真側・偽側の両方を通るため、プログラム中のすべての命令も必然的に実行されます(単一の入り口をもつプログラムであれば、どの命令もいずれかの分岐経路上にあるからです)。したがって「判定条件網羅を満足するならば、命令網羅も満足する」が成り立ち、イが正解です。逆は成り立ちません。例えば if 文の偽側に実行すべき命令が何もない場合、真側だけを通せば全命令を実行できてしまい、命令網羅は満たしても判定条件網羅(偽側も通す)は満たさないテストケースが作れます。網羅基準は C0(命令)⊂ C1(分岐)⊂ C2(条件組合せ)という強さの階層で整理し、「強い基準を満たせば弱い基準も自動的に満たす」と覚えるのが定石です。

なぜ他の選択肢は違うのか

選択肢 ア
判定条件網羅を満足するテストは、すべての判定の真側・偽側の両方の経路を実行します。単一の入り口をもつプログラムでは、すべての命令はいずれかの経路上に存在するため、全分岐を通れば全命令も必ず実行されます。したがって「判定条件網羅を満足しても命令網羅を満足しない場合がある」という記述は、網羅基準の包含関係(強い基準は弱い基準を含む)に反しており誤りです。
選択肢 ウ
命令網羅を満足しないということは、一度も実行されていない命令が存在するということです。その未実行の命令に到達する経路(いずれかの分岐の片側)も通っていないことになるため、すべての分岐の両側を通すという判定条件網羅も満たせるはずがありません。これは正解イの対偶に当たる関係であり、「満足する場合がある」という記述は論理的に成り立ちません。
選択肢 エ
命令網羅を満足しても、判定条件網羅を満足するとは限りません。例えば if 文の偽側(else なし)に命令が存在しない場合、真側だけを通るテストケースで全命令は実行できますが、偽側の分岐は一度も通っていないため判定条件網羅は未達成です。弱い基準(命令網羅)の達成から強い基準(判定条件網羅)の達成は導けない、という方向性の誤りです。

解くときのポイント

網羅基準は「命令網羅(C0)⊂ 判定条件網羅(C1)」の包含関係で覚える。強い基準を満たせば弱い基準は自動的に満たす(逆は不成立)。else 側に命令がない if 文を反例としてイメージすると確実。