用語集 · テスト設計
デシジョンテーブルテスト
英語: Decision table testing
別名: デシジョンテーブル, 決定表, 決定表テスト, 原因結果グラフ
定義
条件の組み合わせと、それぞれが引き起こすべきアクションを一覧にするテスト設計技法で、すべてのビジネスルールにテストを用意できます。
デシジョンテーブルテストは、複数の条件の組み合わせに依存するビジネスロジックをモデル化します。条件を行に、条件の値の関連するすべての組み合わせを列(ルール)に並べ、各ルールの期待アクションを記入します。各列が少なくとも 1 つのテストケースになります。複雑なルールの組み合わせを漏れなくテストするための、最も確実な方法です。
具体例:ローン審査
ルール:申込者はクレジットスコアが 700 以上 かつ 年収が 40,000 ドル以上なら承認されます。スコアが 700 以上でも年収がそれ未満なら、手動審査に回されます。スコアが 700 未満の既存顧客も手動審査に回されます。それ以外はすべて否決です。
Yes/No の条件が 3 つあるので、2 x 2 x 2 = 8 ルールになります。
| 条件 / アクション | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 |
|---|---|---|---|---|---|---|---|---|
| クレジットスコア >= 700 | Y | Y | Y | Y | N | N | N | N |
| 年収 >= 40,000 ドル | Y | Y | N | N | Y | Y | N | N |
| 既存顧客 | Y | N | Y | N | Y | N | Y | N |
| 承認 | X | X | ||||||
| 手動審査 | X | X | X | X | ||||
| 否決 | X | X |
表に書き出すと、要件が明確に答えていなかった疑問が浮かび上がります。たとえば R5 と R7 はどちらも手動審査なので、スコアの低い既存顧客にとって年収は結果に影響しません。これは意図どおりでしょうか。それとも、既存顧客であってもスコアも年収も低ければ否決すべきでしょうか。表によってこの疑問が見える化されるので、テスト前にプロダクトオーナーに確認できます。
テーブルの簡略化
ある条件が結果に影響しない場合は、「関係なし」を表す「-」を使ってルールを統合できます。R1 と R2 は顧客区分に関係なく承認されるので、スコア Y、年収 Y、顧客 - の 1 つのルールにまとめられます。簡略化するとテスト数は減りますが、異なるアクションのパスごとに少なくとも 1 つのテストは残します。
他の技法との組み合わせ
各条件にはそれぞれ境界があります。「スコア >= 700」は 699 と 700 で、「年収 >= 40,000 ドル」は 39,999 ドルと 40,000 ドルでテストすべきです。組み合わせはデシジョンテーブルでカバーし、具体的な値は境界値分析で選びます。
使いどころ
デシジョンテーブルは、複数の条件が相互に作用するルールに適しています。価格設定や割引、利用資格、権限、保険の見積もり、税金などです。条件が多いと表は 2^n で大きくなるため、条件をグループ化する、無関係な条件を簡略化する、あるいは独立した設定オプションにはペアワイズテストを使う、といった工夫をします。