日頃からテスト技法ツールGIHOZをご利用いただき誠にありがとうございます。
デシジョンテーブルってよく聞くけど何?という方や、どんな時に有効活用できるのかわからないといった疑問をお持ちではないでしょうか。
この記事ではそもそもデシジョンテーブルとは何かという解説と、GIHOZのデシジョンテーブルの使い方をご紹介いたします。GIHOZではデシジョンテーブルを作成後にCSVとしてダウンロードできる他、自動でY/Nの組み合わせを作成することができます。
デシジョンテーブル・デシジョンテーブルテストとは
デシジョンテーブル(決定表)は、条件の組み合わせと対応する動作を整理するための表で、JISX0125:1986で記法が定義されています。このデシジョンテーブルを作ることで、条件の組み合わせを網羅したり、重要な組み合わせを識別してテストケースを作成するテスト技法がデシジョンテーブルテストです。条件の組み合わせパターンと動作の関係を整理できるため、複雑な判定ロジックを整理して漏れなくテストしたい場合に有効です。
デシジョンテーブルは、下図のように4つの象限で構成された表です。各象限の詳細はGIHOZのヘルプページの解説を参照してください。
デシジョンテーブルの例題
次の仕様を元に、割引率の判定処理をテストするためのデシジョンテーブルをGIHOZで作成してみましょう。
あるネットショップではタイムサービスによる割引を開催している。
18時から21時をイブニングサービスタイム、21時から0時をナイトサービスタイムとし、サービスタイム中に割引対象商品を購入した場合、通常価格よりそれぞれイブニングタイムは10%割引、ナイトタイムは15%割引で購入できる。
また、会員はサービスタイム時間内であれば会員特典として割引対象商品以外の商品についても、5%割引で購入できる。会員でなくてもタイムサービスによる割引は受けられるが、会員特典は会員のみが受けられる。
デシジョンテーブルの作成方法
まずはデシジョンテーブルの新規作成を行います。
最初に表示されるのはこの状態です。
+ボタンをクリックすることで条件の列を増やしておきます。
仕様をまとめると
・サービスタイム中か、サービスタイム外か
・対象商品かどうか
・会員かどうか
この3つの条件が割引率の判定に関係するため、上の画像のように入力します。
GIHOZでは独自の記法として、条件の子階層にサブ条件を記載することができます。今回の例題では、サービスタイムは、イブニングサービスタイム、ナイトサービスタイム、サービスタイム外の3パターンがあるので、上の画像のように子階層を作成して入力します。
動作も同じように入力していきます。
今回の例題では、割引率が15%・10%・5%・割引なし、という4パターンが判定結果としてありえますので、上の画像のように入力します。
通常はこの後右にどんどん列を追加して条件の組み合わせを作成していくのですが、全ての組み合わせパターンを手で入力していくのは大変なので自動で作成してもらいましょう。
表の上にある「組み合わせを生成」ボタンを押すことで、自動で全パターンを網羅した組み合わせを生成してくれます。
子階層(サブ条件)が存在する「サービスタイム」については、サブ条件のいずれか1つだけに「Y」が入力される形で、組み合わせが作成されます。
あとは結果を入力し、必要に応じて列の整理を行うことでデシジョンテーブルが完成です。今回作成したデシジョンテーブルは以下のリンクから閲覧可能です。GIHOZにログインしていれば、ご自分のリポジトリに複製することもできますので、ご活用ください。
20210728_デシジョンテーブルテストのサンプル - GIHOZ
この記事では、基本的なデシジョンテーブルの作成方法について解説しました。
デシジョンテーブルを上手く活用することでテスト条件の網羅やテスト条件同士の組み合わせを視覚的にも分かりやすく表現できます。
デシジョンテーブルを利用することでテストケースが読み取りやすく、網羅しているかの確認も簡単になるので是非ご活用ください。
デシジョンテーブルの応用として、表を圧縮する(列をまとめる)ことでテストケース数を削減できる場合があります。実際のソースコードでの判定処理の順序が分かっていれば圧縮が可能です。詳細は別の記事で解説したいと思いますので、ご期待ください。
今後ともGIHOZをよろしくお願いいたします。