同値分割・境界値・デシジョンテーブル・状態遷移・組み合わせ(ペアワイズ)で、少ないケースで多くを確かめる。
テストは全部の組み合わせを試すことはできません。テスト設計の技法は、少ないケースで不具合を見つけやすくするための考え方です。ここでは「年齢(整数)を入力する欄。18〜64 歳なら登録できる」という仕様を例にします。
| 技法 | 考え方 | 例(年齢の欄) |
|---|---|---|
| 同値分割 | 同じ扱いになる値をグループに分け、各グループから1つずつ選ぶ | 有効:30/無効:10(下)・70(上)・「abc」・空欄 |
| 境界値分析 | 不具合はグループの境目に多い。境目とその両隣を試す | 17・18・64・65(必要なら 19・63 も) |
| デシジョンテーブル | 条件の組み合わせと結果を表にして、抜けをなくす | 会員か×クーポンありか → 割引率 |
| 状態遷移テスト | 状態と「何をしたら次にどの状態になるか」を図にして、遷移と不正な遷移を試す | 注文:未払い→支払い済み→発送済み。発送済みからキャンセルできないか |
| ペアワイズ(組み合わせ) | 2つずつの組み合わせだけは全部出るように、ケースを減らす | OS×ブラウザ×言語の全組み合わせ 27 通り → 9 通り程度 |
| エラー推測 | 経験から不具合が出やすい入力を試す | 全角数字「18」、前後の空白、0、マイナス、とても大きな数 |
どの技法を使うか
- 入力欄・数値の範囲 → 同値分割+境界値分析(ほぼ必ずセットで使う)。
- 条件の組み合わせで結果が変わる(料金・権限) → デシジョンテーブル。
- 手順や状態がある(注文・会員登録・ワークフロー) → 状態遷移テスト。
- 環境や設定の組み合わせが多い → ペアワイズ。
- どれでも最後に → エラー推測と探索的テストで補う。
落とし穴:境界の「以上・未満」を仕様で確かめずにテストすると、期待する結果そのものが間違います。また、技法で作ったケースは「仕様に書いてあること」しか試せないので、書かれていない動き(同時操作・通信の切断・戻るボタン)は別に考えます。
面接ではこう答える
テストは全部の組み合わせを試せないので、技法を使って少ないケースで不具合を見つけやすくします。入力の範囲には同値分割と境界値分析、条件の組み合わせにはデシジョンテーブル、手順や状態がある機能には状態遷移テスト、環境の組み合わせにはペアワイズを使います。技法は仕様に書いてあることしか試せないので、最後にエラー推測と探索的テストで補います。
QAとの関わりテストケースを作るすべての場面の基本です。面接の「〜のテストケースを考えて」では、どの技法を使ったかを言うと説得力が出ます。