こんにちは、稲垣です。
ソフトウェアが仕様通りに動くかを確認する場合、どのようにテストケースを作成していますか?
テスト技法にはさまざまな種類がありますが、今回はデシジョンテーブルについて説明します。
1.デシジョンテーブルって何?
デシジョンテーブルとは、入力データや入力条件の組み合わせに対する動作や処理の出力結果を表にしたものです。
複数の条件が重なり合ったテストをするためには、仕様をしっかりと把握することが重要になります。
デシジョンテーブルを使うと、自然言語より視覚化でき、仕様の整頓もできます。
デシジョンテーブは下記5つから成り立ちます。
1.条件の一覧(条件記述部)
2.結果の一覧(動作記述部)
3.条件の組み合わせ(条件指定部)
4.組み合わせに対応する結果(動作指定部)
5.規則
1.条件記述部
入力条件や入力データを記述します。
2.動作記述部
条件に合わせて実行する動作や処理結果を記述します。
3.条件指定部
条件の判定結果の組み合わせを指定します。
※「Y」は"Yes"で条件成立、「N」は"No"で条件不成立を表します。
※「T/F」「1/0」で表す場合もあります。
4.動作指定部
条件の組み合わせに対する動作結果を指定します。
※「X」は"eXecute"で実行を表します。
5.規則
条件の組み合わせと、それに対する動作結果を組み合わせたものです。
この「5.規則」をテストケースとして用いることができます。
2.デシジョンテーブルを使ってみよう
では、デシジョンテーブルを使い、テストケースを作っていきます。
<例1>
映画の割引料金に関する仕様が、以下のように定義されていたとします。
・大学生は、学生割引を適用します
・高校生以下は、子供割引を適用します
・女性は、レディース割引を適用します
・60歳以上の方は、シニア割引を適用します
・複数の割引が重なった場合は、割引率が高い方を適用します
まず、条件記述部に「一般 男性 60歳未満」「大学生 女性」等の属性を入力します。
次に、動作記述部に「割引」の種類を入力します。
ここからは、ルールを入力していきます。
ルール1を見ていきます。
「一般」で「男性(60歳未満)」が入力条件の場合、「一般 男性(60歳未満)」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「一般」で「男性(60歳未満)」の場合割引はないため、「割引なし」の動作指定部に「X」と記入します。
ルール2を見ていきます。
「一般」で「男性(60歳以上)」が入力条件の場合、「一般 男性(60歳以上)」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「一般」で「男性(60歳以上)」の場合、「シニア割引(15%)」の動作指定部に「X」と記入します。
ルール3を見ていきます。
「一般」で「女性(60歳未満)」が入力条件の場合、「一般 女性(60歳未満)」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「一般」で「女性(60歳未満)」の場合、「レディース割引(10%)」の動作指定部に「X」と記入します。
ルール4を見ていきます。
「一般」で「女性(60歳以上)」が入力条件の場合、「一般 女性(60歳以上)」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「一般」で「女性(60歳以上)」の場合、レディース割引とシニア割引が当てはまりますが割引が重なった場合は割引率が高い方が適用されるため、「シニア割引」の動作指定部に「X」と記入します。
ルール5を見ていきます。
「大学生」で「男性」が入力条件の場合、「大学生 男性」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「大学生」で「男性」の場合、「学生割引(5%)」の動作指定部に「X」と記入します。
ルール6を見ていきます。
「大学生」で「女性」が入力条件の場合、「大学生 女性」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「大学生」で「女性」の場合、学生割引とレディース割引が当てはまりますが割引が重なった場合は割引率が高い方が適用されるため、「レディース割引」の動作指定部に「X」と記入します。
ルール7を見ていきます。
「高校生以下」が入力条件の場合、「高校生以下」の条件指定部に「Y」、それ以外は当てはまらないので「N」と入力します。
「高校生以下」の場合、「子供割引(10%)」の動作指定部に「X」と記入します。
仕様をデシジョンテーブルで表すことにより、ルール1~ルール7のテストケースを作ることができました。
デシジョンテーブルは、テストケースの作成以外にも、仕様のヌケモレや曖昧な箇所を発見することもできます。
また、全体が見やすいためテストケースの認識合わせにも役立ちます。
3.おわりに
デシジョンテーブルは、複数の条件が重なり合った組み合わせを明確にすることができますが、条件数が増えるとルール数が爆発的に増えていきます。
マトリクスが大きくなり過ぎる場合は、見通しも悪くなります。
そのようなときは、デシジョンテーブルを複数に分割するなどしていきます。
わかっているから大丈夫!と思わず、デシジョンテーブルを使ってみてはいかがでしょうか。