境界値テスト:間違いやすい日付の例題つき
不具合は境界の周りで発生しやすいということを知っていますか? 境界値テストは、そのような境界の周りでの挙動を重点的にテストする手法です。
このレクチャーでは、境界値テストの基本から、そのメリットや具体的な活用事例までを解説します。
境界値テストとは
境界値テストは、仕様に記載のある条件について、境界やその近くの値を重点的にテスト対象とする手法です。 境界とは、システムの挙動が変わる境目のことです。 境界の周辺の値を境界値といいます。
たとえば、未成年を判定するシステムでは17歳と18歳の間に境界があります。 よって境界値は17歳と18歳です。
なぜ境界値テストをするのか
境界値テストによって、テストケース数を削減しつつシステムの挙動を十分にテストできます。 システムの不具合が発生する箇所は偏りがあることが知られています。 みなさんにも経験があると思いますが、システムの不具合は境界の周りで発生しがちです。 この原因は、
- 仕様の記述にミスがある
- 不等号などの実装にミスがある
などの理由によるものです。 このようにバグの温床である境界値に着目することで、効率的に不具合を検出できます。
境界値の見つけ方
境界値を見つけるためには、同値クラス分析が役立ちます。 同値クラス分析で見つけた同値クラスの最小値と最大値が境界値となるためです。
例として、ユーザー名が「3文字以上かつ32文字以下」に制限されているシステムを考えます。 このとき、同値クラスは次の通りです:
- 無効同値クラス1:0文字から2文字
- 有効同値クラス1:3文字から32文字
- 無効同値クラス2:33文字以上
それぞれの同値クラスの最小値と最大値が境界値となります:
- 2文字:無効同値クラス1の最大値
- 3文字:有効同値クラス1の最小値
- 32文字:有効同値クラス1の最大値
- 33文字:無効同値クラス2の最小値
境界値テストの例
それでは例題を解いてみましょう。 バグが起きやすい日付の例を取り上げます。 次の仕様をテストしてください。
仕様:応募期間は 01/01 00:00:00 ~ 01/10 23:59:59 までとする
まずは同値クラス分析を行います:
- 無効同値クラス1:12/31 23:59:59 以前
- 有効同値クラス1:01/01 00:00:00 ~ 01/10 23:59:59
- 無効同値クラス2:01/11 00:00:00 以降
各同値クラスの最小値と最大値を境界値として選びます:
- 12/31 23:59:59(無効同値クラス1の最大値)
- 01/01 00:00:00(有効同値クラス1の最小値)
- 01/10 23:59:59(有効同値クラス1の最大値)
- 01/11 00:00:00(無効同値クラス2の最小値)
この4つの値が境界値テストのテスト対象になります。
まとめ
このレクチャーでは、境界値テストの基本から、そのメリットや具体的な活用事例までを解説しました。
- 境界値テストでは、システムの挙動が変わる境界に着目してテストケースを設計します
- 境界や境界値は、同値クラスの最小値と最大値から見つけることができます