忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【システム開発技術】複雑な条件の組み合わせを網羅する!「ディシジョンテーブル・テスト」|情報処理問題1000本ノック

「条件AがYesで、条件BがNoで、条件CがYesのときの処理は……?」と、条件が複雑に絡み合うシステムのテストを頭の中だけで考えると、必ず考慮漏れ(バグ)が発生します。論理的な組み合わせを1枚の表に叩き込んで整理する「ディシジョンテーブル・テスト」を攻略しましょう。

1. 【 問題 】:テストデザイン技法(ディシジョンテーブル・テスト)

【 問題 】 ソフトウェアテストにおいて、システムに与えられる複数の「テスト条件(入力や状態)」と、それらの組み合わせによって引き起こされる「動作(出力や結果)」の関係を2次元の表形式(マトリクス)で整理し、テストケースを設計する技法を何と呼ぶでしょうか?

① ディシジョンテーブル・テスト(決定表テスト)
② 同値分割法(イクイバレンス パーティショニング)
③ 境界値分析(バウンダリー バリュー アナリシス)
④ 状態遷移テスト(ステート トランジション テスト)

2. 正解:

正解: ① ディシジョンテーブル・テスト(決定表テスト)

3. 解説:論理の迷子を防ぐ「条件と結果のクロス表」

システムの仕様が「◯◯かつ××、または△△のときはエラー、ただし――」のように複雑な場合、テストケースの抜け漏れが起きやすくなります。ディシジョンテーブル・テストは、これらを「条件」と「動作」に分解し、すべての組み合わせ(Y: Yes / N: No)を列ごとに網羅する設計手法です。1つの列(ルール)がそのまま1つのテストケースになります。


【ディシジョンテーブルの基本構成例】 ← ココが試験のポイント!

要素(構成パーツ)ルール1ルール2ルール3ルール4
条件部 条件1:会員であるか? Y Y N N
条件2:クーポンがあるか? Y N Y N
動作部 動作1:20%割引を適用 X
動作2:通常料金で計算 X X X

※ 表の「Y/N」の組み合わせの列(ルール1〜4)が, そのまま漏れのないテストケースになります。
※ ②、③、④は組み合わせではなく、単一のデータ範囲やシステムの「状態の変化」に着目する技法です。

1. 理解のコツ: 「遊園地の割引サービス」を想像してください。
・「WEB会員」かつ「雨の日クーポン持参」なら【半額】
・「WEB会員」だけど「クーポンなし」なら【10%オフ】
・「非会員」だけど「クーポンあり」なら【5%オフ】
・「どちらもなし」なら【通常料金】
このようなルールを、条件(会員か?クーポンか?)と動作(半額か?10%か?)に分けて格子状に並べたのがディシジョンテーブル(決定表)です。これを作れば、「あ、非会員でクーポンがあるパターンのテストを忘れてた!」というミスが100%防げます。複雑な条件を『見える化』して、機械的にテストケースを弾き出すのが最大のメリットです。
2. 試験対策の視点: 午前試験では、「組み合わせテストに用いる表はどれか」という直球問題でよく出ます。選択肢の中に「ディシジョンテーブル」または「決定表」があれば即答できます。 また、午後試験(アルゴリズムやソフトウェア開発分野)では、実際に仕様書からこの表を完成させたり、表の「不可能な組み合わせ(例:12歳未満かつ車の免許保有など)」を省いてテストケースを削減(圧縮)させる実践的な問題が出題されます。「条件部」「動作部」「ルール」という用語と、表の読み方を確実にマスターしておきましょう。


4. まとめ

「複数の条件とそれに応じた動作の関係をマトリクス(表)形式で整理し、条件の組み合わせに抜け漏れがないようにテストケースを設計する技法」。これがディシジョンテーブル・テストです。ロジックが複雑なビジネスロジックの検証に欠かせない必須テクニックとして、しっかり覚えておきましょう!


PR