CTS-KB

限界値分析

げんかいちぶんせき

Boundary Value Analysis 境界値分析 限界値テスト BVA
#テスト #テスト技法 #ブラックボックステスト

同値クラスの境界(最小値・最大値・その手前と直後)を集中的にテストする技法。バグの大半は境界に集まる という経験則に基づく。

概要

ソフトウェアのバグは off-by-one エラー>>= の取り違え、ループの 1 回多い・少ないなど)が圧倒的に多い。これらは 境界値だけが問題 で、クラス内の他の値は正しく動く。

境界をテストすれば、バグの 80% が捕まる。

境界値テストの基本パターン

「年齢が 18 以上 65 以下なら有効」という仕様の場合:

有効範囲: 18 〜 65

テストすべき境界値:
  17  ← 下限の手前(無効)
  18  ← 下限ちょうど(有効)
  19  ← 下限の直後(有効)

  64  ← 上限の手前(有効)
  65  ← 上限ちょうど(有効)
  66  ← 上限の直後(無効)

各境界 ±1 を必ずテスト すれば、>>=<<= の取り違えを確実に検出できる。

よくある境界値

値の種類必ずテストする境界値
数値(範囲あり)min - 1, min, min + 1, max - 1, max, max + 1
数値(自然数)0, 1(0 は無効、1 は有効など)
文字列長0, 1, max, max + 1
配列空配列, 1 件, 規定上限
日付月末(28/29/30/31), 年末(12/31→1/1), うるう年(2/29)
時刻23:59:59, 00:00:00, タイムゾーン境界

同値分割との関係

同値分割 で入力空間をクラスに分け、 そのクラスの境界を限界値分析でテストする という関係。両者は必ずペアで使う。

同値分割:    入力空間 → クラスに分ける(マクロ視点)
限界値分析:  各クラスの境界を集中的にテスト(ミクロ視点)

AI 駆動開発との関係

AI が生成するテストは ハッピーパス中心 で境界値を忘れがち。明示的に指示することで網羅性が劇的に上がる。

AI への指示テンプレート:
  対象:     PriceCalculator.applyDiscount(amount)
  仕様:     1 円以上 1,000,000 円以下が有効
  技法:     限界値分析
  境界値:   0, 1, 2, 999999, 1000000, 1000001 を必ずテスト
  追加:     負数 / 小数 / null / NaN / Infinity

人間が 境界値リストを事前に渡す ことで、AI が境界バグを見逃さなくなる。AI 駆動開発で「動いたのに本番で落ちた」を防ぐ最重要技法。

関連記事

関連用語