「境界値分析」とは?
境界値分析とは、テスト技法の1つで、複数の値を特定の条件でグループ分けし、不具合が検出されやすい「境界」に焦点を当ててテストを行う手法です。システムが異常な振る舞いを示す可能性を低減し、品質を向上させることが期待されます。
例として、銀行アプリケーションにおける振込手続き画面の境界値分析を考えてみましょう。ユーザーが自分の銀行口座から他の口座へオンラインで金額を振り込む際の処理を想定しています。このシナリオでは、以下のようなテストケースが考慮されます。
振込手続き画面のテストケース例
(1) 振込額が0円: 0円を振り込もうとした場合、システムが振込不可能であるという適切なエラーメッセージを表示するか確認します。
(2) 振込額が1円:最小の有効な振込額である1円を振込した場合、システムが正しく動作するか確認します。
(3) 振込額が100,000円:一般的な振込額である100,000円を振込した場合、システムが正確に処理し、残高が正しく更新されるか確認します。
(4) 振込額が1,000,000円:上限値である1,000,000円を振込した場合、システムが適切に処理し、大きな金額の振込でも正常に動作するか確認します。

上記のテストケースでは、0円や1円といった境界値、通常範囲内の値(100,000円)、上限値(1,000,000円)においてシステムが期待通りに機能するかを検証します。
境界値分析は、具体的なデータや条件にフォーカスすることでテストの網羅性を高め、ユーザーエクスペリエンスの向上とシステムの安定性向上を目指す手法です。
なぜ境界で不具合が検出されやすいのか
境界はソフトウェア開発において不具合が起こりやすい箇所です。その理由として、境界は条件分岐や例外的なケースが集中し、システムが異なる挙動を示す可能性があるためです。さらに、ソフトウェアの制約条件が厳格であるほど、これらの境界値においてシステムが適切に対応するかが重要になり、不具合のリスクも高まります。また、ユーザーはあらゆる入力や状況で正確な動作を期待しているため、境界付近の不具合はユーザーエクスペリエンスに大きく影響します。
境界値分析は、これらの重要な領域を徹底的に検証し、ソフトウェアの信頼性を確保するための重要なテスト手法です。
境界値分析と同値分割法の違いとは?
以前ご紹介した同値分割法との違いについて解説します。
同値分割法についてはこちらをご覧ください。
⇒テスト効率を最大化するテクニック「同値分割法」とは?
まず、同値分割法は、入力データを同じ特性を持つグループに分割し、各グループから一つの代表値を選んでテストする手法です。
一方で、境界値分析はデータの境界や条件分岐が影響を与える箇所を重点的にテストする手法です。どちらもテストケースの選定において効果的であり、プロジェクトの要件や特性によって適切な手法を選択することが重要です。
同値分割法と境界値分析の主な違い
同値分割法 | 境界値分析 | |
---|---|---|
テストの焦点同値分割法 | 同じ特性を持つグループごとに代表値を選んでテストします | データの境界や条件分岐が影響を与える箇所を重点的にテストします |
テストケース の選定 | 同値クラスから1つの代表値を選んでテストします | 各境界値や条件分岐に対するテストケースを重点的に選定します |
網羅性の観点 | 同じクラス内の他の値も同様の挙動を示すと仮定して、同値クラスごとにテストします | データの境界や条件分岐が含まれる箇所をテストするため、網羅性が高まります |
同値分割法との相乗効果
境界値分析と同値分割法は組み合わせて活用することでテストの効率と効果が大きく高まります。
例えば、境界値分析で特定のエラーが発見された場合、同値分割法を使ってそのエラーがどの程度の範囲で発生するかを調べることができます。また、同値分割法で特定の挙動が確認された場合、境界値分析を使ってその挙動が極端な値でどう変化するかをテストすることも可能です。
このように、境界値分析と同値分割法を併用することで、テストのカバレッジが広がり、より多くの不具合を発見しやすくなります。効果的なソフトウェアテストのためには、これらの方法を適切に組み合わせることが重要です。
境界値分析の基本と成功の秘訣
境界値分析は不具合を発見しやすくするための手法ですが、効果的な境界値テストを行うためには、境界値分析の基本の流れとポイントを押さえることが重要です。
(1) 仕様の理解とテストケースの設計
境界値分析を始める前に、システムの機能や仕様を理解します。特に、入力データの範囲や条件分岐がどのように影響を与えるかを把握します。その上で、仕様に基づいて境界値を含むテストケースを設計します。
(2)境界値の特定
テストするデータの範囲において、境界値を特定します。これには、最小値、最大値、およびそれらの直前や直後の値など、システムの挙動が変わる可能性のある値を特定します。
【ポイント】テストケースを適切に設計するためには、仕様に基づいて適切な境界値を選定することが重要です。範囲全体を網羅できるようバランスを考えて選定しましょう。
(3)テストケースの作成
特定した境界値を元にして、テストケースを作成します。各境界値において期待される挙動やエラー処理に焦点を当て、異常なケースも含めて、網羅的にテストケースを検討します。
【ポイント】境界値だけでなく、境界値の直前や直後の値もテストに含めることで、システムが連続的に安定しているかどうかを確認することができます。
(4)テストの実施
作成したテストケースを元に、境界値分析を実施します。各境界値においてシステムが正しく動作し、異常な場合には適切にエラーを検知するかどうかを確認します。
(5) 結果の検証とレポート
テスト結果を検証し、発見された不具合や問題を正確に報告します。特に、境界値において発生した問題は明確かつ適切な形で報告することが必要です。
境界値分析にはいくつかの注意点があります。ここでは、境界値分析を行う際に見落とされがちなポイントについて説明します。
(1) 非整数または非数値データの考慮
通常、整数や数値データに焦点を当てますが、非数値データ(文字列や特殊文字など)の境界も重要です。これらのデータに対してもシステムが適切に処理できるかどうかを確認する必要があります。その他にも以下のような境界があります。
位置の境界…端、境目。(画面端にオブジェクトを配置する、など)
状態の境界…状態と状態の境目。(待機中→スキャン中→印刷中→待機中と状態遷移するコピー機で、スキャン中から印刷中に変わる瞬間(前後)に他の操作を割り込ませる、など)
(2) 時間や日付データの境界値
時間や日付を扱うシステムでは、月末、年末、閏年といった特別な時点での挙動をテストすることが重要です。
(3) 異常なデータへの対応
通常のデータだけでなく、極端に大きな値や不正な形式のデータに対するシステムの反応もテストします。
(4) 複数の条件が組み合わさる場合のテスト
システムが複数の条件を同時に処理する場合、それらの条件が重なる境界値もテストして、複雑な条件での不具合を排除します。
(5) データの取り違えに注意
境界値分析では、似たような値を持つ異なるデータが存在することがあります。例えば、ある機能に対する上限値と別の機能に対する下限値が似ている場合、これらの似た境界値を間違えてテストケースに使うと、本来のテストの目的を見失い、正確な結果を得られなくなる恐れがあります。特に、条件やデータの種類が似ているが微妙に異なる場合、それぞれを正確に識別し、適切なテストケースを設定する必要があります。このような混同を避けるためには、テストデータを慎重に選び、それぞれの目的に合ったテストケースを作成することが重要です。
これらのポイントに留意して境界値分析を行うことで、システムの信頼性を高め、重要な不具合を見逃さないようにすることができます。
境界値だけでのテストでは不具合を見逃すことがあります。ソフトウェアテスト教科書 JSTQB Foundation 第4版 シラバス2018対応では、「境界値分析を用いてテストケースを設計するとき、「境界値は同値パーティションの端の値」をどのように解釈するかによって、複数の考え方があります。」と解説しています。システムの境界値だけではなく、その周辺の挙動をテストするためには「2値+中間値」や「3値」など、複数の方法があります。
(1) 2値+中間値
この方法では、テスト対象の範囲の最小値と最大値、およびこれらの値の直前および直後の中間値をテストします。具体的には、テスト対象の最小値の直前の無効な値と最小値自体、そして最大値の直前の値と最大値自体を含む4つの値を選んでテストする方法です。これにより、境界付近の値でのシステムの挙動を詳細に検証できます。
(2) 3値
3値の方法では、ある特定の境界値とその直前および直後の値をテストします。この手法では、境界値を中心とした3つの連続する値を選んでテストします。これにより、境界値自体だけでなく、その周辺でのシステムの挙動も詳しく検証することができます。
これらの方法を銀行アプリケーションの振り込み画面のテストに適用すると、以下のような例が考えられます。
適用例 2値+中間値
最小振込額が1円、最大額が1,000,000円の場合、0円(最小値の直前)、1円(最小値)、999,999円(最大値の直前)、1,000,000円(最大値)をテストします。

適用例 3値
最小振り込み額が1円の場合、0円(最小値の直前)、1円(最小値)、2円(最小値の直後)をテストし、同様に最大額に対しても適用します。

振込金額の最小値と最大値の境界付近でシステムが適切に機能するか、また振込額の増減に伴うシステムの挙動が正しいかを検証します。これによりユーザーが一般的な金額や極端に小さい、もしくは大きな金額を振り込む際のシステムの安定性と信頼性を確認することが可能になります。
この記事では、境界値分析の重要性と同値分割法との違いを解説し、境界値分析がシステムの信頼性を向上させ、ユーザーエクスペリエンスを改善するのにどのように役立つかをご紹介しました。プロジェクトの要件や状況に応じた最適なテスト技法を活用しましょう。
PTWは、WEBサイトやモバイルアプリ、IoT機器、組み込み機器など豊富な検証実績があります。お客様の慣習やプロダクト特性を考慮し、テスト計画から実行までトータルでご提案します。PTWのソフトウェアテストに関するサービスについて詳しく知りたい方は、下記ページをご覧いただき、お気軽にお問い合わせください。
