スキルアップ

「境界値分析」テスト技法解説

境界値分析とは?

境界値分析とは、テスト対象の仕様の中で「○○未満」「○○以上」など値に境界が存在する場合にその境界付近を狙う、テストケースを作成するためのテスト技法です。境界の付近では、仕様の解釈の誤りやコーディングのミスが起こりやすく、その結果として不具合が埋め込まれることが多いため、境界値分析を行うことが不具合の検出に有効です。

テスト設計全般についてはこちらのページもご覧ください。
https://www.veriserve.co.jp/service/detail/testdesign.html

境界値分析のメリット

仕様には「○○未満」「○○以上」などの表現が登場することがあります。このような表現があった場合、「〇〇」という値を含むのか含まないのかについて解釈を誤ったり、コーディング時に「≦」と書くべきところを「<」と書き間違えたりすると、不具合が埋め込まれることになります。このように、「○○」という値の付近には不具合が潜んでいる可能性が高い、というテストの経験則に基づいて境界値分析というテスト技法が用いられます。境界付近の値をピンポイントで狙ってテストをすることで、全ての値をテストせずとも、不具合を効率よく発見できるのが境界値分析のメリットです。境界値分析は同値分割法の拡張と考えることができ、境界値分析を用いると同値パーティション(同値クラス)を網羅したテストを行うことができます。

<境界値分析の利用シーン>

「○○未満」「○○以上」など、値に順序性があり、その値の範囲を指定するような仕様があれば、どのようなシステムであっても境界値分析を適用することが可能です。例えば、パスワードの文字数チェックの機能や、年齢や日時の値の範囲によって処理を変える機能などをテストする際に、境界値分析を適用できます。

境界値分析によるテストケースの作成手順

ここからは、以下の仕様を例として、境界値分析によるテストケースの作成手順について説明します。

・あるWebサイトではお弁当を注文でき、注文個数の入力欄には1以上100以下の整数を入力することができる。範囲外の数値が入力された場合はエラーメッセージを表示する。

境界値分析を適用する際、実務では頭の中で考えて境界値を導き出す場合もありますが、さまざまなテスト技法を手軽に利用してテスト設計に役立てられるGIHOZというツールを使えば、分析結果を数直線型のモデルで視覚的に分かりやすく表現できます。

→GIHOZの詳細はこちら

ステップ1 境界を識別する

仕様から境界を識別します。上記の例では「1以上100以下」という記載があるため、1や100の付近に境界が存在することが分かります。注文個数の取りうる値の範囲を整理すると、1未満の範囲、1以上100以下の範囲、100を超える範囲の3つに範囲が分けられます。これらの各範囲は、動作結果が同じになるグループであり、同値分割法における同値パーティションに当たります。同値パーティションと同値パーティションの間に境界が存在します。

ステップ2 境界値を識別する

境界の前後の値を境界値とします。上記の例では「0」・「1」、「100」・「101」が境界値となります。この場合、境界値は同値パーティションの最小値・最大値に当たります。

※ 境界値分析では、境界ごとに2つの境界値を取る方法と、3つの境界値を取る方法がありますが、ここではGIHOZがサポートしている2つの境界値を取る場合のみを説明しています。3つの境界値を取る方法について、詳しくはJSTQB Foundation Levelシラバス(記事執筆時点での最新版はVersion2018V3.1.J03)の「4.2.2 境界値分析」を参照してください。これらの方法のどちらを利用するかには特定の基準はありませんが、テスト対象に不具合が残存した場合のリスクに応じて、どちらの方法を利用するかを決めることがあります。リスクが高い部分に対しては、3つの値をテストする方法を使うと良いでしょう。

GIHOZを利用して境界値分析を行う場合、境界を識別して数直線上に境界を追加すると、境界ごとに2つの境界値が自動的に表示されます。

GIHOZで境界を追加
GIHOZで境界を追加
GIHOZで境界値を識別
GIHOZで境界値を識別

ステップ3 テストケースを作成する

境界値を識別したら、テストケースを作成します。例えば、下図のように、テストの入力条件となる値(今回の例ではお弁当の個数)と、その値でテストした際の期待する動作を記述します。これ以外に、テストの実施手順も別途用意すると良いでしょう。

テストケースの例
テストケースの例

→GIHOZの詳細はこちら

境界値分析の注意点

仕様上で境界を明確に記述していたとしても、実際にコードを実装する際に、条件文で「<、>、<=、>=」といった不等号を用いていない場合は、境界値分析を行っても不具合を検出できない可能性があります。極端な例として、上述した仕様に対して、以下のように個数1つずつに対して条件判定を行っていた場合、0、1、2、・・・とすべての値をテストしないと、十分にテストしたことになりません。

このように、仕様から読み取った境界値をテストしても十分ではないケースもあるということには注意が必要です。正確を期すには、コードがどのように実装されているかを確認したり、識別した境界値が正しいかを開発者にレビューしてもらったりすると良いでしょう。

まとめ

境界の付近に潜む不具合を狙ってテストする技法である、境界値分析についてご紹介しました。境界値分析を活用すると、「○○未満」「○○以上」といった仕様の解釈の誤りやコーディングのミスに起因する不具合を、少ない数のテストケースで検出することができます。
GIHOZを使うと、数直線型のモデルを作成して直観的に境界値分析を行うことができます。境界の付近に潜む不具合を確実にテストで検出するために、境界値分析やGIHOZをぜひご活用ください。

SNSシェア

この記事は面白かったですか?

今後の改善の参考にさせていただきます!

Ranking

ランキング

もっと見る