Skip to content

問題12

コード複雑度評価システムは、2つの整数を入力として受け取ります。

  • CC:サイクロマティック複雑度(Cyclomatic Complexity)
  • VAR:コード内の変数の数

システムは以下のモデルに基づいてコードが複雑かどうかを判定します。

IF (CC ≥ 10) AND (VAR ≥ 8) THEN RETURN "the code is complex"

この2つの境界(CC = 10 と VAR = 8)の交差によって定義されるドメインは、整数座標(CC, VAR)の2次元空間上の点の集合です。

ドメインテストを用いてこのドメインの実装の正確性を検証します。

簡略化ドメインカバレッジ(Simplified Domain Coverage) を適用した場合、このドメインの正確性を検証できるテスト点の集合はどれか?

  • a) (12, 7), (12, 8), (9, 10), (10, 10)
  • b) (6, 5), (10, 8), (13, 10)
  • c) (11, 8), (11, 9), (9, 11), (10, 11)
  • d) (10, 10), (12, 8), (15, 11)

ドメインは CC ≥ 10 かつ VAR ≥ 8 を満たす領域です。

VAR
10 | ████████████
9 | ████████████
8 | ████████████ ← 境界:VAR = 8
7 | ・ ・ ・ ・ ・ ・
6 | ・ ・ ・ ・ ・ ・
+--+--+--+--+--+--+--→ CC
7 8 9 10 11 12
境界:CC = 10

ドメインの境界は2本です。

  • 境界1:CC = 10(CC ≥ 10 の左端)
  • 境界2:VAR = 8(VAR ≥ 8 の下端)

簡略化ドメインカバレッジとは

Section titled “簡略化ドメインカバレッジとは”

簡略化ドメインカバレッジでは、各境界に対して以下の2種類のテスト点を配置します。

点の種類位置目的
ON点境界上(ドメイン内の端)境界条件が正しく含まれているかを確認
OFF点境界のすぐ外側(ドメイン外)境界条件が正しく除外されているかを確認

2本の境界それぞれに ON点と OFF点が必要なため、最低でも4点が必要です。

境界点の種類条件
CC = 10ON点CC = 10, VAR ≥ 8(10, 10)
CC = 10OFF点CC = 9, VAR ≥ 8(9, 10)
VAR = 8ON点CC ≥ 10, VAR = 8(12, 8)
VAR = 8OFF点CC ≥ 10, VAR = 7(12, 7)

a) (12, 7), (12, 8), (9, 10), (10, 10) ✓

Section titled “a) (12, 7), (12, 8), (9, 10), (10, 10) ✓”
テスト点CCVARドメイン内外役割
(12, 7)12 ≥ 10 ✓7 < 8 ✗ドメイン外VAR = 8 境界の OFF点
(12, 8)12 ≥ 10 ✓8 ≥ 8 ✓ドメイン内VAR = 8 境界の ON点
(9, 10)9 < 10 ✗10 ≥ 8 ✓ドメイン外CC = 10 境界の OFF点
(10, 10)10 ≥ 10 ✓10 ≥ 8 ✓ドメイン内CC = 10 境界の ON点

2本の境界それぞれに ON点と OFF点が揃っています。✓ 正しい

テスト点CCVARドメイン内外役割
(6, 5)6 < 10 ✗5 < 8 ✗ドメイン外両境界から遠く、境界テストにならない
(10, 8)10 ≥ 10 ✓8 ≥ 8 ✓ドメイン内コーナー点(両境界の交点)のみ
(13, 10)13 ≥ 10 ✓10 ≥ 8 ✓ドメイン内ドメイン内部の点

CC 境界の OFF点、VAR 境界の OFF点がいずれも存在しません。✗ 不適切

c) (11, 8), (11, 9), (9, 11), (10, 11) ✗

Section titled “c) (11, 8), (11, 9), (9, 11), (10, 11) ✗”
テスト点CCVARドメイン内外役割
(11, 8)11 ≥ 10 ✓8 ≥ 8 ✓ドメイン内VAR = 8 境界の ON点
(11, 9)11 ≥ 10 ✓9 > 8 ✓ドメイン内ドメイン内部の点(VAR境界から離れている)
(9, 11)9 < 10 ✗11 ≥ 8 ✓ドメイン外CC = 10 境界の OFF点
(10, 11)10 ≥ 10 ✓11 ≥ 8 ✓ドメイン内CC = 10 境界の ON点

VAR = 8 境界の OFF点(例:CC ≥ 10 かつ VAR = 7 となる点)が存在しません。✗ 不適切

テスト点CCVARドメイン内外役割
(10, 10)10 ≥ 10 ✓10 ≥ 8 ✓ドメイン内CC = 10 境界の ON点
(12, 8)12 ≥ 10 ✓8 ≥ 8 ✓ドメイン内VAR = 8 境界の ON点
(15, 11)15 ≥ 10 ✓11 ≥ 8 ✓ドメイン内ドメイン内部の点

CC = 10 境界と VAR = 8 境界の OFF点がどちらも存在しません。✗ 不適切


a) (12, 7), (12, 8), (9, 10), (10, 10)

境界ON点OFF点
CC = 10(10, 10)(9, 10)
VAR = 8(12, 8)(12, 7)

OFF点は「境界のすぐ外側」に配置します。整数座標の場合、境界値から1だけ外側の値を使います。

  • CC = 10 の境界 → OFF点は CC = 9(10 - 1)
  • VAR = 8 の境界 → OFF点は VAR = 7(8 - 1)

OFF点を配置する際、他の条件は境界内の値を使うことで、確認したい境界だけを外側にします。例えば CC 境界の OFF点 (9, 10) では、VAR = 10 ≥ 8 としてVARの条件は満たしたまま、CCだけ境界外にしています。

簡略化ドメインカバレッジで必要な点数

Section titled “簡略化ドメインカバレッジで必要な点数”

境界の数を n とすると、各境界に ON点1つ・OFF点1つが必要なため、最低 2n 点が必要です。この問題では境界が2本なので最低 4点必要です。

  • 選択肢 b)、d) は3点のみ → 境界ごとの ON/OFF を網羅できない
  • 選択肢 c) は4点あるが VAR境界の OFF点が欠如している

OFF点は「ドメイン外に出たとたんに結果が変わる」ことを確認するためのテスト点です。OFF点でシステムが誤って "the code is complex" を返した場合、境界条件の実装に誤り(> の混同など)があることを検出できます。