今回はブラックボックステストの技法のひとつであるデシジョンテーブルについて説明します。同値分割法・境界値分析では、単一条件に着目したテスト技法でしたが、デシジョンテーブルテストは複数条件に着目したテストとなります。
1.デシジョンテーブルとは
デシジョンテーブル(決定表とも呼ばれる)は、想定されるさまざまな複数の条件(入力)とその結果のソフトウェアの動作(出力)を整理するために表にまとめたものです。
ソフトウェアの仕様の論理関係、論理的条件の組み合わせをまとめた表を作成することで、論理検証の網羅性を高めてくれます。上流工程において、デシジョンテーブルを用いてシステムの挙動をまとめておくなら、その後の開発やテストがスムーズに行えます。
デシジョンテーブルは「JIS X 0125」において形式や記述方法が規格化されています。この詳細については、後述のデシジョンテーブルの作り方という項目で説明します。
デシジョンテーブルをもとに、想定される入出力の組み合わせを規則ごとに実行するテストケースを設計するテストを「デシジョンテーブルテスト」と呼んでいます。デシジョンテーブルテストは、複数の条件が組み合わさり、システムの動作が変化するようなソフトウェアを検証するのに役立ちます。また、起こりえない条件の組み合わせを把握し、それらをテストケースから省き、検証を効率化することにも役立ちます。
2.デシジョンテーブルの作り方
デシジョンテーブルのフォーマットは以下のようなものです。
表現見出し… | 決定表の内容や用途を記載。 |
初期化部… | 対象となる条件を全て記載するために実行するべき動作を記載。 |
条件… | 条件記述部と条件指定を総括したもの。 |
条件記述部… | 考慮すべき条件やデータを記載。命題形式で記載する制限指定と変数形式で記載する拡張形式がある。 |
条件指定… | ある条件と特定の規則との関連づけのことを示します。条件を満たす場合は「Y(YES)」、満たさない場合は「N(NO)」などを記載する。 |
動作… | 動作記述部と動作指定を総括したもの。 |
動作記述部… | 考慮すべき動作や結果を記載。制限指定の場合は動作が実行される、実行されない(真か偽か)が明確になるように命題形式で記載し、拡張指定の場合は動作そのものや結果を記載する。 |
動作指定… | ある動作と特定の規則との関連づけのことを示します。動作する場合は「X(execute)」、しない場合は「-」などを記載する。 |
規則… | 条件指定部および動作指定部を通る一つの列のことで、列ひとつひとつをテストケースとして記載する。 |
例えば、ある鉄道の乗車料金が以下のようにきめられているとします。
・小学生以下は子供料金
・中学生以上は大人料金
・定期使用の場合0円
これをデシジョンテーブルにすると以下のようになります。
デシジョンテーブルの作り方は3つのステップに分けられます。
ステップ1 条件と動作をまとめる
分析対象のシステムで起こりうる条件と動作をまとめます。条件をデシジョンテーブルの条件記述部に、動作を動作記述部に記載します。
ステップ2 条件の組み合わせを記載する
条件指定部を記載します。洗い出した条件に対し、組み合わせを指定していきます。条件が真の場合は「Y(YES)」を、偽の場合は「N(No)」を記載します。
ステップ3 動作指定部を記載する
ステップ2で記載した条件の組み合わせに対応して、どのような動作が起こるかを動作指定部に記載します。
3.デシジョンテーブルを作成する際の注意点
デシジョンテーブルを作る際には以下の四点に注意すると作りやすくなります。
①すべての条件を書き出すこと
条件記述部にはすべての条件をかきだすようにしましょう。条件が書き出せていないとテストの漏れにつながります。また、新しく条件を指定したり、追加したりする場合も書き出すようにしましょう。
②すべての動作を書き出すこと
動作記述部にはすべての動作をかきだすようにしましょう。動作の書き出しが漏れた場合もテストの漏れにつながりますので注意してください。
③条件記述部と動作記述部の矛盾した条件を削除する
仕様上ありえない組み合わせの条件は削除しましょう。例えば、ある映画館で15歳以下と65歳以上に割引料金が適用されるとします。このとき、条件を15歳以下、65歳以上とし、動作を割引料金の適用としてデシジョンテーブルを作成すると赤線で丸く囲われた条件は矛盾するため削除することになります。
④複雑な条件や条件の組み合わせが多いときにはデシジョンテーブルを分割して作成する
デシジョンテーブルの強みはテストケースを可視化できることですが、あまりに複雑な条件や、条件の組み合わせが多いときには、表が大きくなり逆に把握しづらくなります。同じ動作になる条件をまとめることや、他の条件と関連性が低い条件を抜き出してデシジョンテーブルを分割すること役立ちます。
4.デシジョンテーブルの活用方法
デシジョンテーブル以下の2点のようなときに活用できます。
1点目は、仕様の抜け漏れや、条件の曖昧さを把握することができる点です。デシジョンテーブルを作成する際に、条件の組み合わせをすべて洗い出し、個々の条件に期待される動作を割り振る作業を行うことで、仕様の抜け漏れ、条件の曖昧さを特定することができます。
2点目は、組み合わせ条件に基づいて不具合の原因分析を行える点です。デシジョンテーブルを基にテストを行った結果、欠陥が見つかった際は、その欠陥が発生する条件と類似の条件を探しだし、その差異を調べて欠陥のありそうな条件を特定することができます。条件と動作の関係性が整理されているので、不具合の検知を見つけやすくなります。