システムアーキテクト 2021年 午前2 問07
問題文
あるプログラムについて、流れ図で示される部分に関するテストケースを、判定条件網羅(分岐網羅)によって設定する。この場合のテストケースの組合せとして、適切なものはどれか。ここで、()で囲んだ部分は、一組みのテストケースを表すものとする

選択肢
ア:(A=1, B=1)、(A=7, B=1)(正解)
イ:(A=4, B=0)、(A=8, B=1)
ウ:(A=4, B=1)、(A=6, B=1)
エ:(A=7, B=1)、(A=1, B=0)
🔒 解説は解答すると表示されます
判定条件網羅【午前2解説】
正解の理由
判定(分岐)網羅は、各判定(決定)が少なくとも一度は真(True)および偽(False)になるようにテストケースを選ぶことを目的とします。設問の判定式は です。
選択肢の組合せのうち、1つの組で判定が真、もう1つの組で判定が偽となるのは ア の組合せのみです。具体的には
選択肢の組合せのうち、1つの組で判定が真、もう1つの組で判定が偽となるのは ア の組合せのみです。具体的には
- (A=1, B=1) は が偽、 も偽で判定全体が偽になる(ルートは「No」側)。
- (A=7, B=1) は が真で判定全体が真になる(ルートは「Yes」側)。
したがって、判定が真と偽の両方をカバーしており、判定(分岐)網羅を満たします。
解法ステップ
- 判定式を確認する: (論理和)。
- 各テストケースについて、左側の条件 および右側の条件 を評価する。
- その組合せで判定全体が真(少なくとも一方が真)か偽(両方偽)かを判定する。
- 2つのテストケースで「少なくとも一度は真、少なくとも一度は偽」になる組合せを選ぶ。
この手順で各選択肢を確認すれば正答が導けます。
選択肢別の誤答解説
-
ア: (A=1, B=1)、(A=7, B=1)
- (1,1): 偽、 偽 → 判定は偽
- (7,1): 真 → 判定は真
- よって真と偽を両方含み、判定(分岐)網羅を満たす(正解)。
-
イ: (A=4, B=0)、(A=8, B=1)
- (4,0): 真 → 判定は真
- (8,1): 真 → 判定は真
- 両方とも判定は真で、偽をカバーしていない(不正解)。
-
ウ: (A=4, B=1)、(A=6, B=1)
- (4,1): 偽、 偽 → 判定は偽
- (6,1):( は偽)、 偽 → 判定は偽
- 両方とも偽で、真をカバーしていない(不正解)。
-
エ: (A=7, B=1)、(A=1, B=0)
- (7,1):真、(1,0): 真 → いずれも真
- 偽を含まないため不正解。
よくある誤解
- 「判定網羅は各原子条件( や )それぞれを真偽で両方試せば良い」
- これは条件網羅(Condition Coverage)や複合条件網羅と混同した誤解です。判定(分岐)網羅は「判定式全体」が真と偽になることを要求します。原子条件ごとの真偽の両方を必須とするわけではありません。
- 「1つのテストで同時に真と偽にできることがある」
- 単一の実行で同一の判定が同時に真と偽になることは不可能です。したがって、判定網羅で判定の両方(真・偽)を得るには原則として少なくとも2件のテストケースが必要です。
- 「不等号の境界( と )を誤解する」
- と は異なる条件です。 を与えたときの評価が変わるため注意してください。
補足コラム
- 判定(分岐)網羅はテストの基本的かつ重要な基準で、制御フローの各分岐が両方向(実行と非実行)を経験することを確認します。
- 条件網羅(各原子条件が真・偽をそれぞれとる)や修正条件/判定網羅(MC/DC)のような厳密な基準は、より多くのテストケースを必要とします。例えば複合論理式では、原子条件すべての組合せを試すと組合せ数が指数的に増え、現実的には重点的に設計することが一般的です。
- ループや状態変化が絡む場合は、単純に判定の真偽を満たすだけでなく、実行経路(パス)や前後の状態遷移も考慮する必要があります(パス網羅は通常コストが高い)。
FAQ
Q: 判定網羅と条件網羅、どちらを優先すべきですか?
A: 優先度はテスト目的によります。まずは判定(分岐)網羅で基本的な分岐の確認を行い、セーフティクリティカルや高リスク箇所では条件網羅やMC/DCを追加します。
A: 優先度はテスト目的によります。まずは判定(分岐)網羅で基本的な分岐の確認を行い、セーフティクリティカルや高リスク箇所では条件網羅やMC/DCを追加します。
Q: ループがあるとき、ループを何回まで実行すべきですか?
A: 一般には 0回(未実行)、1回、複数回(境界:最小反復、最大反復や上限)を含めることが多いです。判定網羅の観点では、分岐結果(ループ継続/脱出)が真偽両方になるようにテストします。
A: 一般には 0回(未実行)、1回、複数回(境界:最小反復、最大反復や上限)を含めることが多いです。判定網羅の観点では、分岐結果(ループ継続/脱出)が真偽両方になるようにテストします。
Q: 「1件で両方を満たせることが稀」という表現は許されますか?
A: いいえ。判定の評価は一回の実行で単一の真偽しか取り得ないため、「稀」や「可能性がある」といった表現は誤りです。原則として少なくとも2件のテストが必要です。
A: いいえ。判定の評価は一回の実行で単一の真偽しか取り得ないため、「稀」や「可能性がある」といった表現は誤りです。原則として少なくとも2件のテストが必要です。
関連キーワード: 判定網羅、分岐網羅、条件網羅、論理和、テストケース設計

\ せっかくなら /
システムアーキテクトを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

