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