Boundary Value Analysis – A Black Box Testing Technique

ブラックボックステストでは、システムの内部設計を知らずに検証を行うことは既に知られています。 また、等価パーティショニングの落とし穴と、パーティション境界でどのように失敗するのかについても説明しました。 等価パーティションに関する記事をまだ読んでいない場合は、この記事を読む前に読むことを強くお勧めします。 今回は、ブラックボックス・テストのもうひとつの手法である「境界値分析」について説明します。 また、この手法がどのように等価分割を補完するかも説明します。

  • Boundary Value Analysis とは何でしょうか。
  • Boundary Value Analysis with Equivalence Partitioning
  • Pitfalls of Boundary value Analysis

Boundary Value Analysisとは?

境界値分析(BVA)の基本は、パーティションで境界をテストする(Equivalence Partitioning !を思い出してください)ことです。 BVAは等価分割を拡張したものです。 ただし、これはパーティションが数値やシーケンシャルなデータからなる、順序のあるものである場合にのみ使用可能である。 パーティションの最小値と最大値はその境界値です。

パーティションの境界で不具合が見つかる可能性が高いことがわかりました(例:ある開発者が条件に>=10ではなく>10を使っている)。 このような不具合を発見するためには、等価分割だけでは十分ではありません。 そこで、パーティションの境界での異常を検出する新しい技術を定義する必要が生じました。

境界値分析はすべてのテスト レベルで実行でき、主に数値、日付、時間の範囲に使用されます。

境界値分析を行うには?

Boundary value analysis の最初のステップは、以下のような Equivalence Partitioning (等価分割) を作成することです。

  • Identify Exact Boundary Value of this partition Class – which is 16 and 60.
  • Get the Boundary value that is one less than the exact Boundary – which is 15 and 59.私たちは、境界を特定する3ステップアプローチを採用しています。
  • 正確な境界値より 1 つ大きい境界値を取得します – 17 と 61 です。

これらをすべて組み合わせると、年齢基準の境界値について次の組み合わせが得られます。 Age = 16, 17, 59, 60

無効な境界条件: Age = 15, 61

有効な境界条件はValid partition classに、無効な境界条件はInvalid partition classに該当することがわかりやすいですね。

境界の増加値、減少値として、16.1, 15.9, 59.9, 60.1 を使用しない理由がわかるでしょうか。 ほとんどの記事で説明が不十分な概念です。 そこで、別の例で説明しましょう。 あるWebサイトで体重を入力しているとする。 あなたの体重と身長から、サイトがボディマス指数(BMI)を教えてくれます。 体重の入力欄には、30~150kgの値を入力することができます。 体重入力欄は自然数、つまり正の整数しか入力できません!

この場合、同じ方法で境界を作成すると、

有効な境界条件: Age = 30, 31, 149, 150

Invalid Boundary Conditions : Age = 29, 151

次に、同じシナリオで、重みの入力フィールドが小数点以下1桁まで許容する場合を考えてみます。 この場合、境界条件は次のようになります:

Valid Boundary Conditions : Age = 30, 30.1, 149.9, 150

無効な境界条件: Age = 29.9, 150.1

違いわかりましたか? 境界の両側で許容できる最小の値をとります。 もし、30.01とすると、小数点以下1桁が要求されるところ、小数点以下2桁でテストすることになります。

Measurement of the Boundary coverage for a partition can happen as the number of boundary values tested divided by the total number of boundary test values identified.

Boundary Value Analysis with Equivalence Partitioning

Boundary Value Analysis について、ほぼ理解していただけたと思います。

以前の例に戻って、もう一度図を見てみましょう。

16 ~ 60 の範囲で、境界値分析によりテスト条件は 15、16、17、59、60、61 となります。 よく見てみると、17, 59をカバーして有効な等価分割を、15, 61をカバーして無効な等価分割をすでにカバーしていると思いませんか? 結局、Equivalence partitioningでは、有効なパーティションは16~60の間の数を選び、無効なパーティションは16未満か60以上の数を選べということなのです。 では、境界値がすでにEquivalence partitioningをカバーしているのであれば、なぜ別の手法としてpartitioningが必要なのでしょうか?

理論的には、境界値は確かにEquivalence partitionをカバーしていますが、まだpartitionが必要です。 境界値だけを適用して失敗した場合、エッジ条件が失敗したのか、それともパーティション全体が失敗したのかがわからなくなります。 例によって、それを理解しよう。

If (age < = 17 ) Then Don’t allow Gym Membership

If (age > 60) Then Don’t allow Gym Membership

このロジックを見てみると、本来は If (age <17) であるのに、開発者が間違った記号 = を付けてしまったことがわかると思います。 また、有効なパーティション全体のロジックが抜けていることにお気づきでしょうか? If (age>=16 and age <= 60 ) Then allow Gym membership !

境界条件値17だけでは、テスト実行に失敗してしまいます。 しかし、境界条件が失敗したのか、パーティション全体が失敗したのかがわかりません。 そのため、境界値ではないEquivalenceパーティション値を使用することが必須となります。 この場合、値20を使うと、実行に失敗します。

そこで、境界値と等価分割の両方を組み合わせると、テスト条件は次のようになります。 年齢 = 16, 17, 59, 60

無効な境界条件: Age = 15, 61

Valid Equivalence Partition : Age = 25

Invalid Equivalence Partition : Age = 5 , 65

Pitfalls of BVA

境界値および Equivalence partition の両方を適用後、自信を持って、すべての必要なカバー率を得たといえるでしょうか。 残念ながら、そう簡単ではありません! 境界値分割と等価分割は、アプリケーションが他の文字や値の入力を許可しないことを前提としています。 そのような文字、例えば@や負の値、あるいはアルファベットの入力は許されないでしょう。 しかし、この仮定はすべてのアプリケーションで有効ではなく、フィールド値が完全に機能していると言える前に、これらをテストすることが不可欠です。

それとは別に、入力値が別の値の決定に依存する状況もありえます。 例えば、体育館のフォームに男性、女性という別のフィールドがあり、その選択によって年齢制限が変わる場合です。 境界値だけではこのようなバリエーションに対応できないため、決定表テストという別のブラックボックステクニックに行き着きます。 それについては、次回の記事で詳しく説明します。 ご期待ください!

コメントを残す

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