スキルアップ

「デシジョンテーブルテスト」テスト技法解説

デシジョンテーブルテストとは?

デシジョンテーブルテストとは、複雑な判定ロジックの整理に有用な決定表(デシジョンテーブル)の考え方に基づき、入力条件の組み合わせと対応する出力結果を整理することでテストケースを作成する技法です。

テスト設計全般についてはこちらのページもご覧ください。
https://www.veriserve.co.jp/service/detail/testdesign.html

デシジョンテーブルテストのメリット

デシジョンテーブルテストは、複雑な条件や制約のあるソフトウェア仕様を整理し、すべての組み合わせを漏れなくテストする際に有効です。
組み合わせパターンを視覚的に分かりやすく整理できるので、テストを実施する前に、条件の組み合わせの考慮漏れを防ぐことができます。

<デシジョンテーブルテストの利用例>

ソフトウェアはさまざまな条件判定を行って動作を制御しているため、どのようなシステムであっても条件判定を行っている機能や処理であれば本技法を適用することが可能です。次に示すのはあくまで簡単な例ですが、このように条件の組み合わせによって出力結果(ソフトウェアの動作)が決定するものに、デシジョンテーブルテストを利用できます。

例)
オンラインショップのシステムの割引料率の判定(会員種別による割引、タイムサービスによる割引などの条件の組み合わせによって割引料率という結果(動作)が決定される)

デシジョンテーブルの構成

デシジョンテーブルは主に以下の4つの要素で構成されています。

① 条件記述部

考慮すべき条件を列挙して記述する部分です。図では①の部分が該当します。条件を記述するので条件記述部と呼ばれます。

② 動作記述部

考慮すべき動作(出力結果)を列挙して記述する部分です。図では②の部分が該当します。動作を記述するので動作記述部と呼ばれます。

③ 条件指定部

①の条件記述を満たすかどうか、つまり真か偽かをYかNで表します。図では③の部分が該当します。YはYesの頭文字であり、他にもT(True)と表現する場合もあります。NはNoの頭文字であり、他にもF(False)と表現する場合もあります。各条件記述のY/Nの組み合わせを指定するので、条件指定部と呼ばれます。

④ 動作指定部

図の④の部分が該当します。各列(これを"規則"と呼びます)で指定されている条件指定のY/Nの組み合わせによって決まる出力結果(動作)を示します。その条件の組み合わせによって動作する動作記述に「X」を指定します。バツではなくeXecution(実行)を意味します。「-」は逆に動作しないことを示します。動作を指定するので、動作指定部と呼びます。

例えば、規則1は、「タイムサービス時間内であり、割引対象商品であれば、会員かどうかにかかわらず、10%割引される」と読めます。このデシジョンテーブルで定義された規則ごとにテストケースを作ることで、条件の組み合わせを網羅することができます。

デシジョンテーブルの作成手順

ここからは、以下の仕様を例として、デシジョンテーブルの作り方について説明します。

  • 毎日18:00~20:00のタイムサービスの時間内であれば、以下の割引を受けることができる
  • 割引対象商品を購入した場合には、10%の割引
  • 会員の場合は、会員特典として、割引対象商品以外の商品についても5%の割引

ツールとして、通常は表計算ソフトなどが用いられますが、今回はさまざまなテスト技法を手軽に利用してテスト設計に役立てられるGIHOZというツールを使って説明します。GIHOZを使うことで、以下のステップに従って効率的にデシジョンテーブルを作ることができます。

→GIHOZの詳細はこちら

ステップ1 条件を特定し記述する

仕様の中から条件に該当するものを特定して、条件記述部に記述します。

ステップ1 条件を特定し記述する

ステップ2 動作を特定し記述する

仕様の中から動作に該当するものを特定して、動作記述部に記述します。

ステップ2 動作を特定し記述する

ステップ3 条件の組み合わせを指定する

条件の組み合わせを指定します。識別した条件記述の内容は、それぞれの条件が真か偽であるかの2値(Y/N)を取るので、2×2×2の8つが組み合わせパターンの全数になります。GIHOZでは自動ですべての組み合わせパターンを生成することができます。

ステップ3 条件の組み合わせを指定する

ステップ4 各規則の動作を指定する

条件の組み合わせに応じた動作を指定します。動作指定部で、該当する動作に「X」を入力します。

ステップ5 テーブルを整理する

デシジョンテーブルは、テーブルを整理する場合があります。特定の条件に関わらず同じ動作になる規則が複数ある場合や、矛盾する条件の組み合わせが一つの規則の中に含まれる場合などに、テーブルを整理することができます。テーブルを整理する方法の詳細はこちらのページもご覧ください。
https://gihoz.hatenablog.com/entry/2021/10/04/154005

今回の例では、特定の条件に関わらず同じ動作になる規則が複数ありますので、それらを整理します。規則1と2は「タイムサービス時間内」と「割引商品」がYであれば、「会員」がYかNかに関わらず、「10%割引」という動作が決定しますので、これらの規則を一つの規則にまとめることができます。また、規則5から8は、「タイムサービス時間内」がNであれば、「割引対象商品」と「会員」がYかNかに関わらず「割引なし」という動作が決定しますので、これらの規則も一つにまとめることができます。テーブルを整理する場合、動作に影響を与えない条件には「-」を指定します。

このデシジョンテーブルをテストケースにするには、デシジョンテーブルの規則ごとにテストケースに落とし込みます。例えば規則1からテストケースを作成すると、「19:00(タイムサービス時間内)に、商品A(割引対象商品で価格は500円)を購入して支払金額が450円(商品価格の10%割引)になることを確認する」といった内容のテストケースになります。

デシジョンテーブルテストの注意点

デシジョンテーブルを作成する際、本来組み合わせる必要がない条件まで記述すると、条件の組み合わせが多くなりテーブルの作成やレビューに時間がかかります。テスト対象の仕様から、考慮が必要な条件を適切に識別して、必要十分な条件をデシジョンテーブルに記述する必要があります。
また、上記の「ステップ5 テーブルを整理する」を実施する場合、システム内部での条件判定のフローが明確になっている必要があります。フローが不明確なままテーブルを整理するとテストの漏れに繋がる可能性がありますので、ご注意ください。

デシジョンテーブルテスト まとめ

入力条件の組み合わせと対応する出力結果を整理できるデシジョンテーブルテストについてご紹介しました。デシジョンテーブルテストは、入力条件の組み合わせに応じて出力結果が変わるような、判定ロジックの部分をテストする場合に利用すると効果的です。
GIHOZを使うと、デシジョンテーブルの記法に特化したUIで作業でき、条件の組み合わせの自動生成も可能なため、デシジョンテーブルを楽に作成できます。
漏れのないテストケースを効率よく作成するために、デシジョンテーブルテストやGIHOZをぜひご活用ください。

SNSシェア

この記事は面白かったですか?

今後の改善の参考にさせていただきます!

Ranking

ランキング

もっと見る