【JSTQB試験対策】ブラックボックステスト技法② 『境界値分析』について、分かりやすく解説

境界値分析とは

JSTQB Foundation Level試験を目指して学習中の皆さん、こんにちは。前回は「同値分割法」について解説しましたが、今回はその同値分割法と密接な関係にある「境界値分析」について詳しく解説していきます。

境界値分析は、同値分割法と並んでブラックボックステストの中でも最も基本的かつ重要な技法です。「バグは境界に潜む」と言われるように、この技法をマスターすることで、効率的にバグを発見できるテストケースを設計できるようになります。

境界値分析の定義

境界値分析とは、同値パーティションの「境界」にある値に着目してテストケースを設計する技法です。境界値およびその近傍の値をテストすることで、境界付近で発生しやすい欠陥を効率的に検出することを目的とします。

例えば、年齢入力フィールドに1〜120の値を入力した場合は「有効」、それ以外の値を入力した場合は「エラー」となるシステムを考えてみましょう。同値分割法では有効パーティションから代表値(例:60)を選びますが、境界値分析では境界となる「1」と「120」、そしてその外側の「0」と「121」といった値をテストします。なぜなら、”以上”を”より大きい”と実装ミスしていたり、配列のインデックスがずれていたりといった欠陥は、まさにこの境界付近で発生しやすいからです。

境界値分析の基本概念

境界値とは

境界値とは、同値パーティションの端(エッジ)にある値のことです。ある同値パーティションの最小値・最大値、およびその隣接パーティションとの境目に位置する値を指します。

境界値分析では、以下の値をテスト対象として選びます。

  • 有効パーティションの最小値・最大値:有効範囲のちょうど端にある値
  • 無効パーティションの境界値:有効範囲のすぐ外側にある値

■重要なポイント
境界値分析は同値分割法を「補完する」技法です。同値分割法で分割したパーティションの中から、代表値ではなく”境界にある値”を意図的に選んでテストすることで、境界付近の欠陥を狙い撃ちで検出できます。


境界値分析の概念図

2値境界値分析と3値境界値分析

境界値分析には、大きく分けて「2値境界値分析」と「3値境界値分析」の2つのアプローチがあります。JSTQB試験でも両者の違いは頻出ポイントなので、しっかり押さえておきましょう。

2値境界値分析(2-value Boundary Value Analysis)

境界値と、その境界を挟んで反対側の隣接する値の2つをテストする方法です。
たとえば有効範囲が1〜120の場合、下限側は「0(無効)」と「1(有効)」、上限側は「120(有効)」と「121(無効)」をテストします。ISTQB/JSTQBの最新シラバスでは、この2値境界値分析が標準的なアプローチとして位置づけられています。

3値境界値分析(3-value Boundary Value Analysis)

境界値の「両隣」も含めた3つの値をテストする方法です。
たとえば有効範囲が1〜120の場合、下限側は「0・1・2」、上限側は「119・120・121」をテストします。より厳密に境界付近を検証したい場合に用いられ、安全性が求められるシステムなどで採用されます。

■どちらを使うべき?
基本的にはテスト工数と検出精度のバランスから2値境界値分析が広く使われます。ただし、金融系や医療系など高い信頼性が求められるシステムでは、3値境界値分析を採用することで、より堅牢なテストが実現できます。

境界値分析の実践手順

実際にテストケースを作成する際の手順を見ていきましょう。

ステップ1:仕様の確認と同値パーティションの識別

まず、同値分割法と同様に、テスト対象の仕様を確認し、入力値を有効・無効の同値パーティションに分割します。境界値分析は同値分割法とセットで使う技法だと覚えておきましょう。

ステップ2:境界値の特定

各同値パーティションの端にある値(最小値・最大値)を特定します。「以上・以下」「未満・より大きい」といった仕様上の表現を正確に読み取ることが重要です。

ステップ3:テスト値の選択(2値 or 3値)

採用するアプローチ(2値境界値分析 or 3値境界値分析)を決定し、境界値およびその近傍の値を選択します。

ステップ4:テストケースの作成

選択した境界値を使ってテストケースを作成します。各テストケースには、入力値と期待される結果(有効か無効か)を明記します。

具体例で理解する境界値分析

例:年齢入力フィールドのテスト

前回の同値分割法と同じく、「年齢を入力してください(1〜120)」という入力フィールドをテストする場合を考えてみましょう。

仕様:

  • 有効な入力:1以上120以下の整数
  • 無効な入力:0以下、または121以上の値

この仕様に対して2値境界値分析を適用すると、テストすべき値は以下のようになります。


境界値分析の実践例

