境界値テストとは|実施のメリットと流れ・同値分割法についても解説
COLUMN
最終更新日:2025年03月26日 / 投稿日: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%の無効同値クラスをチェックするときも、代表値を取り出してチェックを行えばテスト回数を削減可能です。
ブラックボックステストを実施する際には、境界値テストと同値分割法を合わせて使うとよりテストデータの精度を上げられます。
2.境界値テストを行うメリット
境界値テストを行う最大のメリットは、ソフトウェアのバグや欠陥を効率よく見つけられることです。
境界値テストでは、バグや欠陥が発生しやすい条件づけの境界値前後を対象範囲として指定し、テストを行います。境界付近にバグや欠陥が発生しやすい理由は、主に下記の2つです。
・境界の指定条件に誤解が生じやすいため
境界の指定条件には、「以上」「~より大きい」「以下」「~より小さい」「未満」「~と同等」など、複数の記述方法があります。記述のルールが明確になっていないと誤解が生じやすく、想定外の動作をする場合があります。
・コーディング時に記述ミスが起こりやすいため
テスト自動化における境界値テストのメリット
テスト自動化において、境界値分析を適用することで、効率的に網羅性の高いテストを実現できます。以下のポイントを押さえておくと効果的です。
1.テストケースの自動生成
境界値テストは、明確なパターン(最小値、最大値、閾値付近など)を持つため、スクリプトやデータ駆動テストを活用して自動生成が可能です。例えば、Selenium や Playwright などのテストフレームワークと組み合わせれば、動的にテストデータを作成し実行できます。
2.CI/CD での自動実行
境界値テストを CI/CD パイプラインに組み込むことで、コード変更時に即座にリグレッションテストを実行できます。これにより、境界値のバグを早期に検出し、リリースの安定性を向上させられます。
リグレッションテストとは?省略によるリスクと自動化のメリット
3.組み合わせテストとの併用
境界値分析単体ではカバーしきれない複雑な入力条件に対応するため、ペアワイズテストや状態遷移テストと併用すると効果的です。自動化ツールを活用することで、大量の組み合わせを効率よく検証できます。
4.モック・スタブを活用した効率化
API や外部サービスと連携する場合、本番環境での境界値テストが難しいことがあります。この場合、モックやスタブを用いた自動テストを実装することで、本番環境と同様の挙動を模擬しつつ、効率的に境界値を検証できます。
スタブとは?ドライバ・モックとの違いや活用される主なテスト手法
テスト自動化なら「ATgo」におまかせ!
Webアプリケーションのテストをもっと簡単・効率的にしませんか?ATgoはローコードで簡単に操作できるWebアプリケーションテスト自動化ツールです。
これひとつでUIテスト・APIテストの実行と比較検証を自動化。システム開発における工数削減と品質確保をサポートします。
- 初心者もプロも使いやすいローコード設計
- セキュアなテスト環境にも素早く簡単導入
- ワンクリックでテスト実行&エビデンスを自動収集
- スクリプト生成AI機能やAI画像比較機能でもっと便利に
- リグレッションテスト等で大きな効果を発揮
- 日本の現場にフィットする安心の国産ツール
リグレッションテスト等で大きな効果を発揮
初回に作成したスクリプトを再利用することで、テストを実行すればするほど効率化。手動テストに比べてコスト・工数の削減が可能です。インストールなしでご利用いただけるので、素早く簡単に導入できます。ATgoでWebアプリケーションテストの効率化を今すぐお試しください。
テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら
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つで、同値分割法と合わせてテストすることで精度を向上できます。
境界値テストは境界を見つけて境界値を設定し、テストケースを作成するというステップで行われます。実施するときの注意点には、テスト前に表現方法の定義を明確化し共有する点や、プログラムの内部構造次第で欠陥が見つからない可能性がある点があります。