🪑

デシジョンテーブルの基礎知識

に公開

はじめに

ソフトウェアテスト技法練習帳を解き進めるにあたって、基本的な技法を再度学びなおして記事としてアウトプットしました。

あくまで基礎的な内容ですが参考になれば。

https://amzn.asia/d/bsy7Pe1

デシジョンテーブルとは

複数の条件の組み合わせによって挙動が変化するソフトウェアに対してのテストケースを表形式でまとめたもの、またはその方法のことをデシジョンテーブルと呼ぶ。テスト対象のシステムの振る舞いを決定づける条件を洗い出し、組み合わせたあとに期待値と合わせて表形式にすることでテストケースの網羅性を高めることができる。

以上の特徴から、複数の条件や制約がある場合などにおいて非常に有効なテスト技法である。

例題: ECサイトの購入金額計算プログラム

とあるECサイトでは、会員ステータス別で購入金額を割引するサービスを提供している。加えて、クーポンを使用することで15%割引になるサービスも並行して提供されているとする。

なお、クーポン仕様による割引と会員ステータス別で適用される割引率は重複しない。

また、非会員がクーポンは使用できない

会員ステータスごとの割引率
会員ステータス 割引率[%]
非会員 0
レギュラー会員 5
ゴールド会員 10

デシジョンテーブルの作り方

  1. 条件を洗い出す
  2. 条件ごとの取りえる値を決定する
  3. 条件の組み合わせによってシステムがどう振る舞うべきか、期待される「結果(アクション)」を明確にする
  4. 条件のすべての組み合わせを列挙する
  5. 各組合せに結果(期待値)を割り当てる
  6. 表にまとめる
    img

上記はあくまで一例である。

組み合わせの絞り込み方

条件が増えるほど、指数関数的に組み合わせも増えていくため、テストケースが膨大な量になってしまう。その場合は、以下の観点でテストケースを減らすことができないかを考察してみると良い。

組み合わせの絞り込み方

条件が増えると、テーブルの組み合わせは 指数的に増加 します。現実的なテスト設計では、以下の観点でテストケースを縮約することが有効です。

✅ 同じ結果となるパターンの統合

  • クーポンが使用された場合、会員ステータスにかかわらず一律15%割引になるなら、会員ステータスを無視できる。
  • 例:クーポン = 使用 の行を1つにまとめられる。

✅ 現実には発生しないパターンの除外

  • 「非会員はクーポンを使えない」という仕様がある場合、
    非会員 × クーポン使用 は削除対象。

以上の手順を踏まえると、以下のように組み合わせ数を絞ることができる。
img

これらはあくまで一例であり、どのような観点でテストを行うか、何をテストするかというテスト分析の結果によって成果物であるデシジョンテーブルは変化しうる。

参考記事

Discussion