【ソフトウェアテスト】条件分岐やループの判定ミスを狙い撃ち!「境界値テスト(限界値分析)」|情報処理問題1000本ノック
基本情報技術者試験、応用情報技術者試験、ITストラテジスト試験などの「ソフトウェアテスト技法・品質管理」分野で超頻出の重要概念。「境界値テスト(限界値分析)」の定義と、併せて押さえるべき「同値分割法」との組み合わせ方を整理して攻略しましょう。
1. 【 問題 】:テクノロジ系(ソフトウェアテスト・品質管理)
【 問題 】 ソフトウェアのブラックボックステストにおいて、条件分岐や繰り返し(ループ)の終了判定の誤りを効率よく発見するために、データの範囲(同値クラス)の境界となる値およびその直前・直後の値をテストデータとして選定するテスト技法はどれか。
(ア)同値分割法(Equivalence Partitioning)
(イ)境界値テスト(限界値分析 / Boundary Value Analysis)
(ウ)原因結果グラフ(Cause-Effect Graphing)
(エ)ペア構成テスト(All-Pairs Testing)
2. 正解:
正解:(イ)境界値テスト(限界値分析 / Boundary Value Analysis)
3. 解説:「『境界線の直前・直後』にバグは潜む!」
境界値テスト(限界値分析)は、同値クラス(同じ処理が行われるデータのグループ)の境目(境界線)に特化してテストを実施する手法です。
プログラミングにおいて、不等号の誤り(`<` と `≦` の勘違い)やループのカウントミス(1つズレるOff-by-oneエラー)は境目で発生しやすいため、「境界値」とその「直前・直後の値」を検証することで高い欠陥検出率を実現します。
| 境界(境目) | テスト値(直前・直後) | 判定結果(期待値) | テストの狙い |
|---|---|---|---|
| 下限の境界 (20歳) |
19歳(直前) | 無効(エラー) | `20 <=` であるべきが `19 <=` になっていないか |
| 20歳(境界値) | 有効(正常) | `20 <=` であるべきが `20 <` になっていないか | |
| 上限の境界 (60歳) |
60歳(境界値) | 有効(正常) | `<= 60` であるべきが `< 60` になっていないか |
| 61歳(直後) | 無効(エラー) | `<= 60` であるべきが `<= 61` になっていないか |
1. 理解のコツ:
・まずグループ分け(同値分割)を行い、そのグループの「端っこ(ギリギリ合格する値)」と「その一歩外側(ギリギリ不合格になる値)」のペアをセットでテストするのが基本です。
2. 試験対策の視点:
・問題文に「条件判定の誤りを防ぐ」「ループの終了条件」「直前、直後の値でテスト」「限界値」と来たら、迷わず境界値テスト(限界値分析)を選択しましょう!
・同値クラスの代表値を1つ選ぶ「同値分割法」とセットで出題されることが多いため、両者の違い(代表値を選ぶか、端とその前後を選ぶか)を意識しておくことが大切です。
4. まとめ
同値クラスの境界線上にある値と、その直前・直後の値をテストデータとして抽出し、分岐・ループ等の判定ミスを防ぐ手法。これが境界値テスト(限界値分析)です。実装時の初歩的バグを最も効率よく検出できるテスト技法として必ず押さえておきましょう!