このように、下限境界(0・1)と上限境界(120・121)の4つの値をテストすることで、境界付近の欠陥を効率的に検出できます。同値分割法で選んだ代表値(60)と組み合わせれば、より網羅性の高いテストが実現できますね。

境界値分析のメリット

境界値分析を活用することで、以下のようなメリットが得られます。

1. 欠陥検出率の高さ

経験上、バグは境界付近に集中する傾向があります。「以上」を「より大きい」と実装してしまう off-by-one エラーや、配列のインデックスミスなど、境界値をテストすることでこれらの典型的な欠陥を高確率で検出できます。

2. 少ないテストケースで高い効果

境界値のみに絞ってテストするため、少ないテストケースで欠陥検出の効率を最大化できます。テスト工数を抑えつつ、品質担保に効果的です。

3. 同値分割法との相性が抜群

同値分割法で分割したパーティションの境界を狙うことで、両者の技法を組み合わせて相互補完的にテストを設計できます。JSTQBでも、この2つはセットで学ぶことが推奨されています。

4. 仕様の曖昧さを発見できる

境界値を明確化する過程で、「以上・以下」「未満・より大きい」といった仕様の曖昧な表現に気づきやすくなります。テスト設計を通じて、仕様書の品質も向上させられるという副次的な効果もあります。

境界値分析の注意点

境界値分析を適用する際は、以下の点に注意が必要です。

⚠️ 適用できるのは”順序付けが可能な値”のみ

境界値分析は、数値や日付など、値に順序関係がある入力に対してのみ適用可能です。列挙型(例:「赤・青・緑」)のように順序を持たない入力には適用できません。そのような場合は同値分割法やデシジョンテーブルを使いましょう。

⚠️ 仕様の正確な理解が必須

「以上」なのか「より大きい」なのか、「以下」なのか「未満」なのか。仕様書の表現を1文字でも読み違えると、境界値の設定を誤ってしまいます。曖昧な場合は必ず設計者や仕様担当者に確認しましょう。

⚠️ データ型を意識する

整数型と実数型では、境界値の考え方が異なります。例えば整数で「1以上」なら境界値は0と1ですが、実数で「1.0以上」なら「0.99…」のような値を検討する必要があります。また文字列長や日付なども、それぞれのデータ型に応じた境界値を考える必要があります。

JSTQB試験での出題ポイント

JSTQB Foundation Level試験では、境界値分析に関する問題が頻出します。以下のポイントを押さえておきましょう。

  • 📌 2値境界値分析と3値境界値分析の違い:それぞれのアプローチでテスト対象となる値を正しく識別できるか
  • 📌 境界値の正確な特定:仕様から「以上・以下・未満・より大きい」を読み取り、正しい境界値を導けるか
  • 📌 同値分割法との関係性:境界値分析は同値分割法を補完する技法であることを理解しているか
  • 📌 適用範囲:順序付け可能な入力にのみ適用できるという制約を理解しているか

まとめ

境界値分析は、同値分割法と並んでブラックボックステストの根幹をなす重要な技法です。以下のポイントを再確認しましょう。

  • 境界値分析は、同値パーティションの境界にある値に着目してテストする技法
  • 2値境界値分析と3値境界値分析の2つのアプローチがあり、JSTQB最新シラバスでは2値がベース
  • 「バグは境界に潜む」という経験則に基づく、非常に欠陥検出効率の高い技法
  • 同値分割法とセットで使うことで、網羅性の高いテスト設計が可能になる
  • 順序付け可能な値にのみ適用でき、仕様の正確な読み取りが不可欠

「バグは境界に潜む」という言葉のとおり、境界値分析はソフトウェアテストの現場で最も費用対効果の高い技法の一つです。同値分割法と組み合わせることで、少ないテストケースで大きな品質担保効果を得ることができます。実務でもJSTQB試験でも、この2つの技法をしっかりと理解し、使いこなせるようにしておきましょう。

次回は、複数の入力条件の組み合わせを効率的にテストできる「デシジョンテーブルテスト」について詳しく解説していきます。


JSTQB(日本ソフトウェアテスト技術者資格)は、ソフトウェアテストの専門的な知識と技術を認定するための資格です。この資格は、ソフトウェアテストのプロフェッショナルとして必要なスキルを証明するものとして、業界で広く認知されています。
JSTQBは、国際的な基準であるISTQB(International Software Testing Qualifications Board)に基づいており、日本国内のソフトウェアテスト分野における実務能力を向上させるための指針となっています。
株式会社NSITでは、ソフトウェアテストに従事するエンジニアの約9割が、JSTQBの資格を取得しております。