
【初心者向け】デシジョンテーブルについて
公開日: 2025/5/28
本記事ではテスト技法の一つの「デシジョンテーブル」について解説していきます。
1. デシジョンテーブルとは

デシジョンテーブル(decision table)は、想定されるすべての条件と、それに対して実行すべき動作を整理した表のことです。
仕様ベースのブラックボックス技法のひとつとして、仕様の論理関係、論理的条件の組み合わせを表にまとめ、論理検証の網羅性を高める方法としてよく利用されます。
日本産業標準調査会(JICS)日本産業企画のJIS X 0125:1986において、「決定表」として規定されています。
2. デシジョンテーブルのメリット

デシジョンテーブルを作るメリットとして、次の5つがあげられます。
・複雑な条件や複数の条件の組み合わせを整理することができる
・網羅性を可視化し抜け漏れがないか確認できる
・矛盾している条件の組み合わせを特定することができる
・可視化されているので他者にもわかりやすい
・すべてのテストレベルに適用できる
デシジョンテーブルを作成して活用することで、ソフトウェアテストにおける項目の明確化や、複雑な条件や組み合わせを整理することができます。
3. デシジョンテーブルのデメリット

非常に便利なデシジョンテーブルですが、デメリットもあります。
・複雑な条件や複数の条件の組み合わせが増えるとテストケースが増加する
・複雑な条件や複数の条件の組み合わせが多いと作成に時間がかかる
複雑な条件や組み合わせが多いと、作成するだけで時間がかかってしまいます。
また、それぞれの条件をクリアできているかを確認するために、テストケースが増加する可能性もあります。
4. デシジョンテーブルの活用方法

デシジョンテーブルは、以下のように活用することができます。
・仕様の抜け漏れや、条件の曖昧さを把握する
・組み合わせ条件に基づいて不具合の原因分析を行う
・テスト作業の自動化に繋げる
デシジョンテーブルは、ソフトウェアの仕様を整理して論理的な条件を明確化するため、作成の段階で仕様の抜け漏れや曖昧さに気づくことができます。
テストを実行する前に問題を把握できるため、仕様確認の手戻りを減らすことにつながります。
また、テストで不具合を検出した時に、どの組み合わせ条件がOKで、どの条件がNGになったということを明確に示すことができます。
そのため、ソフトウェア開発でありがちな組み合わせ条件の誤りを短時間で絞り込むことができ、合わせて類似の原因による誤りも発見できる可能性が高まります。
さらに、文章ではなく表で記述することから、さまざまな自動化ツールを適用しやすく、テストの効率化につながります。
5. デシジョンテーブルの構成
デシジョンテーブルは主に以下の4つの要素で構成されています。

条件を記述するため、条件記述部と呼ばれます。
図では②の部分が該当します。行動を定義していますが、行動記述部分と呼ばれます。
図では③の部分が該当します。
YesはYという文字で表され、T(True)という単語を表すのにも使用されます。Nは “No “を表し、F(False)と書かれることもあります。
各条件文のY/Nの組み合わせを提供しているのは、条件指定部分と呼ばれるからです。
条件の組み合わせに従って動作させる場合は、動作記述に「X」を指定します。
「X」の代わりに、「実行」を意味する。アクションを行わない場合は、「-」で示す。
動作を指定するため、動作指定部と呼ばれます。
例えば、ルール1では、消費者が会員であるかどうかにかかわらず、タイムサービス時間内であり、かつ割引対象商品であれば10%オフで提供することを定めています。
このデシジョンテーブルの各ルールに対してテストケースを定義することで、多くの条件をカバーすることができます。
出典:veriserve.co.jp
1.条件記述部
この部分では、考慮しなければならない要件を列挙し、説明します。図では①の部分が該当します。条件を記述するため、条件記述部と呼ばれます。
2.動作記述部
考慮する必要がある活動(出力結果)を列挙し、説明します。図では②の部分が該当します。行動を定義していますが、行動記述部分と呼ばれます。
3.条件指定部
YまたはNは、①で述べた条件が真か偽か、すなわち満たされているか否かを示します。図では③の部分が該当します。
YesはYという文字で表され、T(True)という単語を表すのにも使用されます。Nは “No “を表し、F(False)と書かれることもあります。
各条件文のY/Nの組み合わせを提供しているのは、条件指定部分と呼ばれるからです。
4.動作指定部
これは、図の④の部分が該当します。「ルール」とは、各欄に記載された条件項目のY/Nの組み合わせによって、出力結果(動作)を決定するものです。条件の組み合わせに従って動作させる場合は、動作記述に「X」を指定します。
「X」の代わりに、「実行」を意味する。アクションを行わない場合は、「-」で示す。
動作を指定するため、動作指定部と呼ばれます。
例えば、ルール1では、消費者が会員であるかどうかにかかわらず、タイムサービス時間内であり、かつ割引対象商品であれば10%オフで提供することを定めています。
このデシジョンテーブルの各ルールに対してテストケースを定義することで、多くの条件をカバーすることができます。
6. デシジョンテーブルの書き方
デシジョンテーブルの構成を理解したところで、実際の書き方を見てみましょう。
作成の順番は次の通りです。
1.条件が何かを特定して記述する
2.動作が何かを特定して記述する
3.条件の組み合わせをすべて指定する
4.条件の組み合わせに対応する動作をすべて指定する
おおまかな流れとしては、条件→動作→条件→動作の順です。
それぞれの工程で何をするのか、詳しく見てみましょう。

