令和4年度 秋期 応用情報技術者試験 午前 問48

流れ図で示したモジュールを表の二つのテストケースを用いてテストしたとき,テストカバレージ指標である C0C_0(命令網羅)と C1C_1(分岐網羅)とによる網羅率の適切な組みはどれか。ここで,変数 V ~ 変数 Z の値は,途中の命令で変更されない。

流れ図と変数ごとのテストケースの値の表
図の説明テキスト

流れ図(左)と、変数ごとのテストケースの値を示す表(右上)を一つの図にまとめたもの。

【流れ図】

  • [開始] -> [V = 0 ?]
  • [V = 0 ?]
    • Yes -> [命令1] -> [(W = 0) and (X = 0) ?]
    • No -> [(W = 0) and (X = 0) ?]
  • [(W = 0) and (X = 0) ?]
    • Yes -> [命令2] -> [(Y = 0) and (Z = 0) ?]
    • No -> [(W ≠ 0) and (X ≠ 0) ?]
  • [(W ≠ 0) and (X ≠ 0) ?]
    • Yes -> [命令3] -> [(Y = 0) and (Z = 0) ?]
    • No -> [(Y = 0) and (Z = 0) ?]
  • [(Y = 0) and (Z = 0) ?]
    • Yes -> [命令4] -> [終了]
    • No -> [(Y ≠ 0) and (Z ≠ 0) ?]
  • [(Y ≠ 0) and (Z ≠ 0) ?]
    • Yes -> [命令5] -> [終了]
    • No -> [終了]

【表: 変数ごとのテストケースの値】

変数 テストケース1 テストケース2
V 0 1
W 0 1
X 0 1
Y 0 1
Z 0 1
解答・解説

正解: イ. C0C_0による網羅率: 100%,C1C_1による網羅率: 80%

テストカバレージとは

テストカバレージ指標における C0C_0(命令網羅)は、プログラム中のすべての命令が少なくとも1回実行された割合を示します。一方、C1C_1(分岐網羅)は、すべての条件判定における真(Yes)と偽(No)の全ルートが少なくとも1回実行された割合を示します。

正解の根拠

表に示された2つのテストケースにおける実行経路を確認し、それぞれの網羅率を計算します。

1. テストケース1の実行経路
変数 (V, W, X, Y, Z) = (0, 0, 0, 0, 0) のとき、以下の順に実行されます。

  • [V = 0 ?] :真(Yes)となり、命令1を実行
  • [(W = 0) and (X = 0) ?] :真(Yes)となり、命令2を実行
  • [(Y = 0) and (Z = 0) ?] :真(Yes)となり、命令4を実行
  • 終了

2. テストケース2の実行経路
変数 (V, W, X, Y, Z) = (1, 1, 1, 1, 1) のとき、以下の順に実行されます。

  • [V = 0 ?] :偽(No)
  • [(W = 0) and (X = 0) ?] :偽(No)
  • [(W ≠ 0) and (X ≠ 0) ?] :真(Yes)となり、命令3を実行
  • [(Y = 0) and (Z = 0) ?] :偽(No)
  • [(Y ≠ 0) and (Z ≠ 0) ?] :真(Yes)となり、命令5を実行
  • 終了

3. C0C_0(命令網羅)の計算
流れ図には、命令1〜命令5の計5つの命令が存在します。
テストケース1で命令1、命令2、命令4が実行され、テストケース2で命令3、命令5が実行されました。5つの命令すべてが実行されたため、C0C_0の網羅率は以下のようになります。

5÷5=100%5 \div 5 = 100\%

4. C1C_1(分岐網羅)の計算
流れ図には5か所の条件判定があり、それぞれにYesとNoの分岐があるため、分岐の総数は 5×2=105 \times 2 = 10 か所です。
テストケース1と2で実行された分岐は以下の通りです。

  • [V = 0 ?] :Yes(ケース1)、No(ケース2)
  • [(W = 0) and (X = 0) ?] :Yes(ケース1)、No(ケース2)
  • [(W ≠ 0) and (X ≠ 0) ?] :Yes(ケース2) ※Noは未実行
  • [(Y = 0) and (Z = 0) ?] :Yes(ケース1)、No(ケース2)
  • [(Y ≠ 0) and (Z ≠ 0) ?] :Yes(ケース2) ※Noは未実行

10か所のうち8か所の分岐が実行されたため、C1C_1の網羅率は以下のようになります。

8÷10=80%8 \div 10 = 80\%

以上より、C0C_0による網羅率が100%、C1C_1による網羅率が80%となるため、正解はイです。

各選択肢の解説

  • ア: C1C_1による網羅率は80%であるため、誤りです。

  • イ: 正解です。

  • ウ: C0C_0による網羅率は100%、C1C_1による網羅率は80%であるため、誤りです。

  • エ: C0C_0による網羅率は100%であるため、誤りです。

Spineチーム