プログラムを記述する際、範囲を指定して値を入力することが一般的です。

その際、仕様書に定義されている条件を取り違えて、エラーとなってしまうことがよくあります。境界値テストは、そのようなエラーを発見するのに有効な手法です。

この記事では、境界値テストのメリットから作成手順、実施前に押さえておきたいポイントについて解説します。

境界値テストとは?

境界値テストとは?

境界値テストとは、仕様条件の境界となる値及び、その隣の値に対してテストする手法です。境界値とは、ある範囲の最小値・最大値を同値分割した領域の端の値となり、具体的には「未満」や「以下」の部分が該当します。

このような境界部分は、エラーを起こしやすく、不具合が潜んでいるおそれも高いでしょう。そのため、境界値にピンポイントなテストを実施することで、認識ミスや実装ミスによる不具合を発見できます。

境界値テストを理解するうえで欠かせない知識

境界値テストを理解するうえで欠かせない知識として「同値クラス分割」が挙げられます。「出力が同等になる」と想定される入力値のグループを明確にし、適応するテストケースを作成する技法です。

それぞれの値は以下のように分けられます。

  • 有効同値クラス:システムが正常に動作する値
  • 無効同値クラス:システムがエラーを検知する値

それぞれの代表値を入力した際、システムが正常・エラーのいずれに動作するのかをテストします。

代表値を選ぶ場合において「異なる同値クラスの境界にあたる値・その隣の値の境界値」を選び出すことを境界値分析、その境界値を使ってテストを実施することを、境界値テストと定義されています。

境界値テストのメリット

境界値テストのメリット

境界値テストのメリットは、全ての値をチェックしなくても、不具合を効率よく見つけられることが挙げられます。仕様書には「未満」や「以上」などの表現が頻繁に使われ、これらの表記があった場合、どの値をを含む・含まないの解釈が異なることがありえるでしょう。

たとえば、コーディング時に「<」記述すべき部分を「≦」と間違えてしまうと、不具合が埋め込まれてしまいます。このように、「未満」「以上」と表現された値付近には、不具合が潜んでいるおそれがあるとの経験則に基づき、境界値分析が実施されるのです。

境界値テストを作成する3つの手順

境界値テストを作成する3つの手順

境界値テストを作成する手順は、以下の3つになります。

  1. 境界を明らかにする
  2. 境界の識別
  3. テストケースの作成

ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。

1.境界を明らかにする

仕様書から値の境界を識別します。たとえば、1以上10以下のような記載があった場合、1や10の付近に境界が存在するとわかるでしょう。

この場合に想定できる境界の範囲を整理すると、以下の通りです。

  • 1未満の範囲
  • 1以上10以下の範囲
  • 10を超える範囲

これらは、動作結果が同じになるグループとなり、同値パーティションに該当します。つまり、同値パーティション同士の間に境界が存在するといえるでしょう。

2.境界の識別

境界を明らかにしたら前後の値を境界値と定義します。

上記の例では「0・1、10・11」が境界値です。この場合の境界値は、同値パーティションの最小値と最大値がそれに該当します。

あくまで上記は一例ですが、テストケースに採用する値を決めることとなり、リスクが高い部分に対しては、全ての値をテストケースに盛り込むようにするとよいでしょう。

3.テストケースの作成

境界値を識別ができたら、それをもとにテストケースを作成します。たとえば、その値でテストした際に期待できる動作を記述していくことが想定されます。具体的には、以下のようなものが挙げられるでしょう。

個数(input):0

有効/無効:無効

テストケースの意図:エラーの下限値

期待結果:エラーメッセージの表示

これらのようにテストケースを複数準備し、実施手順においても定めておきます。

境界値テストを実施する際、押さえておきたい3つのポイント

境界値テストを実施する際、押さえておきたい3つのポイント

境界値テストを実施する際、押さえておきたいポイントとして、以下の3つが挙げられます。

  1. 表現
  2. 転記
  3. 網羅性

ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。

1.表現

境界を表す記述には、以下のようなものが挙げられます。

  • ~より大きい
  • ~より小さい
  • ~と同等
  • 以上
  • 以下
  • 未満

これらの境界を表現する方法を慎重に定義しなければ、意味を取り違えてエラーが発生するおそれが高まってしまうでしょう。文字情報だけで不安を覚える場合は、一度図に落とし込んだうえで、正確に把握するようにしてください。

2.転記

コーディングを行う際、境界は等号や不等号で表現されます。たとえば、仕様に書かれている表現を正確に把握していたとしても、タイプミスしてしまうこともありえるでしょう。

その場合、開発仕様書に記載されている条件と誤ったままコーディングしてしまうおそれがあり、条件の記述にエラー箇所が発生してしまいます。このようなことを予防するには、ミスしているかもしれないとの前提の元に慎重な作業を心がける必要があります。

3.網羅性

条件文を記述する場合、等号・不等号を使用していないなどコーディングの取り組み方によっては境界値テストでは、エラー箇所を検出できないおそれがあります。

たとえば、0~9・10~20・21以上のような同値クラスではなく、0・1・2・3と値ごとに1つずつ条件定義してしまうと、すべての境界を網羅できません。

境界値テストを行う際は、どのようなコードが実装されており、設定した境界値に網羅性が担保されているのかを確認することが重要です。

境界値テストに関するよくある2つの質問

境界値テストに関するよくある2つの質問

境界値テストに関するよくある質問には、以下の2つが挙げられます。

  • 質問1.境界値テストとはどういう意味ですか?
  • 質問2.限界値テストとの違いを教えてください

ここではそれぞれに分けて解説しますので、詳しく見ていきましょう。

質問1.境界値テストとはどういう意味ですか?

境界値テストとは、バグやエラーなどが発生しやすい「境界値前後」へ実施するテストです。境界を見つけて境界値を定義し、テストケース作成・テスト実施の流れで行われます。

実施する際、表現方法の定義を明確化することや、内部構造によっては欠陥が見つからないおそれがある点に注意が必要です。これは、同値分割法と同時にテストすることによって精度を高めることができます。

質問2.限界値テストとの違いを教えてください

限界値テストとは、適切なテストケースを作成する手法のひとつです。仕様条件の境界となる値とその隣に対してテストを実施します。

具体的に限界値は、ある範囲の最小値・最大値を同値分割した領域の端にあたる値となり、表現としては、未満や以下などです。

たとえば、入力条件として0以上9未満のような範囲指定があった場合、設計書で「未満」と「以下」を取り違えてしまうことや、記述する際、「≧」と「>」をミスタイプしてしまうおそれがあります。

まとめ

まとめ

境界値テストに関することを解説しました。バグや欠陥が発生しやすい境界値前後へ実施するテストとなり、同値分割法と併せて実施することによって精度の上昇を期待できます。

テストを実施する場合、表現方法の定義をあらかじめ明確にしておくことや、内部構造によっては欠陥が見つからないおそれがある点に注意が必要です。境界値テストのポイントを知って、テスト精度の向上を目指しましょう。