問題8:同値分割テスト
ある会社が従業員向けウェルネスプログラムを健康保険の支払いと組み合わせて導入しました。プログラムのルールは以下のとおりです。
- 1週間あたりのアルコール摂取量が20単位以下の従業員は、支払いから $30 の割引を受ける
- 「健康リスク評価」に記入した従業員は、支払いから $25 の割引を受ける
- 会社の健康管理プログラムに参加している従業員には以下が適用される:
- BMI が 27.5 以下の場合 $50 の割引、BMI が 30 未満の場合 $25 の割引を受ける
- 非喫煙者はさらに $50 の割引を受ける
- 禁煙クラスに参加している喫煙者は $25 の割引を受ける
- 禁煙クラスに参加していない喫煙者は $75 の追加保険料を支払う
同値分割テスト技法を適用して、この仕様の有効な入力パラメータの同値パーティションを100%カバーするために必要な最小テストケース数はいくつか?
- a) 3テストケース
- b) 4テストケース
- c) 5テストケース
- d) 12テストケース
入力パラメータと有効同値パーティションの特定
Section titled “入力パラメータと有効同値パーティションの特定”各入力パラメータとその有効同値パーティションを整理します。
P1:アルコール摂取量(週)
| パーティション | 範囲 | 適用ルール |
|---|---|---|
| P1a | ≤ 20単位 | $30 割引あり |
| P1b | > 20単位 | 割引なし |
P2:健康リスク評価の記入
| パーティション | 値 | 適用ルール |
|---|---|---|
| P2a | 記入あり(Yes) | $25 割引あり |
| P2b | 記入なし(No) | 割引なし |
P3:健康管理プログラムへの参加
| パーティション | 値 | 適用ルール |
|---|---|---|
| P3a | 参加あり(Yes) | サブルール(3.1〜3.4)が適用 |
| P3b | 参加なし(No) | サブルール適用外 |
P4:BMI(P3=Yes の場合のみ有効)
| パーティション | 範囲 | 適用ルール |
|---|---|---|
| P4a | ≤ 27.5 | $50(3.1前半)+ $25(3.1後半)= $75 割引 |
| P4b | 27.5 < BMI < 30 | $25 割引(3.1後半のみ) |
| P4c | ≥ 30 | 割引なし |
P5:喫煙状況(P3=Yes の場合のみ有効)
| パーティション | 値 | 適用ルール |
|---|---|---|
| P5a | 非喫煙者 | $50 割引 |
| P5b | 喫煙者・禁煙クラス参加あり | $25 割引 |
| P5c | 喫煙者・禁煙クラス参加なし | $75 追加保険料 |
有効パーティション合計:2 + 2 + 2 + 3 + 3 = 12
最小テストケースの設計
Section titled “最小テストケースの設計”100% カバレッジには全12パーティションを少なくとも1回ずつ網羅する必要があります。1つのテストケースで各パラメータの1パーティションを同時にカバーできますが、P4・P5は P3=Yes のときのみ有効という依存関係が制約となります。
- P4とP5はそれぞれ3パーティションを持つため、P3=Yesのテストケースが最低3件必要
- P3=No(P3b)は P4・P5 と同じテストケースに含められない
- よって P3=No をカバーするテストケースが別途1件必要
最小テストケース数 = 3件(P3=Yes)+ 1件(P3=No)= 4件
テストケースの設計
Section titled “テストケースの設計”| TC | P1 | P2 | P3 | P4 | P5 | カバーするパーティション |
|---|---|---|---|---|---|---|
| TC1 | ≤20 | Yes | Yes | ≤27.5 | 非喫煙 | P1a, P2a, P3a, P4a, P5a |
| TC2 | >20 | No | Yes | (27.5,30) | 禁煙クラス参加 | P1b, P2b, P3a, P4b, P5b |
| TC3 | ≤20 | Yes | Yes | ≥30 | 禁煙クラス未参加 | P3a, P4c, P5c |
| TC4 | >20 | No | No | N/A | N/A | P3b |
カバレッジの確認
Section titled “カバレッジの確認”| パーティション | TC1 | TC2 | TC3 | TC4 |
|---|---|---|---|---|
| P1a(≤20) | ✓ | ✓ | ||
| P1b(>20) | ✓ | ✓ | ||
| P2a(Yes) | ✓ | ✓ | ||
| P2b(No) | ✓ | ✓ | ||
| P3a(参加) | ✓ | ✓ | ✓ | |
| P3b(不参加) | ✓ | |||
| P4a(≤27.5) | ✓ | |||
| P4b(27.5-30) | ✓ | |||
| P4c(≥30) | ✓ | |||
| P5a(非喫煙) | ✓ | |||
| P5b(禁煙クラス参加) | ✓ | |||
| P5c(禁煙クラス未参加) | ✓ |
全12パーティションが4件のテストケースでカバーされます。
3件に削減できない理由
Section titled “3件に削減できない理由”P4(BMI)とP5(喫煙)のパーティションをすべてカバーするにはP3=Yesのテストケースが最低3件必要です。しかしP3=No(P3b)はP4・P5が適用されないため、P3=Yesのテストケースに混在させることができません。したがって4件未満にはできません。
b) 4テストケース
条件付きパラメータへの対応
Section titled “条件付きパラメータへの対応”同値分割では、あるパラメータの値によって別のパラメータが「有効か否か」が変わる場合(依存関係)に注意が必要です。この問題では P3=No のとき P4・P5 が適用されないため、P3=No のテストケースは独立して設計する必要があります。依存パラメータを持つ仕様では、階層的なパーティション構造を意識することが重要です。
BMI の2段階割引
Section titled “BMI の2段階割引”ルール 3.1 は「BMI ≤ 27.5 で $50」「BMI < 30 で $25」という2つの独立した割引条件を定義しています。BMI ≤ 27.5 はどちらの条件も満たすため両方の割引を受け(合計 $75)、27.5 < BMI < 30 は後者のみ($25)、BMI ≥ 30 は割引なしとなり、3つの有効パーティションが生じます。こうした複合的な境界条件は境界値分析と組み合わせて検証することが有効です。
最小テストケース数の求め方
Section titled “最小テストケース数の求め方”パラメータ間に依存関係がない場合、最小テストケース数は「最もパーティション数が多いパラメータのパーティション数」と等しくなります。ただし依存関係がある場合は、依存パラメータのカバレッジに加えて、条件を満たさない場合のテストケースを別途計上する必要があります。