境界値分析

ソフトウェア コンポーネントへの期待される入力値と出力値は、コンポーネント仕様から抽出される必要があります。 次に、値は識別可能な境界を持つセットにグループ化されます。 各セットまたはパーティションには、コンポーネントによって同じように処理されることが期待される値が含まれます。 テストデータ範囲のパーティショニングは、等価パーティショニングのテストケース設計技法で説明されています。

デモは、Java で書かれた関数を使用して行うことができます。

class Safe { static int add(int a, int b) { int c = a + b ; if (a >= 0 && b >= 0 && c < 0) { System.err.println("Overflow!"); } if (a < 0 && b < 0 && c >= 0) { System.err.println("Underflow!"); } return c; }}

コードに基づいて、入力ベクトルがパーティション化されます。 カバーすべきブロックは、overflow文とunderflow文であり、この2つのどちらもありません。 それは、コードレビュー自体から、3つの等価なクラスを生じさせます。

境界値のデモ(オレンジ)

したがって、整数の固定サイズがあることに注意する必要があります。-MIN_VALUE ≦ x + y ≦ MAX_VALUE

入力パラメータ a と b はともに整数であり、それゆえ全順序が存在することに注意してください。

一方、

x + y = MAX_VALUE + 1

は、無効な組み合わせである (a,b) のペアを返し、それらに対してオーバーフローが発生することになります。

境界値 (オーバーフローの場合のみ描画) は、右側の図のオレンジ色の線で示されています。

別の例として、入力値が整数で表された年の月である場合、入力パラメーター「month」は次のようなパーティションを持つ可能性があります:

 ... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2

2つのパーティションの間の境界はアプリケーションの動作が変わる場所であり、実数そのものではありません。 境界値とは、その境界にある最小値(または最大値)のことです。 0という数値は1番目のパーティションにおける最大値、1という数値は2番目のパーティションにおける最小値、どちらも境界値である。 テストケースは、各境界の上と下に該当する入力や出力を生成するように作成する必要があり、その結果、1つの境界につき2つのケースが存在することになる。 境界の両側にあるテストケースは、テスト対象のコンポーネントに対して可能な限り小さな増分であるべきです。整数の場合、これは1ですが、入力が2桁の小数の場合、それは.01になります。 上記の例では、0,1 と 12,13 に境界値があり、それぞれをテストする必要があります。

境界値分析では、無効なパーティションは必要ありません。 温度が 10 度以上低い場合にヒーターがオンになるような例を考えてみましょう。 2 つのパーティション (temperature≤10, temperature>10) とテストされる 2 つの境界値 (temperature=10, temperature=11) があります。

境界値が無効なパーティション内にある場合、テスト ケースは、ソフトウェア コンポーネントが制御された方法で値を処理することを確実にするよう設計されています。 境界値分析は、テスト サイクル全体を通して使用でき、すべてのテスト フェーズで同様に適用できます。

コメントを残す

メールアドレスが公開されることはありません。