応用情報技術者 2013年 秋期 午前2 問49
問題文
流れ図において、分岐網羅を満たし、かつ、条件網羅を満たすテストデータの組はどれか。


選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
分岐網羅と条件網羅【午前2解説】
正解の理由
選択肢の中で、分岐(各判断でのYes/No)と条件(複合条件を構成する各原子式)がそれぞれ両方の真偽値を含むようにテスト入力を揃えているのは エ の組です。具体的に、エ のテストデータ (1,2)、(0,1)、(0,2) を評価すると次のようになります。
-
1つ目の判断「x ≥ 1 or y = 1」
- (1,2):x ≥ 1 が真 → 判定は Yes
- (0,1):y = 1 が真 → 判定は Yes(y=1 が成立するためこの組は Yes になります)
- (0,2):両方偽 → 判定は No → Yes と No の両方がカバーされる(分岐網羅を満たす)
-
原子条件の真偽(条件網羅)
- x ≥ 1:真になる入力(1,2)/偽になる入力(0,1 または 0,2) → 両方出現
- y = 1:真になる入力(0,1)/偽になる入力(1,2 または 0,2) → 両方出現 → 各原子条件が真と偽の両方を持つ(条件網羅を満たす)
-
2つ目の判断「y > 1」
- (1,2),(0,2):Yes(y=2)をカバー、(0,1):No(y=1)をカバー → こちらも分岐網羅を満たす
以上により、分岐網羅と条件網羅の両方を満たすのは エ の組です。
解法ステップ
- 各テスト入力について、第一判断「x ≥ 1 or y = 1」と第二判断「y > 1」の結果(Yes/No)を求める。
- 分岐網羅の確認:各判断について、Yes と No の両方がテスト群で少なくとも一度出現するか確認する。
- 条件網羅の確認(複合条件の原子ごと):複合条件を構成する各原子式(ここでは x ≥ 1 と y = 1)について、真と偽の両方がテスト群に存在するか確認する。
- 1〜3 を満たす選択肢を正解とする。
(ポイント)複合条件の「条件網羅」は、すべての原子式が真・偽の両方を少なくとも1回取ればよく、すべての組合せを取る必要はない点を押さえる。
選択肢別の誤答解説
-
ア((2,2)、(1,2))
- 第一判断:両方とも x ≥ 1 が真 → 第一判断は常に Yes(No が未カバー)。分岐網羅を満たさない。
- 第二判断:両方 y=2 → 第二判断は常に Yes(No 未カバー)。
- よって不適。
-
イ((1,2)、(0,0))
- 分岐網羅は満たす((1,2):第一 Yes、(0,0):第一 No; 第二も Yes/No 両方あり)。
- しかし原子条件 y = 1 が真になる入力がない((1,2) は y=2、(0,0) は y=0)ため条件網羅を満たさない。
- よって不適。
-
ウ((1,2)、(1,1)、(0,1))
- 原子条件は両方とも真と偽が出現するため条件網羅は満たす。
- しかし第一判断は全て Yes((1,2): x≥1、(1,1): x≥1、(0,1): y=1)で No が未カバー → 分岐網羅を満たさない。
- よって不適。
-
エ((1,2)、(0,1)、(0,2))
- 上記「正解の理由」で示した通り、分岐網羅・条件網羅の両方を満たすため適切。
よくある誤解
- (0,1) を第一判断で「偽」と誤判定する
- 実際は y = 1 が成立するため複合条件 x ≥ 1 or y = 1 は真(Yes)になります。ここを見落として Yes/No のカバー状況を取り違える受験者が多いです。
- 条件網羅を「全組合せを網羅すること」と勘違いする
- 条件網羅は各原子条件が真・偽の両方を少なくとも一度取れば良い。全組合せが必要なのは全組合せ網羅(または他の強い基準)です。
- 分岐網羅と条件網羅を混同する
- 分岐網羅(判定網羅)は各判断の Yes/No をカバーすること。条件網羅は複合条件内の原子式単位で真偽をカバーすること。
補足コラム
- 最小テスト数について:本問題のフローでは、設問が要求する両方の網羅を満たす最小のテスト集合は必ずしも与えられた選択肢の中にあるとは限りません。例えば (1,1) と (0,2) の2ケースだけで、第一判断の Yes/No、各原子の真偽、第二判断の Yes/No をすべて満たせる場合があります((1,1):x≥1=True、y=1=True、y>1=False;(0,2):x≥1=False、y=1=False、y>1=True)。ただし設問は選択肢の中から該当する組を選ぶ問題ですから、候補の評価を確実に行ってください。
- より厳しい網羅基準としては、修飾条件網羅(MC/DC)などがあり、単に原子ごとの真偽をカバーするだけでなく、各原子が判定結果に影響を与えることを示す必要があります。
FAQ
Q. 条件網羅で「原子ごとに真と偽が出ればよい」とは具体的にどう確認する?
A. 複合条件を構成する個々の比較式(ここでは x ≥ 1、y = 1)について、テスト集合の中にそれぞれが true となる入力と false となる入力が少なくとも一つずつ含まれているかを確認します。
Q. 分岐網羅と判定網羅は同じですか?
A. はい。一般に「分岐網羅」「判定網羅」は同義で、各判断文について True/False(または Yes/No)の両方を少なくとも一度実行することを指します。
Q. (0,1) のようなケースは第一判断の右へ行くのか下へ行くのか見分けにくいときは?
A. 「x ≥ 1 or y = 1」は論理和なので、どちらかの原子式が真なら全体が真になります。y=1 が成立するなら第一判断は常に Yes と評価してください。
関連キーワード: 分岐網羅、条件網羅、真理値表、判定網羅、MC/DC、テストケース設計、ロジック評価

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

