令和4年度 春期 午前Ⅰ 問題【共通】 問16

次の流れ図において,判定条件網羅(分岐網羅)を満たす最少のテストケースの組みはどれか。

流れ図
図の説明テキスト

フローチャート図。以下のノードと遷移で構成されている。

  • 「開始」端子から処理「1→C」へ遷移。
  • 処理「1→C」から判定「A>0 かつ B=0」へ遷移。
  • 判定「A>0 かつ B=0」が Yes の場合、処理「A×C→C」へ遷移。No の場合、処理「2→C」へ遷移。
  • 処理「A×C→C」および処理「2→C」の出力は合流し、判定「A>0 かつ C=1」へ遷移。
  • 判定「A>0 かつ C=1」が Yes の場合、下へ遷移して合流点へ。No の場合、処理「C²→C」へ遷移してから合流点へ。
  • 合流点から「終了」端子へ遷移。
解答・解説

正解: イ. (1) A=1, B=0 (2) A=1, B=1

判定条件網羅(分岐網羅)とは、プログラム中のすべての判定条件において、Yes(真)とNo(偽)の両方の分岐を少なくとも1回は実行するようにテストケースを設計する手法です。

本問題のフローチャートには、以下の2つの判定があります。

  • 判定1: A>0A > 0 かつ B=0B = 0
  • 判定2: A>0A > 0 かつ C=1C = 1

初期状態として、最初の処理で 1→C1 \rightarrow C(CC に 11 を代入)が実行されます。

正解である選択肢イのテストケースを順に確認します。

  1. テストケース (1) A=1,B=0A = 1, B = 0 の場合

    • 判定1: A>0A > 0 (1>01 > 0) かつ B=0B = 0 (0=00 = 0) を満たすため、Yes の分岐に進みます。
    • 処理 A×C→CA \times C \rightarrow C により、1×11 \times 1 が計算され、C=1C = 1 となります。
    • 判定2: A>0A > 0 (1>01 > 0) かつ C=1C = 1 (1=11 = 1) を満たすため、Yes の分岐に進みます。
    • これにより、判定1のYes、判定2のYesが網羅されます。
  2. テストケース (2) A=1,B=1A = 1, B = 1 の場合

    • 判定1: A>0A > 0 (1>01 > 0) は満たしますが、B=0B = 0 (1=01 = 0) を満たさないため、No の分岐に進みます。
    • 処理 2→C2 \rightarrow C により、C=2C = 2 となります。
    • 判定2: C=1C = 1 (2=12 = 1) を満たさないため、No の分岐に進みます。
    • これにより、判定1のNo、判定2のNoが網羅されます。

以上2つのテストケースによってすべての分岐(判定1のYes/No、判定2のYes/No)が実行されるため、判定条件網羅を満たします。2つのケースで全分岐を網羅しており、これが最少の組みです。

各選択肢の解説

  • ア: (1) A=0,B=0A = 0, B = 0 では判定1・判定2ともにNoに進みます。(2) A=1,B=1A = 1, B = 1 でも判定1・判定2ともにNoに進みます。Yesの分岐が一度も実行されないため、判定条件網羅を満たしません。
  • イ: 正解です。上記の通り、2つのテストケースですべての分岐を網羅しています。
  • ウ: (1)と(2)でNoの分岐を、(3) A=1,B=0A = 1, B = 0 でYesの分岐を実行するため、判定条件網羅を満たしますが、テストケースが3つあり「最少のテストケースの組み」ではありません。
  • エ: (1)と(2)でNoの分岐を、(3) A=1,B=0A = 1, B = 0 でYesの分岐を実行するため、判定条件網羅を満たしますが、こちらもテストケースが3つあるため最少の組みではありません。

Spineチーム