デシジョンテーブル(決定表)とは|その概要から作り方までわかりやすくご紹介

デシジョンテーブル(決定表)とは|その概要から作り方までわかりやすくご紹介

複数の条件が絡み合い、また条件によって結果が異なるシステムでは入出力のパターンが膨大になるため、その仕様を把握し理解するのは簡単なことではありません。したがって、そうした複雑なシステムに対してソフトウェアテストを行う場合は、テストの設計を開始する前に、まずは仕様をもとに組み合わせを整理することが必要です。
その際に有効となるのがデシジョンテーブル(決定表)です。

本記事では、複雑な条件・結果を整理し、それが仕様通りに動作するかどうかを確かめる上で有効なデシジョンテーブルについて、その概要や基本的なフォーマット、それをベースとした作り方・書き方についてご紹介します。

デシジョンテーブル(決定表)とは

デシジョンテーブル(決定表)とは、対象が取り得る条件(入力)と、その結果の動作(出力)を洗い出した上で整理し、マトリクス上に一覧化した表のことです。
条件と動作の関係を網羅的に視覚化することで、複雑な条件と動作の組み合わせが整理され、そのロジックの理解を容易にするとともに、抜け漏れを防ぐことができるというメリットがあります。

デシジョンテーブルは日本産業規格のJIS X 0125:1986において「決定表」として規格化されており、日本語で「決定表」と呼ばれることもあります。またソフトウェアテストにおいては、ブラックボックステスト技法のひとつである「デシジョンテーブルテスト」で活用されます。

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

デシジョンテーブルテストとは、テスト対象の条件と結果の組み合わせをデシジョンテーブルを使って整理し、各組み合わせを元にテストケースを導出するテスト技法のことです。
デシジョンテーブルテストはすべてのテストレベルに適用することができます。

条件(入力)と動作(出力)が複数存在し、また条件によって動作が変わるシステムの場合、その複雑な条件と動作の関係を把握し網羅的にカバーするのが難しくなりますが、デシジョンテーブルを用いてそれらを整理することで、網羅性の高いテストケースの設計を容易にします。

また条件と動作の組み合わせを洗い出してデシジョンテーブルを作成する過程では、あり得ない組み合わせを導出することで、不要なテストケースの作成・実行を防止することにも役立ちます。

デシジョンテーブルテストはブラックボックステスト技法のひとつとして位置付けられますが、同じくブラックボックステスト技法に分類される同値分割法や境界値分析と合わせて以下の記事でご紹介していますので、よろしければ併せてご参照ください。
ソフトウェアテスト技法のひとつ、ブラックボックステストとは|その特徴や技法について

デシジョンテーブルの基本フォーマットと作り方

デシジョンテーブルには基本的なフォーマットがあります。
ここではわかりやすいように以下の仕様を例として、デシジョンテーブルの基本フォーマットとその作り方・書き方についてご紹介します。

例:あるテーマパークにおける、料金計算の仕様
・未成年(20歳未満)は1000円
・20~59歳は1500円
・60歳以上は1200円
・クーポン利用:500円割引


上記の仕様は、デシジョンテーブルのフォーマットでは以下のように表すことができます。

デシジョンテーブル(決定表)の例
拡大画像はこちら

デシジョンテーブルの一般的な表記法と、その作り方

デシジョンテーブルでは、その条件と動作を整理する上でYやN、Xといった記号を一般的に使用しますが、各記号は以下のことを意味します。

条件
Y:条件が真(True)であること ※Tや1と記述することもある
N:条件が偽(False)であること ※Nや0と記述することもある
-:条件が動作に影響しない ※N/Aと記述することもある


動作
X:アクションが発生すること ※YやT、1、○などと記述することもある
空白:アクションが発生しないこと ※N、F、0、-などと記述することもある


例えば、デシジョンテーブルの1の列に着目すると、以下のように記述されています。
条件:未成年(20歳未満)がY、その他条件はN
動作:1000円がY、その他動作は空白


これは条件が「未成年(20歳未満)」であり、クーポン利用は偽(クーポン利用無し)、その結果として料金は「1000円」であるということを表しています。

また上の仕様に基づいて「20~59歳」で「クーポンを利用しなかった場合」の料金が「1500円」となることをデシジョンテーブルで表すには、条件における「20~59歳」の行には「Y(真)」を入力し、同じ列の「クーポン利用」には「N(偽)」を、動作には「1500円」に「X」を入力します。
※デシジョンテーブルにおける2の列が該当します

上記で取り上げたのは数ある条件と動作の組み合わせのうちの一つですが、同様に他の条件と動作の組み合わせをフォーマットに合わせて一覧化することで、デシジョンテーブルを作ることができます。

今回の例であれば、年齢による条件は「未成年(20才未満)」「20~59歳」「60才以上」の3パターンであり、また各年齢に対して「クーポンを利用する場合」と「クーポンを利用しない場合」の2パターンが存在することから、組み合わせの総数は3パターン×2パターンの計6パターンとなります。
この条件6パターンをYとNを用いて上のデシジョンテーブルのフォーマットに入力し、その下に取り得る動作(今回の場合は、各条件における料金)を一覧化し、該当する動作にXを入力することで、今回のデシジョンテーブルが出来上がります。
上部には条件の組み合わせを、下部にはその結果である動作を入力すると考えるとわかりやすいでしょう。

デシジョンテーブルの作成における注意点

今回はわかりやすく説明するために条件が6パターンとシンプルな仕様を例としましたが、条件や動作の数が増え複雑になればなるほど乗算的に多くの組み合わせが生じるため注意が必要です。
もし組み合わせがあまりにも多くなりすぎる場合は、デシジョンテーブルを複数に分けて記述することもあります。

またデシジョンテーブルのなかに起こりえない組み合わせや、結果に影響しない不要な列が含まれることもありますが、それらを削除することで無駄なテストケースを省くことができ、ときには大幅にテストケース数を圧縮できることもあります。
このため、特に組み合わせ数が多いときは不要な組み合わせが無いか入念に確認するようにしましょう。

さいごに

デシジョンテーブルは、対象が取り得る条件と、その結果動作との組み合わせを整理し一覧化した表であり、複雑な条件と動作を視覚化し表現するのに役立ちます。仕様を考える上でも、システムの仕様を理解する上でも、どちらの場合でも活用することが可能です。

テストにおいてデシジョンテーブルを用いる場合は、システムが仕様上取り得る組み合わせを網羅的にカバーするようテストを設計することでテストケースの抜け漏れを防ぐことができます。
また同時に起こりえない組み合わせを明らかにすることで不要なテストケースの作成防止にもつながることから、テスト設計においては必須のテクニックと言えるでしょう。

SHIFT ASIAでは、ソフトウェア品質保証・第三者検証のリーディングカンパニーである株式会社SHIFT(東証一部上場)の品質保証ナレッジをベースに、長年に渡り国内外で培ってきた品質保証の経験とハイレベルなエンジニアの技術力を背景とした、高品質かつスピーディなソフトウェアのテストや開発を強みとしています。
ソフトウェアの品質に関してお困りのことがありましたら、ぜひお気軽にお問い合わせください。

お問い合わせについて
https://shiftasia.com/ja/contact-ja/

会社資料ダウンロードについて
https://shiftasia.com/ja/resources/company-introduction-ja/