最終更新日:2023年06月05日 / 投稿日:2023年03月24日

プログラムを作るときには「1年から6年までの学年入力」「文字数が50文字以上500文字以下の記入欄」など、数値範囲の条件が定められるケースが存在します。数値範囲はバグが発生しやすいため、問題を未然に防ぐテストの方法として、境界値テストが存在します。

この記事では境界値テストの内容や、実施するメリット、実施のステップや注意点について解説します。また、境界値テストと同時に実施されることが多い同値分割法についても説明します。

 

1.境界値テストとは

境界値テストとは、指定条件の境界となる値とその前後の値に対して実施されるテスト技法であり、ブラックボックステストを行う際に使われる手法の1つです。境界値分析・限界値テストとも呼ばれます。

境界値テストは主に4つの値をテスト対象箇所とし、ソースコードが正しく機能するか否かをチェックします。

【境界値テストでピックアップされる値】

  • 境界の最大値の1つ上の値
  • 境界の最大値
  • 境界の最小値
  • 境界の最小値の1つ下の値

システム設計によっては、指定条件や入力値の組み合わせが膨大になるケースが珍しくありません。もっともバグが発生しやすい境界部分を重点的にチェックすることでテスト工数削減につながり、効率的な欠陥の検出が可能です。

 

1-1.同値分割法との違い

境界値テストと同じくブラックボックステストで用いられる手法の1つが、同値分割法です。同値分割法は、同様の出力結果が生じる値グループ(同値クラス・同値パーティション)の中から、代表値を取り出してテストを行います。

同値分割法のメリットは、機能テストの回数を大きく削減できる点です。

例えば、「20%以上40%以下」という処理条件の場合、20%~40%までの有効同値クラスをすべてチェックするとなると、21回の機能テストが必要です。同値分割法で有効同値をチェックする場合、代表値として10%を取り出してテストを行い、バグや欠陥があるかを確認することでテスト回数を減らします。

同様に0%~19%・41%~100%の無効同値クラスをチェックするときも、代表値を取り出してチェックを行えばテスト回数を削減可能です。

ブラックボックステストを実施する際には、境界値テストと同値分割法を合わせて使うとよりテストデータの精度を上げられます。
テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら

 

 

2.境界値テストを行うメリット

境界値テストを行う最大のメリットは、ソフトウェアのバグや欠陥を効率よく見つけられることです。

境界値テストでは、バグや欠陥が発生しやすい条件づけの境界値前後を対象範囲として指定し、テストを行います。境界付近にバグや欠陥が発生しやすい理由は、主に下記の2つです。

・境界の指定条件に誤解が生じやすいため

境界の指定条件には、「以上」「~より大きい」「以下」「~より小さい」「未満」「~と同等」など、複数の記述方法があります。記述のルールが明確になっていないと誤解が生じやすく、想定外の動作をする場合があります。

・コーディング時に記述ミスが起こりやすいため

プログラムの仕様条件を正確に理解していても、コーディング時の設定ミスを完全に防ぐことは困難です。境界を表す記号や数字などは特に記述ミスを起こしやすく、開発仕様書の指示とは異なる条件を指定してしまうケースは珍しくありません。

 

3.境界値テストを実施するための3ステップ

境界値テストの流れは、大きく「境界探し」「境界値設定」「テストケース作成」の3つに分かれます。境界の指定条件によってテストに使用する値は変化しますが、テストステップの基本は同じです。ステップを分かりやすくするために、まとめ買い用のプログラムを作るという例で考えてみましょう。仕様ではまとめ買いの最低個数は10個、上限の個数は50個と指定されています。

 

3-1.境界を見つける

まずは動作の結果が同じになるグループ(同値クラス)に分割し、プログラムの動作が変わる指定条件の境界を探しましょう。10以上50以下という条件づけをする場合、0~9の値・10~50の値・51以上の値に分割でき、10と50の付近に境界が生じます。

仕様書では「以上」「~より大きい」「以下」「~より小さい」「未満」「~と同等」など、あいまいな記述が用いられているケースもあります。人によって解釈が異なりやすい表現は、視覚で理解しやすい数直線などの図を用いて整理し、テストすべき値を具体的かつ正確に把握することが大切です。

 

3-2.境界値を設定する

