正答2
解説
正解は2です。
命令網羅(ステートメントカバレッジ)は、全ての命令を少なくとも1回実行するテストです。
判定条件網羅(デシジョンカバレッジ、分岐網羅)は、全ての判定で真と偽の両方の分岐を少なくとも1回通るテストです。
単一の入り口を持つプログラムでは、全ての分岐を通れば全ての命令も実行されることになります。
【選択肢別解説】
1:× 判定条件網羅を満たせば全ての分岐を通るので、どの命令も必ず実行されます。
命令網羅を満たさない場合はありません。
2:○ 全ての分岐を通るテストは、分岐の先にある全ての命令も実行します。
判定条件網羅は命令網羅を包含します。
3:× 命令網羅を満たさないということは、実行されない命令があるということです。
その命令に至る分岐も通っていないので、判定条件網羅は満たしません。
4:× 命令網羅を満たしても判定条件網羅を満たすとは限りません。
例えばelseのないif文では、条件が真の場合だけで全命令を実行できますが、偽の分岐を通っていません。
【ポイント】
網羅の強さは、命令網羅より判定条件網羅、さらに条件の組合せを全て試す複数条件網羅の方が強くなります。
「else節のないif文」は、命令網羅と判定条件網羅の違いを説明する典型例です。