同値分割法・境界値分析の基礎知識
はじめに
ソフトウェアテスト技法練習帳を解き進めるにあたって、基本的な技法を再度学びなおして記事としてアウトプットしました。
あくまで基礎的な内容ですが参考になれば。
同値分割法とは
同値分割法(Equivalence Partitioning)は、入力値の範囲や種類を等価のクラス(同値クラス)に分割し、それらの代表値をテストケースとして採用することでテスト量の削減や効率化を図る手法である。
例:年齢によってチケットの値段が変化するシステムの場合
- 大人(12歳以上):1200円
- 子供(4-11歳):800円
- 未満児(3歳以下):無料
テストする年齢の範囲は以下のように区切ることができる(一例)
- 12以上
- 4~11
- 0~3
- 負の数
こうして同値クラスを分類した後に、各クラス内の代表値を選択してテストケースとすることで、基本的な範囲をカバーすることができる。すべての値を網羅しようとした場合と比較して、テストケースを効率的に削ることができた。
代表値とは
各クラスの内実際にテストケースに利用するために選定する値のこと。クラスの中で一般的な値を代表値にすることが多い。先述した例で言うところの0などはチケットを購入するシステムの中では平均的ではないため、代表値としては適切とは言えない。ただし、0のようなクラスとクラスの境界にある値を用いてテストすることは非常に有効であり、別途境界値分析として手法が存在する。
境界値分析とは
境界値分析(Boundary Value Analysis)は、同値クラスの境界(端)に着目してテストケースを設計する手法である。境界付近はバグの発生率が高いという前提に基づいてテストケースを作成していく手法になる。
先述したチケット購入システムの話で言えば、境界値は以下の図に示した0,4,12の部分になる。
また、境界値そのものに加えて、そのそばの値もテストすることで効果的にバグを見つけられることが多いため、テストケースとして選択されることがある。その際に選択された、最小の境界値の1つ下と最大の境界値の1つ上の値はOFFポイントの値と呼ばれる。なお、境界値そのもの値はONポイントと呼ぶ。先ほどの図中において、子供の区間で言うと3,12がそれぞれOFFポイント、4,11がONポイントとなる。
同値分割法と境界値分析を組み合わせる
実務においてテストケースを考えていく際、同値分割法と境界値分析を組み合わせることで、テストケースの増加を適切に抑えながら効果的なテストを行うことができる。
例えば、同値分割法によって、クラスの分類と典型的な値を用いたテストケースの洗い出しを行い、境界値分析を用いることでバグが潜みがちな境界値付近の値を用いたテストケースを追加する、という流れになる。
流れの一例
- 同値クラスに分類
- 代表値を選定し、基本的なテストケースを作成
- 境界値分析により協会を特定し、テストケースを追加
- On・Offポイントに着目することでバグをとらえやすい
- テストを実施
参考記事
Discussion