令和3年度 春期 システムアーキテクト試験 午前Ⅱ 問7

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

フローチャート
図の説明テキスト

プログラムの流れ図(フローチャート)。
上から下へ向かって以下の手順で処理が進む。

  1. 「処理1」の長方形ノード。
  2. ひし形の条件判定ノード「A > 6 or B = 0」。
  3. 条件判定が「Yes」の場合は下の「処理2」の長方形ノードに進み、その後合流点へ向かう。
  4. 条件判定が「No」の場合は右側に分岐し、「処理2」をバイパスして下の合流点へ向かう。
解答・解説

正解: ア. (A=1,B=1),(A=7,B=1)

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

問題の図表のフローチャートにある判定条件は「A>6 or B=0A > 6 \text{ or } B = 0」です。
したがって、判定条件網羅を満たすためには、この条件全体が真(Yes)となるテストケースと、偽(No)となるテストケースの組み合わせを選択する必要があります。

「or(論理和)」の条件であるため、条件全体の真偽は以下のようになります。

  • 真(Yes)になる場合: A>6A > 6 または B=0B = 0 の少なくとも一方が成り立つ。
  • 偽(No)になる場合: A>6A > 6 と B=0B = 0 の両方が成り立たない(すなわち、A≦6A \leqq 6 かつ B≠0B \neq 0)。

正解である選択肢アの組み合わせを確認します。

  • (A=1A=1,B=1B=1) の場合: A>6A > 6 は偽、B=0B = 0 も偽のため、条件全体は偽(No)となります。
  • (A=7A=7,B=1B=1) の場合: A>6A > 6 が真となるため、条件全体は真(Yes)となります。
    このように、真(Yes)と偽(No)の両方のルートを網羅しているため、適切です。

各選択肢の解説

  • イ

    • (A=4A=4,B=0B=0): B=0B = 0 が真となるため、条件全体は真(Yes)となります。
    • (A=8A=8,B=1B=1): A>6A > 6 が真となるため、条件全体は真(Yes)となります。
    • 両方とも真(Yes)のルートを通るため、判定条件網羅を満たしません。
  • ウ

    • (A=4A=4,B=1B=1): 両方の条件を満たさないため、条件全体は偽(No)となります。
    • (A=6A=6,B=1B=1): A=6A = 6 は A>6A > 6 を満たさず、両方の条件を満たさないため、条件全体は偽(No)となります。
    • 両方とも偽(No)のルートを通るため、判定条件網羅を満たしません。
  • エ

    • (A=7A=7,B=1B=1): A>6A > 6 が真となるため、条件全体は真(Yes)となります。
    • (A=1A=1,B=0B=0): B=0B = 0 が真となるため、条件全体は真(Yes)となります。
    • 両方とも真(Yes)のルートを通るため、判定条件網羅を満たしません。

Spineチーム