はじめに、条件を記載します。
上記の表は、チケット購入における割引の条件と動作について一例としてあげたものです。
仕様書に書かれている条件のうち、該当するものをすべて選び出して条件記述部にその内容を記載しましょう。
今回の場合、年齢区分が条件として仕様書に書かれていると仮定して、表内に記載しています。

続いて動作記述部に、動作を記述します。上記の表の場合、15%と5%の割引および割引なしを記載しています。
デシジョンテーブルの役割は、複雑な条件や動作を可視化し、わかりやすくすることです。動作に該当するものは、すべて動作記述部に記載するようにしてください。

洗い出した条件に対し、組み合わせを指定します。
条件が真の場合は「Y(YES)」を、偽の場合は「N(No)」を記載します。
このとき記載するのは、すべての組み合わせのパターンです。上記の場合であれば全部で3通りの条件があり、それを記載している状態です。条件の組み合わせに抜け・漏れがないように記載しましょう。

続いて、それぞれの条件の組み合わせに対して先に設定した動作を割り当てます。
条件に当てはまる場合に動作する項目に「X(execute)」を記載しましょう。
該当がない場合は「-」を記し、条件の組み合わせに対する動作が一目でわかるようにしておくことが重要です。
なお、該当する動作が無かった場合は、仕様の記述漏れか組み合わせの矛盾なので確認する必要があります。

複数の独立した条件がある場合には、テストの網羅性を高めるためにすべての組み合わせを検討します。
例えば、上記の表は、年齢(条件1)とサービスデー(条件2)の2つの条件の組み合わせを表したものです。
この条件の組み合わせを網羅するには6通りの組み合わせが必要となります。
しかし、独立した条件がさらに増えると組み合わせ数が爆発的に多くなり、すべてをテストすることが困難になります。
その場合は、実際にテストを行いたい規則を絞り込み、現実的な規則数に収めることを行います。
作成の順番は次の通りです。
1.条件が何かを特定して記述する
2.動作が何かを特定して記述する
3.条件の組み合わせをすべて指定する
4.条件の組み合わせに対応する動作をすべて指定する
おおまかな流れとしては、条件→動作→条件→動作の順です。
それぞれの工程で何をするのか、詳しく見てみましょう。
1.条件が何かを特定して記述する
はじめに、条件を記載します。
上記の表は、チケット購入における割引の条件と動作について一例としてあげたものです。
仕様書に書かれている条件のうち、該当するものをすべて選び出して条件記述部にその内容を記載しましょう。
今回の場合、年齢区分が条件として仕様書に書かれていると仮定して、表内に記載しています。
2.動作が何かを特定して記述する
続いて動作記述部に、動作を記述します。上記の表の場合、15%と5%の割引および割引なしを記載しています。
デシジョンテーブルの役割は、複雑な条件や動作を可視化し、わかりやすくすることです。動作に該当するものは、すべて動作記述部に記載するようにしてください。
3.条件の組み合わせをすべて指定する
洗い出した条件に対し、組み合わせを指定します。
条件が真の場合は「Y(YES)」を、偽の場合は「N(No)」を記載します。
このとき記載するのは、すべての組み合わせのパターンです。上記の場合であれば全部で3通りの条件があり、それを記載している状態です。条件の組み合わせに抜け・漏れがないように記載しましょう。
4.条件の組み合わせに対応する動作をすべて指定する
続いて、それぞれの条件の組み合わせに対して先に設定した動作を割り当てます。
条件に当てはまる場合に動作する項目に「X(execute)」を記載しましょう。
該当がない場合は「-」を記し、条件の組み合わせに対する動作が一目でわかるようにしておくことが重要です。
なお、該当する動作が無かった場合は、仕様の記述漏れか組み合わせの矛盾なので確認する必要があります。
5.規則を取捨選択する
複数の独立した条件がある場合には、テストの網羅性を高めるためにすべての組み合わせを検討します。
例えば、上記の表は、年齢(条件1)とサービスデー(条件2)の2つの条件の組み合わせを表したものです。
この条件の組み合わせを網羅するには6通りの組み合わせが必要となります。
しかし、独立した条件がさらに増えると組み合わせ数が爆発的に多くなり、すべてをテストすることが困難になります。
その場合は、実際にテストを行いたい規則を絞り込み、現実的な規則数に収めることを行います。
引用:https://service.shiftinc.jp/column/4950/
7. 最後に
今回は、デシジョンテーブルの使い方について解説しました。
デシジョンテーブルを使用することで、条件の組合せ漏れがなくテストパターンを作成することが可能になります。
システムの品質向上やテストスケジュールの遅延を防ぐことに非常に有効です。
最後まで読んでいただきありがとうございました。