ソフトウェアテストの基礎技法の一つである「同値分割法(Equivalence Partitioning)」。
前回の記事では、単一入力の場合のテストケース設計を学びました。
今回は、複数の入力条件がある場合の同値分割法について詳しく解説します。
ISTQB試験でも出題されやすいポイントなので、例題を使って一緒に整理していきましょう。
🔹同値分割法(Equivalence Partitioning)とは?
同値分割法とは、入力値を「有効」と「無効」などのグループに分けて、代表的な値でテストを行う手法です。
目的はシンプル:
「少ないテストケースで、入力条件をすべて網羅すること」
🧩複数入力を持つ場合の考え方
ISTQB Foundation試験では、単一入力だけでなく、
「複数の入力条件を組み合わせて最小限のテストケースを導く問題」
がよく出題されます。
考え方のポイントは次の通りです:
-
すべての入力条件(パラメータ)を確認する
-
それぞれに存在する「有効」「無効」な値の範囲を洗い出す
-
各条件が最低1回はテストされるように、最小限の組み合わせを作る
💡例題1:アパート検索フォーム
問題文
次のようなアパート検索フォームをテストするとします:
-
入力①:階数(Floor)
-
Ground floor(1階)
-
First floor(2階)
-
Second or higher(3階以上)
-
-
入力②:庭の種類(Garden type)
-
No garden(庭なし)
-
Small garden(小さい庭)
-
Large garden(大きい庭)
-
ただし、次の制約があります:
1階(Ground floor)のアパートだけが庭を持つ。
つまり、2階以上では「Garden type」は選択できない。
条件整理
|
入力項目 |
有効な値 |
無効な組み合わせ |
|---|---|---|
|
Floor |
Ground / First / Second+ |
なし |
|
Garden |
No / Small / Large |
First floorやSecond+ではGarden選択不可 |
組み合わせと最小テストケース
-
Ground floor + Small garden
-
Ground floor + Large garden
-
First floor + No garden
-
Second or higher + No garden
✅ 合計:4テストケース
この4ケースで、すべての階数と庭タイプを1回以上テストでき、
無効な組み合わせ(例:2階+Large garden)は排除されています。
正解:4テストケース(100%同値分割カバレッジ)
💡例題2:フライト予約システム
次は、3つの入力条件がある少し複雑な例です。
問題文
以下の制約に従う、航空会社のフライト予約アプリをテストします。
-
予約できるのは社員(staff)のみ
-
Staff / Non-staff
-
-
平日(月〜金)のみ予約可能
-
Weekday / Weekend
-
-
9:00〜17:00のみ予約可能
-
09:00〜17:00(有効)
-
00:00〜08:59(無効)
-
17:01〜23:59(無効)
-
条件整理
|
入力項目 |
有効値 |
無効値 |
|---|---|---|
|
Staff |
Staff |
Non-staff |
|
Day |
Weekday |
Weekend |
|
Time |
09:00–17:00 |
Before 9:00 / After 17:00 |
組み合わせの作り方
複数入力を組み合わせる場合も、原則は同じです。
「各入力のパーティションが1回は登場するように、最小限のテストケースを作る」
最小テストケース例
|
No |
Staff |
Day |
Time |
結果 |
|---|---|---|---|---|
|
1 |
Staff |
Weekday |
11:00 |
✅ 有効 |
|
2 |
Staff |
Weekday |
19:00 |
❌ 時間外 |
|
3 |
Staff |
Weekend |
13:00 |
❌ 曜日違い |
|
4 |
Non-staff |
Weekday |
10:00 |
❌ 権限なし |
✅ 合計:4テストケース
これで、すべての入力条件(3入力 × 各分類)を網羅できています。
正解:4テストケース(100%同値分割カバレッジ)
🧠試験対策ポイント
-
「100% Equivalence Partition Coverage」とは、
各入力の有効/無効パーティションを最低1回ずつテストすること。
-
目的は網羅ではなく最小化。
→ すべての条件を1度はテストしつつ、不要な組み合わせを排除する。
-
無効な組み合わせを除外できるかがカギ。
→ 問題文に書かれた「制約条件(constraints)」をよく読む。
✅まとめ
|
学んだこと |
内容 |
|---|---|
|
同値分割法の目的 |
少ないテストケースで十分なカバレッジを確保する |
|
複数入力の扱い方 |
各入力パーティションを1回以上組み合わせる |
|
最小化のコツ |
制約を理解して、無効な組み合わせを除外 |
|
試験の出題傾向 |
複数入力×制約条件の組み合わせ問題が多い |
💬補足:実務での応用
この考え方は、Webフォームや予約システムのテスト設計で非常に役立ちます。
たとえば:
-
ユーザー登録フォーム(年齢+メール形式+国籍)
-
支払い画面(カードタイプ+通貨+残高)
-
予約アプリ(日付+時間帯+人数)
などでも、同値分割法で「最小限のテストセット」を設計することで、
効率的で重複のないテスト計画が立てられます。



コメント