対象試験と出題頻度

限界値分析(境界値分析)は、基本情報技術者・応用情報技術者の午前問題で繰り返し出題されるテーマです。

ブラックボックステストの代表的な技法として、同値分割との違いや「テストケースの個数を答える計算問題」が定番化しています。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)必ず覚えておくべき

用語の定義

情報処理試験を勉強していると、「限界値分析って同値分割と何が違うの?」と混乱しがちです。

限界値分析(Boundary Value Analysis)とは、一言で言うと

 「入力値の有効範囲と無効範囲の『境目』に着目して、その前後をピンポイントでテストする技法

のことです。

イメージとしては、遊園地の身長制限の看板です。

「身長120cm以上のお客様のみ乗車可」という看板があるとき、トラブルが起きやすいのは身長180cmの大人ではなく、ちょうど120cmギリギリの子どもです。

119cmなのか120cmなのかで判定が変わるからです。

限界値分析も同じ発想で、「ギリギリの値」だけを集中的にテストして、判定処理のミスを効率よく見つけ出します。

📊 限界値分析の基本情報

項目 内容
英語名 Boundary Value Analysis(BVA)
分類 ブラックボックステストの技法
狙う対象 入力範囲の境界(最小値・最大値)の前後
併用技法 同値分割(Equivalence Partitioning)

解説

ソフトウェアのバグは、入力値全体に均等に潜んでいるわけではありません。経験則として、不等号の向きを間違えたり「以上」と「より大きい」を取り違えたりするミス、つまり境目の判定処理にバグが集中することが知られています。

そこで、限られたテスト工数の中で効率よくバグを発見するために、わざと境目の値を狙い撃ちするのが限界値分析の狙いです。

同値分割との関係

限界値分析は、同値分割とセットで使われます。手順は次の通りです。

まず同値分割で入力値を「同じ動作をするグループ(同値クラス)」に分け、有効同値クラスと無効同値クラスを切り出します。

次に、そのクラスの境目にある値(最小値・最大値、その±1)をテストデータとして抽出します。

図解:1〜100の入力範囲を例にした境界値

「1以上100以下の整数を受け付ける」という仕様を例に取ります。

同値クラスは無効(〜0)/有効(1〜100)/無効(101〜)の3つに分かれ、境界値は次のように選びます。

数直線で見る境界値

0
無効側
1
最小値
100
最大値
101
無効側
無効
有効範囲
無効

境界値として選ぶのは「0, 1, 100, 101」の4点。範囲の真ん中(例:50)は同値分割で代表値1つ拾えば十分。

仮に開発者がコードで if (x > 1 && x < 100) と書くべきところを if (x > 1 && x <= 100)if (x >= 1 && x < 100) のように書き間違えると、1や100の挙動が仕様と食い違います。

境界値テストはこの種のミスを瞬時に炙り出します。

サンプル:境界値テストのコード例

# 仕様:1以上100以下の整数のみ受け付ける
def validate(x):
    return 1 <= x <= 100
 
# 限界値分析で抽出する4つのテストケース
assert validate(0) == False # 最小値-1(無効)
assert validate(1) == True # 最小値(有効)
assert validate(100) == True # 最大値(有効)
assert validate(101) == False # 最大値+1(無効)

同値分割との比較表

観点 同値分割 限界値分析
狙うデータ 各同値クラスの代表値(中央付近) クラスの境目とその前後の値
検出が得意なバグ クラスごとの処理ロジックの誤り 不等号の向き・「以上/より大きい」の取り違え
使い方 テスト件数を絞る 同値分割を補強する

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 限界値分析の核心を3行で

・有効範囲と無効範囲の「境目」をピンポイントで突くブラックボックステスト技法
・1〜100の仕様なら「0, 1, 100, 101」の4点を選ぶ(最小値・最大値・その±1)
・不等号ミスや等号の付け忘れといった境界条件のバグ検出に強い


試験ではこう出る!