境界を見つけたら、境界の前後の値を境界値として設定しましょう。境界値は有効同値クラスにおける最小値と最大値に当たります。10以上50以下という条件づけをする場合、「9」と「10」、「50」と「51」が境界値です。

1つの境界に対して3つ以上の境界値を取る方法もありますが、一般的には2つの値があれば十分とされます。バグや欠陥のリスクが高いと判断できる境界に対しては、3つ以上の値を取ってテストするとよいでしょう。10以上50以下という条件で3つの境界値を設定する場合、「9」と「10」に「11」、「50」と「51」に「49」を加えます。

 

3-3.テストケースを作成する

境界値を設定したら、テストケースを作成します。テストで使用する値の候補は、下記の3種類です。

【テストケースで使用する値の候補】

  • 境界値
  • 境界値の1つ上
  • 境界値の1つ下

10以上50以下という条件づけをする場合、下記のように入力条件となる値と、実際にテストした際の動作として期待する結果を記述します。

テストケースの作成例1
個数(input)9
有効/無効無効
テストケースの意図エラーの上限値
期待結果エラーメッセージの表示
テストケースの作成例2
個数(input)10
有効/無効有効
テストケースの意図入力可能の下限値
期待結果入力データを受けつける
テストケースの作成例3
個数(input)50
有効/無効有効
テストケースの意図入力可能の上限値
期待結果入力データを受けつける
テストケースの作成例4
個数(input)51
有効/無効無効
テストケースの意図エラーの下限値
期待結果エラーメッセージの表示

テストケース以外にテストの実施手順も別途準備しておくと、よりミスが起こりにくくなります。

 

4.境界値テストを実施するときの注意点

境界値テストは、バグや欠陥を発見するために重要なテストです。3ステップの流れ通りに実施すれば効率的にテストが実施できる一方で、テスト時に注意しておくべき点も存在します。2つの点に気を付けてテスト作業を行うことで、後でバグが発生し、大がかりな修正が必要になるといった問題を防ぎやすくなるでしょう。

 

4-1.表現に注意する

境界の表現方法は仕様書によってさまざまです。誤解が生じないよう、表現方法の定義を明確化し共有しましょう。「1より大きい50以下の数字」などの分かりづらい指示があった場合、コーディングの過程で本来の指示とは異なる条件づけがされる可能性があります。

また境界は、「=」「≠」「<」「>」といった等号・不等号を使用した条件式でコーディングされます。正確な知識や豊富な経験がある人でも、認識ミスやタイプミスによるエラーを完全にはなくせません。境界値テストでは、認識の相違や想定外のミスがあるのを前提として、細かく確認しながら実施することが大切です。

 

4-2.内部構造によっては欠陥が見つからないことがある

条件文で等号・不等号を用いていないなど、コーディングの仕方によっては境界値テストで欠陥を検出できないケースがあります。例えば、0~9の値・10~50の値・51以上といった同値クラスごとではなく、0・1・2・3……と値ごとに1つずつ条件づけを行っていたケースです。

あらゆる値に対して個別に条件づけが施されていた場合、仕様書の記載内容から同値クラスを割り出して境界値をテストしても、すべての境界を網羅できません。境界値テストを行う際は、どのようなコードが実装されているか、設定した境界値に網羅性があるかを確認することがポイントです。

 

まとめ

境界値テストとは、バグや欠陥が発生しやすい境界値前後へのテストです。ブラックボックステストを行う際に使われる手法の1つで、同値分割法と合わせてテストすることで精度を向上できます。

境界値テストは境界を見つけて境界値を設定し、テストケースを作成するというステップで行われます。実施するときの注意点には、テスト前に表現方法の定義を明確化し共有する点や、プログラムの内部構造次第で欠陥が見つからない可能性がある点があります。

監修:六元素情報システム株式会社
監修
六元素情報システム株式会社 ATgoチーム

六元素情報システムは、システム開発現場で培った高い技術力と実務経験を持つ企業です。その知見を活かして開発したテスト自動化ツールATgo(特許6830701号)の提供を通して、日本のシステム開発における生産性向上と品質向上に貢献します。

コーポレートサイト:https://www.rgsis.com/
ATgo Facebook:https://www.facebook.com/ATgo.rgs/
ATgo X(旧Twitter):https://twitter.com/ATgo_rgs

テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら
テスト自動化ツールATgo

1か月無料ですべての機能をお試しいただけます。お気軽にお問い合わせください。