境界値解析は、ある範囲内の境界値の代表値を含むようにテストを設計するソフトウェアテスト手法です。このアイデアは境界から来ています。[ 1 ]システムをテストするためのテストベクトルのセットがある場合、そのセット上にトポロジーを定義できます。同値分割理論で定義された同じ同値クラスに属する入力は、基底を構成します。基底セットが隣接している場合、それらの間に境界が存在します。境界の両側のテストベクトルは境界値と呼ばれます。実際には、これにはテストベクトルに順序付けが可能であること、および個々のパラメータが何らかの順序(部分順序または全順序)に従うことが必要です。
正式には、境界値は以下のように定義できます。
より分かりやすく言うと、同値分割の最小値と最大値の境界における値がテストされます。これらの値は、ソフトウェアコンポーネントの入力範囲や出力範囲、あるいは内部実装である場合もあります。これらの境界は、ソフトウェア障害につながるエラーが発生しやすい箇所であるため、テストケースで頻繁に検証されます。
ソフトウェアコンポーネントへの期待される入力値と出力値は、コンポーネント仕様から抽出する必要があります。抽出された値は、境界が識別可能なセットにグループ化されます。各セット(パーティション)には、コンポーネントによって同じ方法で処理されることが期待される値が含まれます。テストデータ範囲の分割については、同値分割テストケース設計手法で説明されています。テストケースを設計する際には、有効なパーティションと無効なパーティションの両方を考慮することが重要です。
このデモンストレーションは、 Javaで書かれた関数を使用して行うことができます。
class Safe { static int add ( int a , int b ) { int c = a + b ;if ( a >= 0 && b >= 0 && c < 0 ) { System . err . println ( "オーバーフローです!" ); } if ( a < 0 && b < 0 && c >= 0 ) { System . err . println ( "アンダーフローです!" ); }return c ; } }コードに基づいて、[ a,b ]の入力ベクトルが分割されます。カバーする必要があるブロックは、オーバーフローステートメントとアンダーフローステートメント、およびこれらのどちらでもないものです。これにより、コードレビュー自体から 3 つの同等のクラスが生まれます。

整数には固定サイズがあることに注目します。
入力パラメータaとb はどちらも整数であるため、それらには全順序が存在することに注意してください。等式を計算すると次のようになります。
境界値を含む値を取得します。つまり、これらの( a,b )のペアは有効な組み合わせであり、それらに対してアンダーフローやオーバーフローは発生しません。
一方で:-
無効な組み合わせである( a,b )のペアが返されるため、オーバーフローが発生します。同様に、
無効な組み合わせである( a,b )のペアが与えられ、それらに対してアンダーフローが発生します。
境界値(オーバーフローの場合のみ描画)は、右側の図のオレンジ色の線で示されています。
別の例として、入力値が整数で表された1年の月である場合、入力パラメータ「month」は次のような分割を持つ可能性があります。
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|------------------- 無効なパーティション 1 有効なパーティション 無効なパーティション 2
2 つのパーティションの境界は、アプリケーションの動作が変化する場所であり、それ自体は実数ではありません。境界値は、境界にある最小値 (または最大値) です。最初のパーティションでは 0 が最大値、2 番目のパーティションでは 1 が最小値であり、どちらも境界値です。各境界の両側に入力または出力を生成するようにテスト ケースを作成する必要があり、境界ごとに 2 つのケースが作成されます。境界の両側のテスト ケースは、テスト対象コンポーネントで可能な最小の増分でなければなりません。整数の場合は 1 ですが、入力が 2 桁の小数の場合は 0.01 になります。上記の例では、0,1 と 12,13 に境界値があり、それぞれをテストする必要があります。
境界値分析では、無効な分割は必要ありません。例えば、気温が10度以下の場合にヒーターがオンになる場合を考えてみましょう。この場合、2つの分割(温度≤10、温度>10)と、テストすべき2つの境界値(温度=10、温度=11)が存在します。
境界値が無効な領域内に含まれる場合、テストケースはソフトウェアコンポーネントがその値を適切に処理することを確認するように設計されています。境界値分析はテストサイクル全体を通して使用でき、すべてのテストフェーズに等しく適用可能です。