境界値解析(通常BVAと略される)は、ブラックボックステストの手法として一般的である。 このアプローチでは、許容範囲の境界で入力値を検証することにより、ソフトウェアの欠陥をテストする。
この記事では、境界分析テストとは何か、なぜそれが有用なのか、そしていくつかの異なるアプローチ、テクニック、さまざまな境界テストツールを探ります。
ソフトウェアテストにおける境界値分析とは?
境界値分析は機能テストの一種である。 この種のテストは、ソフトウェアの各機能が要件や仕様を満たしているかどうかを検証することに関係する。 バウンダリー・テストの場合、この機能には、ソフトウェアがさまざまな入力をどのように扱うかが含まれる。
BVAは、入力境界の端やその周辺での入力に対してソフトウェアがどのように反応するかを検証するソフトウェアテスト技法である。 要するに、各入力には許容範囲がある。 例えば、8文字から12文字のパスワードを受け付けるログイン用のパスワードボックスがあるとします。 バウンダリー・テストでは、7、8、12、13の文字長のパスワードをテストする。
この考え方は、限界の境界、つまり7、8、12、13は、境界の内側にある数字、例えば9、10、11よりもエラーを投げやすいというものだ。 8文字から12文字までのフィールドボックスの例では、ここでの利点はわずかなものに思えるかもしれませんが、1文字から20文字までのフィールドボックスや、1から1000までの数値などを受け取るフィールドボックスのテストケースを書く必要があるときには、その利点はより明白になります。
そこで、機能テストの時間を節約し、テストケースの数を減らすために、境界値分析では値に注目する:
- 最小値
- 最小値の真下
- 最大値
- 最大値の真上
テストにおける境界値分析の利点
バウンダリー・テストには、QAチームにとっていくつかの魅力的な利点がある。
#1. ソフトウェアの品質向上
テスターにとって悪夢のシナリオは、バグや欠陥に気づかないことだ。 多くのことを確認しなければならないため、いくつかの欠陥が隙間から漏れてしまうことがある。 バウンダリテストは、ソフトウェアにエラーが含まれる可能性が高い部分の機能を証明し、より良いソフトウェアビルド、ひいては、より信頼性の高い安定したアプリケーションにつながります。
#2. テストカバレッジの向上
ソフトウェアテストにおけるBVAは、包括的なテストカバレッジに必要なテストケースの数を削減するのに役立つため、非常に有用である。 境界値解析は、重要な値と各値をより徹底的にテストできることを保証する。
#3. 欠陥の早期発見
バウンダリー・バリュー・テストは、欠陥の早期発見を優先するアプローチの一部である。 プロセスの早い段階でバグを発見することは、開発チームが時間と費用を節約できることを意味し、開発の初期段階でバグを修正することがはるかに容易であるという事実は言うまでもない。
#4. 効率性
境界値テストは、多くのテストケースの必要性を軽減するため、非常に効率的である。 実際、問題を引き起こす可能性の高いもの以外の入力を減らすことで、テストケースの作成と実行の両方で、テストチームの時間を大幅に節約することができる。
テストにおける境界値分析の欠点
もちろん、どんなソフトウェアテスト技法も完璧ではないし、限界がないわけではない。 境界値分析には多くの利点があるが、この機能テスト技法で作業するにはいくつかの制約がある。
#1. 狭い範囲
BVAは有効なデータ入力の境界またはエッジで動作する。 一般的に、エッジの有効な入力があれば、中間入力は問題ないだろうという推論によって、中間入力を無視する。 しかし、前例がないわけではなく、テストされていないこれらの値には問題がある可能性もある。
#2. 単純すぎる
境界分析とは、物事をシンプルにすることだ。 この方法はテストケースを減らすには有効だが、複数の境界、相互作用、依存関係を持つ非常に複雑なドメインにはあまり適していない。 実際、複雑なシナリオに対応するのは難しい。
#3. 前提条件
効率を上げようとするプロセスは、特定のエラーを見逃す危険性がある。 BVAは、レンジの端の境界線に焦点を当てている。 その際、境界値の両側に位置する他のインプットについても仮定しなければならない。 テスターは効率とカバレッジのバランスを取らなければならないが、バウンダリー・テストを単独で使用する場合、若干のリスクが生じる。
#4. 正確な仕様と要件への信頼
効率的なBVAは、仕様書と要求文書の品質と正確さに左右される。 これらの文書にチェック漏れがあると、境界値テストに影響を及ぼし、開発の重要な後期段階まで特定のエラーがチェックされず、発見されないことになりかねない。
#5. 同値クラスへの依存
BVAの徹底的な実施には、等価クラスに関する十分な知識が必要である。 これらのクラスを正確に設定するには、経験とアプリケーションの背景情報が必要である。
境界値解析の課題
ソフトウェアテスト
ここまでで、バウンダリー・テストの長所と短所についてはかなりはっきりしたはずだ。 しかし、このアプローチを自社のソフトウェアテストに導入したいのであれば、乗り越えなければならないさまざまな課題も認識しておかなければならない。
ソフトウェアテストで境界値テストを実施する際の課題をいくつか挙げてみよう。
#1. 境界線の概要
単純なシステム内の境界を特定することは、有能なテスターにとってほとんど難しいことではない。 しかし、もっと複雑な状況もある:
- 多様な入力変数や複雑な関係を持つ複雑な入力領域
- 仕様書に明確に記載されていない境界線
- ユーザーのアクションやその他の条件に基づいて変化する動的な境界線
#2. あいまいな要件
要件文書の記述が不十分であったり、要件が不明確であったりすると、境界値の特定に支障をきたすことがある。 明確さ、完全性、そして徹底的な仕様書へのコミットメントには時間がかかるが、最終的には報われる。
#3. 専門知識
境界値分析は見かけによらず複雑である。 実際、検査チームは、技術の微妙なニュアンスを理解するために、現場での経験と知識を持った人材を必要としている。 さらに言えば、テスターはそのソフトウェアについてある程度の知識を持つか、最低でも信頼できる仕様書を持っていなければならない。
#4. エラー
境界解析は、有効な入力と無効な入力を検証するために必要なテストケースの数を削減しようとするものである。 しかし、検査範囲外にある欠陥は気づかれにくい。 さらに、”off-by-one “エラーは、境界やその近くで起こりうる一般的なコーディングミスである。 テスターはこうしたシナリオを意識し、テストのための準備をしなければならない。
#5. テストケースの爆発
複数の入力境界が存在する場合、テストケースはすぐに複雑化し、制御不能になる。 このような状況では、バウンダリー・テストで節約できる時間とコストが失われ、ソリューションのメリットが損なわれてしまう。 多くの組み合わせや順列を持つ複雑なソフトウエアの構築も、同様の効果をもたらす可能性がある。
#6. 分析ツールの限界
ソフトウェアテスト自動化ツールは、チームが適切な境界値分析を実施するのに役立つ。 しかし、最良のケースであっても、これらのツールはテストとテスト作成の両方に手作業が必要である。 この状況は、複数の変数の相互作用がある複雑なビルドでは悪化する可能性がある。
さまざまなタイプの境界値
ソフトウェアテストにおけるテスト
書籍『ソフトウェアテスト』(原題:Software Testing:A Craftsman’s Approach)という本の中で、著者のポール・C・ヨルゲンセン(Paul C. Jorgensen)とバイロン・デブリース(Byron DeVries)は、境界値テストの4つの異なるタイプについて説明している:
1.正常境界値テスト(NBVT)
- 入力領域の端で有効な入力値をテストする
- 境界の真上と真下の入力とともに、最小値と最大値を探索する。
- これは古典的な境界値分析である。
2.ロバスト境界値テスト(RBVT)
- 上記のNBVTと似ているが、無効入力も含まれる
- 境界線とそのすぐ外側でテストを行うが、無効な入力も考慮する
- 極端な出力や予期せぬ出力からエラーを発見することに重点を置く。
3.ワーストケース境界値テスト(WBVT)
- 極端に有効な値と無効な値を用いてソフトウェアの動作を検証する。
- 入力領域の端の値と、その境界を超えた値を探索する。
- より過酷な条件下でのソフトウェアの挙動を理解することを目指す
4.ロバスト・ワースト・ケース・バウンダリー・バリュー・テスト(RWBVT)
- RBVTとWBVTをブレンドし、最も徹底的な境界値テストを行う。
- 典型的な境界と極端な境界の両方で、有効な入力値と無効な入力値をテストします。
- 境界線に関連する欠陥を見つける最高の機会を提供する
これらのアプローチは包括性に違いがあり、RWBVTが最も徹底している。 しかし、テスト担当者は、このような新たなレベルの欠陥発見を可能にするためには、時間と労力の両面で余分な投資が必要であることを認識しなければならない。
等価分割と境界値
分析:類似点と相違点
等価分割と境界値分析はしばしば併用される。 実際、この2つの技術は非常に補完的である。 しかし、両者はデータ入力の妥当性を確認するための異なるアプローチについて述べている。 両者の共通点と相違点を見てみよう。
1.類似点
等価分割と境界値解析は素晴らしいペアになる。 両者のテクニックの共通点をいくつか挙げてみよう。
- これらはどちらもブラックボックステスト技法であり、アプリケーションのソースコードの先験的な知識なしにテスト できる入力と出力に焦点を当てています。
- どちらも、インプットをテストするための徹底したアプローチの一部である。
- どちらも、テスト担当者がテストケースを過剰に書くことなく、包括的なテストカバレッジのバランスを取るのに役立ちます。
2.相違点
等価分割と境界値分析の違いを探るには、それぞれを切り離して見る必要がある。
等価分割
- 入力データを、同じようなシステム出力になるはずの等価クラスに分割する。
- 各クラスから1つの代表値を使用し、その値でシステムをテストする。
- これは、有効な等価クラスと無効な等価クラスを識別することに関係する。
境界値解析
- 同値クラスの境界またはエッジの値をテストする。
- 最小値、最大値、境界の両側の値など、多くの値をテストする。
- 境界の端で見つかったエラーを探す
等価分割と境界値分析の例
同値分割と境界値解析の理解を深めるために、いくつかの例を挙げよう。
等価分割の例:
例えば、自動車登録用の入力ボックスがあるとしよう。 通常、米国の自動車登録プレートの文字数は6文字から7文字である。 簡単のため、特殊ナンバープレートは割愛する。
有効データ=プレート6または7文字
無効なデータ=>6 または>7 文字のプレート。
境界値解析の例:
上記と同じナンバープレートの例を使って、バウンダリー分析は以下のテストを行う。
有効なデータ = 6文字または7文字のプレート
無効なデータ= 5文字または8文字、場合によっては4文字と9文字のプレート
境界値解析の例
おそらく、このコンセプトを完全に理解する最善の方法は、別の境界値解析の例を1つか2つ見ることだろう。
境界値テストの例1
境界値テストをより詳しく調べるために、年齢検証領域の例を見てみよう。
ユーザーが年齢を入力する欄があります。
境界値は以下の通り:
- 最低年齢=18歳
- 最高年齢=120歳
バウンダリー・テストケースの例:
テストケースは全部で6つ:
- 17、18、19はそれぞれ最低、最低、最低以上である。
- 119、18、19は、それぞれ最大値、最大値、最大値以上である。
境界値テストの例2。
次のバウンダリー・テストの例では、100ドル以上の注文で20%の割引が適用されるウェブサイトを探ります。
この例では、600ドル以上の購入で25%の割引となる。 境界値テストでは、100ドルから600ドルまでの入力を扱う。
境界値は以下の通り:
最低対象割引額=100ドル
最大割引額=600ドル
バウンダリー・テストケースの例:
今回も合計6つのテストケースを作成した:
- 99.99ドル、100ドル、100.01ドル(それぞれ最低額以下、最低額、最低額以上
- 599.99ドル、600ドル、600,01ドルで、それぞれ最高額、最高額、最高額を下回る
ソフトウェアテストにおける境界テストは正確か?
研究論文「Black Box Testing with Equivalence Partitioning and Boundary Value Analysis Methods(等価分割と境界値分析によるブラックボックステスト)」では、インドネシアのマタラム大学の学術情報システムをテストするために、等価分割と境界値分析を使用することを探求している。
著者らは、テストに人気のあるオープンソースのテストツールSeleniumを使用し、合計322のテストケースを実行した。 等価テストと境界値分析により、約80の不合格ケースが発見され、その結果、有効なテストスコアと無効なテストスコアの比率はおよそ75:25となった。 全体として、ソフトウェアのテストに同値分割とBVAを組み合わせて使用することで、ソフトウェアの徹底的で有益なテストにつながった。
最高の境界値テストツール
専用のバウンダリー・テスト・ソフトウェア・ツールは稀だが、この仕事ができる注目すべきテスト・ツールは数多くある。
#3. テストケースラボ
TestCaseLabは、BVAテストに役立つクラウドベースのテスト管理ツールです。 このソフトウェアによって、チームは直感的で魅力的なUIからテストケースを作成し、管理することができる。 TestCaseLab は柔軟で機能満載ですが、レポートやカスタマイズのオプションに制限があるなど、制約もあります。
#2. マイクロフォーカスUFT One
Micro Focus UFT One は、機能テストと回帰テストを中心としたソフトウェアテストツールです。 さまざまなプラットフォーム、デバイス、APIテストをサポートし、強力な統合オプションを提供する。 ノーコードとキーワード駆動の両方のテスト作成が可能で、チームが境界値分析テストケースを簡単に構築できる。 ZAPTESTのようなツールと比較すると、学習曲線が急でパワーがないなど、考慮しなければならない制限もある。
#1. ザップテスト
ZAPTESTは、高度なRPA機能を備えた包括的なソフトウェア自動テストツールです。 ソフトウェア・テストにおけるBVAを含め、さまざまな方法でソフトウェアを検証するのに役立つ、ユーザーフレンドリーで堅牢なテスト自動化ツール群をテスターに提供するために構築されている。
バウンダリーバリュー分析を支援するZAPTESTの最も説得力のある使用例には、テストケースの生成、テストデータの取り扱い、テストの実行、レポートと分析などがあります。 ZAPTEST のユーザーは、さまざまなテンプレートと高度なカスタマイズ機能、そしてノーコードでのテストケース作成機能により、あらゆる種類の境界解析に対応する堅牢なテストケースを迅速かつ容易に作成・管理することができます。
テストケースの生成と管理だけでなく、ZAPTESTのRPA機能はテストチームの境界値分析テストを別の方法で支援することができる。 例えば、テストケースの自動実行、テストデータの生成、他のテストツールとの強力な統合が可能です。
境界値テストのヒント
- 境界値分析と同値分割を組み合わせて、テストケースがさまざまな入力シナリオをカバーするようにする。
- 無効な入力シナリオ(すなわち、ネガティブテスト)を使用して、ソフトウェアがエラーや予期せぬ入力をどのように処理するかを確実に検証する。
- テキスト、数値、ブール値など、さまざまなデータ型の境界値を特定するために時間を費やす。
- 重要な機能またはエラーが発生しやすい領域の境界値テストを優先する。
- ユーザーがドメインに入力するような現実的なデータを使用しましょう。
最終的な感想
境界値分析は有用な機能テスト手法である。 入力ドメインがある場合、それが有効なデータを受け入れ、無効なデータを受け取ったときにエラーメッセージを送信することをチェックする必要がある。 境界分析テストは、包括的なテストに必要なテストケースのみを構築することで、効率的な方法でその機能を検証するのに役立ちます。
バウンダリー・テストは、許容範囲またはその周辺の値を調べ、システムがこれらの入力に対してどのように反応するかを検証する。 その結果、冗長なテストケースを作る必要がなくなるため、多くの時間を節約し、労力を減らすことができる。 締め切りが目まぐるしくやってくるソフトウェア開発の世界では、テストチームはあらゆる助けを必要としている。