限界値分析は、FE・APの午前問題でブラックボックステスト関連の定番テーマとして登場します。出題は大きく3つの型に分類できます。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
FE H30秋
午前 問49
限界値分析によるテストケースを選ぶ問題。 ・有効範囲の最小値・最大値とその直前直後を選択
・中央値を選ばせるひっかけに注意
AP R元秋
午前 問48
テスト技法の説明として正しいものを選ぶ問題。 ・「同値クラスの境界となる値をテストデータとする」が正解
・原因結果グラフ・エラー推測がひっかけ
FE H27秋
午前 問48
同値分割と限界値分析でテストケース数を計算する問題。 ・有効・無効同値クラスごとに境界値を網羅した個数を答える
・落ち着いて数えれば確実に得点できる

📝 IPA試験での出題パターン

パターン1:「技法の説明文を選ばせる」
「同値クラスの境界となる値をテストデータとする技法」という説明が正解の典型文です。ひっかけ選択肢には「同値クラスから代表値を1つずつ選ぶ」(同値分割)、「経験から欠陥を予想する」(エラー推測)、「原因と結果の関係を論理図で表す」(原因結果グラフ)が並びます。

 

パターン2:「境界値となるテストデータを選ばせる」
仕様「○以上△以下」が示され、適切な境界値の組み合わせを選ぶ形式。「最小値とその一つ前」「最大値とその一つ後」をセットで選ぶのがコツです。中央値だけが並んだ選択肢は同値分割向けなので除外してください。

 

パターン3:「テストケースの個数を計算」
有効同値クラスと無効同値クラスの境界をすべて拾うと何ケースになるかを問います。落ち着いて数直線を書けば確実に得点できる問題です。深追いは不要で、「境界の前後を拾う」ルールさえ守ればOKです。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. ブラックボックステストにおける「限界値分析(境界値分析)」の説明として、最も適切なものはどれでしょうか?

  • A. 入力値を同じ動作をするグループに分け、その有効範囲・無効範囲の境目とその前後の値をテストデータとして選ぶ技法。
  • B. 入力値を同じ動作をするグループに分け、各グループから代表となる中央付近の値を1つずつ選んでテストデータとする技法。
  • C. 開発者の経験や勘に基づき、欠陥が潜んでいそうな箇所を予想してテストデータを設計する技法。

正解と解説を見る

正解:A

解説:
限界値分析は、有効範囲と無効範囲の境目およびその直前・直後の値をテストデータに選ぶ技法です。不等号の向きや等号の有無の判定ミスを効率よく検出できる点が特徴です。

選択肢Bは同値分割の説明です。同値分割は各同値クラスから代表値を1つ選ぶ技法であり、境目に着目するアプローチとは異なります。選択肢Cはエラー推測の説明です。エラー推測はテスト担当者の経験則に頼る技法で、境界条件を機械的に拾う限界値分析とは設計思想が違います。


よくある質問(FAQ)

Q. 境界値は「最小値・最大値の±1」だけ拾えば十分ですか?

基本仕様では「最小値・最小値-1・最大値・最大値+1」の4点で十分です。ただしJSTQB(ソフトウェアテスト技術者資格)では、これに「最小値+1」「最大値-1」を加えた6点を採る流派もあります。IPAの試験範囲では4点ベースの理解で得点に支障はないので、深掘りは不要です。

Q. 文字列や日付など、数値以外でも限界値分析は使えますか?

使えます。文字列なら「最大文字数」「最大文字数+1」「空文字(0文字)」「1文字」が境界です。日付なら「うるう年の2/29」「月末日」「年末年始の境目」などが該当します。「順序や範囲が定義できるもの全て」が対象になると覚えておけば応用が効きます。

Q. ホワイトボックステストで境界値を扱うことはありますか?

あります。ホワイトボックステストでは内部のソースコードを見ながら、ループの繰り返し回数の境界(0回・1回・最大回数)や条件分岐のしきい値をテストします。ただし「限界値分析」という用語自体は仕様(外部から見える振る舞い)に基づくブラックボックステストの技法を指すため、IPA試験ではブラックボックス側の文脈で出題されます。

Q. 実務ではどんなツールで限界値テストを実装しますか?

JUnit(Java)、pytest(Python)、Jest(JavaScript)などの単体テストフレームワークでパラメータ化テストを使うのが一般的です。pytestなら@pytest.mark.parametrizeで境界値のリストを渡せば、1つのテスト関数で複数の境界値を一括検証できます。手動テストでもチェックリスト化しておけば、回帰テストの抜け漏れを防げます。