この記事は筆者の学習をまとめたものです。
ソフトウェアテストテストを学ぼう
- 開発者も積極的にテストをしよう
- テスト専門家とコミュニケーションできるようになろう
という考えでソフトウェアテスト技法について学んでいきます。
- 同値分割法と境界値分析
- デシジョンテーブル(本記事)
- 状態遷移テスト
- 組み合わせテスト
テスト技法:デシジョンテーブル
デシジョンテーブルは、条件の組み合わせに対してどのように動作するのかを表にまとめたものです。
また、デシジョンテーブルは決定表ともいいます。
例)映画のチケット料金
映画のチケット料金を例にデシジョンテーブルを作成してみます。
チケット料金は通常1,800円です。
ただし、小人は800円の割引、学生は300円の割引になります。
また、上映が20時以降のレイトショーについては、学生は更に200円の割引、一般は500円の割引になります。
作成したデシジョンテーブル
条件はY(Yes)とN(No)で表現しています。条件に対応する動作はXで表現しています。
1 | 2 | 3 | 4 | 5 | 6 | ||
---|---|---|---|---|---|---|---|
条件 | 小人 | Y | Y | N | N | N | N |
学生 | N | N | Y | Y | N | N | |
一般 | N | N | N | N | Y | Y | |
レイトショー | N | Y | N | Y | N | Y | |
動作 | 1,000円 | X | X | - | - | - | - |
1,300円 | - | - | - | X | - | X | |
1,500円 | - | - | X | - | - | - | |
1,800円 | - | - | - | - | X | - |
このような表にすることで、条件に対する動作が漏れていないかを確認することができます。
条件を削減したデシジョンテーブル
表を見ると、小人の料金はレイトショーに関わらず一律で1,000円であることがわかります。
もしロジックが小人かどうかを先に判定しるような場合は、条件を削減できるかもしれません。
1 | 2 | 3 | 4 | 5 | ||
---|---|---|---|---|---|---|
条件 | 小人 | Y | N | N | N | N |
学生 | N | Y | Y | N | N | |
一般 | N | N | N | Y | Y | |
レイトショー | - | N | Y | N | Y | |
動作 | 1,000円 | X | - | - | - | - |
1,300円 | - | - | X | - | X | |
1,500円 | - | X | - | - | - | |
1,800円 | - | - | - | X | - |
小人の場合、レイトショーは結果に影響しない条件としてハイフンで表しています。これにより組み合わせが 6 -> 5 に減りました。
ロジックに依存することなってしまいますが、テスト項目を削減したい場合はこのような形で削減を考えることができます。
条件を「顧客」と「レイトショー」にしたデシジョンテーブル
条件を見直してみると、、顧客区分に当てはまるのは必ず1つだけであることがわかります。
条件の「小人」「学生」「一般」を「顧客」にしてみましょう。
1 | 2 | 3 | 4 | 5 | 6 | ||
---|---|---|---|---|---|---|---|
条件 | 顧客 | 小人 | 小人 | 学生 | 学生 | 一般 | 一般 |
レイトショー | N | Y | N | Y | N | Y | |
動作 | 1,000円 | X | X | - | - | - | - |
1,300円 | - | - | - | X | - | X | |
1,500円 | - | - | X | - | - | - | |
1,800円 | - | - | - | - | X | - |
このようにY/N以外でも表すことができます。
まとめ
- デシジョンテーブルは条件の組み合わせと、それによる動作をまとめた表
- 表形式にまとめることにより、仕様の漏れや抜けを確認することができる
- ロジックを把握していれば条件を削減を検討できる
- Y/Nといった記号だけではなく、実際の値などを使って表現することもできる
参考