境界値分析とは

きょうかいちぶんせき

不具合が同値クラスの境目に集まりやすいことから、境目のすぐ両側の値(例えば1〜100を受け付けるなら0、1、100、101)をテストするブラックボックステストの技法。比較演算子の取り違えのような誤りを見つけやすい。

「境界値分析」は、1分野の3問の練習問題に出てきます(ソフトウェア開発とプロジェクト管理など)。

この用語の分野: ソフトウェア開発とプロジェクト管理

なぜ境目を試すのか

プログラムの条件分岐は「<」と「<=」、「>」と「>=」の取り違えや、配列の添字の1つずれ(off-by-one)などの誤りを起こしやすく、その影響は境目の値でだけ現れます。例えば、仕様が「85 ℃以上で警告」なのに if (t > 85) と書くと、84 ℃や86 ℃では仕様どおりに動き、85 ℃のときだけ警告が出ません。同値分割で各クラスの真ん中の値だけを試しても、このような誤りは見つかりません。

値の選び方

整数の入力で1〜100を受け付ける場合、下の境目では0と1、上の境目では100と101を選びます。境目の値とその両隣(0、1、2と99、100、101)を試す、より細かいやり方もあります。料金区分のように区分が複数ある場合は、区分が変わるすべての境目で両側の値を選びます。入力が小数の場合は、仕様で決めた分解能(0.1刻みなど)で隣の値を決めます。

ハードウェアに近いソフトウェアでの境界

組込みのソフトウェアでは、ADCの読み値のしきい値、タイマのカウンタが最大値から0に戻る点、バッファがちょうど満杯になる点、通信のパケットの最大長など、仕様の数値の境目が多くあります。8ビットのカウンタなら255から0へのあふれ、16ビットの符号付き整数なら32,767と−32,768の境目で、計算の誤りが起きやすくなります。こうした境目は、仕様書の数値と型の範囲の両方から洗い出します。

境界値分析の練習問題に挑戦

入場料金を年齢(0以上の整数)で決めるプログラムがあり、0〜17歳は子供料金、18〜64歳は一般料金、65歳以上はシニア料金とする。料金区分が変わる境目を確かめるために、境界値分析で選ぶテストの値の組合せとして、最も適切なものはどれか。

  1. A10、40、90
  2. B17、18、64、65
  3. C18、65
答えと解説を見る

正解:B. 17、18、64、65

境界値分析では、不具合が同値クラスの境目に集まりやすいことから、境目のすぐ両側の値をテストします。子供料金と一般料金の境目では17と18、一般料金とシニア料金の境目では64と65を選ぶので、17、18、64、65の4つになります。条件の「<」と「<=」の書き間違えのような誤りは、境目の片側だけを試しても見つからないことがあります。10、40、90は各区分の代表の値を選ぶ同値分割の値で、境目の誤りは確かめられません。

よくある質問

同値分割と境界値分析はどう使い分けますか?

多くの場合は組み合わせて使います。同値分割で入力をクラスに分けて各クラスの代表を試し、境界値分析でクラスの境目の両側を追加で試します。同値分割だけではテストの数を減らせますが、境目の誤りを見落としやすくなります。

境界値分析はホワイトボックステストですか?

仕様に書かれた範囲の境目から値を選ぶので、ブラックボックステストの技法です。ただし、実装の中の配列の大きさや型の範囲など、仕様に書かれていない境目もあるので、ソースコードを見て追加することもあります。

解説の中の「境界値分析」

「境界値分析」が出てくる問題(3問)

  1. 入場料金を年齢(0以上の整数)で決めるプログラムがあり、0〜17歳は子供料金、18〜64歳は一般料金、65歳以上はシニア料金とする。料金区分が変わる境目を確かめるために、境界値分析で選ぶテストの値の組合せとして、最も適切なものはどれか。
  2. ブラックボックステストの説明として、適切なものはどれか。
  3. 仕様は「温度が85 ℃以上なら警告を出す」だが、ファームウェアには誤って「if (t > 85)」と書かれていた。温度 t は整数とする。次のテストの値のうち、この誤りを見つけられるものはどれか。

ソフトウェア開発とプロジェクト管理の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

同値分割 ブラックボックステスト ホワイトボックステスト アーンドバリューマネジメント(EVM) アジャイル開発 ウォーターフォールモデル SLA(サービスレベル合意) クリティカルパス法(CPM) CI/CD(継続的インテグレーション・継続的デリバリー) スクラム

用語集の一覧へ