2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[超初心者向け]境界値分析をいちばんカンタン理解してする3ステップと便利チェックリスト

Posted at
  • 対象: 初学者
  • TL;DR: 境界(端)にバグは集まる。min-1, min, min+1, max-1, max, max+1 をまず押さえよう。列挙型は同値分割でOK。

境界値分析とは?

入力の有効範囲無効範囲の“境目”に焦点を当て、境目付近だけを少ないケースで効率よくテストする手法です。通常は同値分割とセットで使います。


基本の3ステップ

  1. 入力条件と範囲を明文化
    例: 年齢は 18〜65(両端含む)、パスワード長は 8〜20(両端含む)
  2. 境目を特定(含む/含まないを必ず確認)
    連続範囲なら以下の6点を優先:
    min-1, min, min+1, max-1, max, max+1
  3. 最小ケースで回す → 必要に応じて組み合わせ
    まずは各入力を単独で境界テスト。複数入力は後でペアワイズ等を追加。

最小セット例(連続範囲)

仕様 範囲の意味 テスト値セット
年齢 18〜65(含む) 18 ≤ age ≤ 65 17, 18, 19, 64, 65, 66
PW長 8〜20(含む) 8 ≤ len ≤ 20 7, 8, 9, 19, 20, 21
予約日 今日+1〜+30(含む) +1 ≤ d ≤ +30 今日, +1, +2, +29, +30, +31

列挙型(例: 色 = 赤/青/緑)には“連続した境界”がないため、同値分割で各グループ代表値を1つずつ選べば十分。


よくある落とし穴

  • < の取り違え(両端を「含む/含まない」を仕様で明記)
  • 空/Null、空白、極端値0, 最大桁, 文字数0 など)を見落とす
  • 数値型/丸め/オーバーフロー(int/float、桁あふれ、指数表記)
  • 日付・時刻の境界(日付変更、月末、うるう年、タイムゾーン)
  • UIは通ってもAPI/DB層で弾かれる/通ってしまう不整合

チェックリスト(コピペ運用推奨)

  • 入力の範囲と含む/含まないを明文化した
  • min-1, min, min+1, max-1, max, max+1 をすべて選んだ
  • 空/Null/空白/極端値(0、最大桁、最長長さ 等)を含めた
  • 型/丸め/オーバーフローの観点を含めた
  • 日付・時刻/タイムゾーンの切り替わりを含めた
  • 複数入力はまず単独 → 必要なら組み合わせ(ペアワイズ等)

テストケース表テンプレ(Markdown)

### 仕様:年齢は18〜65(両端含む)

| No | 入力(age) | 期待結果 | 根拠/備考 |
|---:|---:|---|---|
| 1 | 17 | エラー | min-1 |
| 2 | 18 | 成功 | min |
| 3 | 19 | 成功 | min+1 |
| 4 | 64 | 成功 | max-1 |
| 5 | 65 | 成功 | max |
| 6 | 66 | エラー | max+1 |

日付・時刻の“典型境界”スニペット

  • 日付: 前日23:59:59、当日00:00:00、月末/翌月初、うるう日(2/29)
  • 時刻: 59→00の繰り上がり、夏時間/冬時間開始・終了点
  • 期間: 開始=終了(ゼロ長)、開始>終了(異常)、上限ちょうど、上限+1日

まとめ

  • 境界にバグは集まる。まずは 6点セットmin±1, max±1 含む)で最小コスト最大効果
  • 列挙型は同値分割、連続範囲は境界値分析。役割を混ぜないのがコツ。
  • チェックリストを使って漏れを定常的に防止しましょう。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?