ソフトウェア開発とプロジェクト管理
temp と err の値は互いに独立に決められるものとする。次の処理「if (temp > 80) { fan = HIGH; } else { fan = LOW; } if (err) { log(); }」で、命令網羅(すべての命令を少なくとも1回実行する)を満たすのに必要な最小のテストケースの数はどれか。
- A2
- B3
- C4
答えと解説を見る
正解:A. 2
命令は fan = HIGH、fan = LOW、log() の3つです。fan = HIGH と fan = LOW は1回の実行では片方しか通らないので少なくとも2回が必要で、例えば(temp > 80、err が真)と(temp ≤ 80、err が偽)の2つのテストケースで、3つの命令をすべて実行できます。3は命令の数と同じだけテストケースを作った場合、4は2つの条件の真偽の組合せ(経路)をすべて試す場合の数です。命令網羅は最も弱い網羅の基準で、例えば2つ目の if の偽の側(何もしない経路)を通らなくても満たせます。
- A. 正しい。if と else の両方を通すのに2回必要で、log() はそのどちらかで一緒に実行できます。
- B. 命令の数だけテストケースを作った場合です。1つのテストケースで複数の命令を実行できるので、もっと少なくできます。
- C. 条件の真偽の組合せ(経路)をすべて試す場合の数で、命令網羅にはそこまで必要ありません。