用語集 · テスト設計
境界値分析
英語: Boundary value analysis
別名: 境界値テスト, 境界値, BVA, boundary value testing
定義
有効範囲の端とそのすぐ前後の値をテスト入力に選ぶブラックボックスのテスト設計技法で、off-by-one の欠陥が集中する箇所を狙います。
境界値分析(BVA)は、各入力範囲の端にある値をテストする技法です。開発者が間違えやすいのはまさにそこだからです。>= のつもりで > と書いた、<= 60 のつもりで < 60 と書いた、ループが 1 回多く回る、といった誤りです。通常は同値分割で範囲を特定した後に適用し、BVA で各境界上とその前後の正確な値を選びます。
具体例:18 歳から 60 歳まで受け付ける
会員登録フォームが 18 歳以上 60 歳以下の年齢を受け付けるとします。
2 値の境界値分析(境界値と、範囲外で最も近い値):
| 入力 | 期待結果 |
|---|---|
| 17 | 拒否 |
| 18 | 受け付け |
| 60 | 受け付け |
| 61 | 拒否 |
3 値の境界値分析では、各境界の内側の隣接値も加えます。
| 入力 | 期待結果 |
|---|---|
| 17、18、19 | 拒否、受け付け、受け付け |
| 59、60、61 | 受け付け、受け付け、拒否 |
有効な年齢は 43 通りありますが、テストは 6 件で済み、この 6 件でよくある比較の誤りを捉えられます。コードが age > 18 なら 18 のテストが失敗し、age < 60 なら 60 のテストが失敗します。
数値の範囲以外にも
上限や下限がある場所には必ず境界があります。
- 長さ: ユーザー名が 3〜20 文字なら、2、3、20、21 文字をテストします。
- 日付と時刻: 30 分間有効なリンクなら、29:59、30:00、30:01 でテストします。関係する場合は深夜 0 時、月末、うるう日も確認します。
- コレクション: 空のカート、1 商品、許容される最大商品数に 1 を足した数。
- 金額: 「100 ドル以上で送料無料」というルールなら 99.99 ドル、100.00 ドル、100.01 ドル。
- 技術的な上限: 最大ファイルサイズ、整数オーバーフロー、ページング API のページサイズ。
よくある間違い
- 有効な側だけをテストする。 17 と 61 は 18 と 60 と同じくらい重要です。
- 境界を思い込みで決める。 「60 まで」が 60 を含むのかどうかは分かりません。確認し、その答えを受け入れ基準に記録します。
- 型と精度を無視する。 小数を受け付けるフィールドなら、18 のすぐ下の値は 17 ではなく 17.99 かもしれません。
- 隠れた境界を忘れる。 データベースのカラムや API が UI とは異なる上限を課していることがあります。各レイヤーの上限をテストします。