テスト設計の三つのポイント「より少ないテスト・ケース」「より多くのバグが見つかるテスト」「漏れがないようにテスト対象を網羅」について,テスト設計技法を紹介します。

 テスト設計を簡単におさらいしましょう。テスト設計とは,「どうやってテストするか」を考える作業です。テスト戦略,テスト分析,テストのアプローチを元に,テスト設計技法を活用してテスト・ケースを作成していきます。テスト設計には,「より少ないテスト・ケース」で,「より多くのバグが見つかるテスト」を行い,「漏れがないようにテスト対象を網羅」する,という三つのポイントがあります。この三つのポイントを上手に行うためのテクニックがテスト設計技法です。まず,テスト設計技法にはどのようなものがあるのかを整理しましょう。

テスト設計技法

 「漏れがないようにテスト対象を網羅」する方法として,「ソフトウエア・テストの基本を学ぼう」にて,コード・ベース,設計ベース,要件ベースという三つの視点でテスト対象を分析することで,漏れの無いテスト設計ができるということを説明しました。これらの視点でテスト設計をした際には,漏れがないようにテストできたかどうかを判断するために「カバレッジ」という指標を使い,網羅度合いを判断します。

 ここでのテスト設計においては,カバレッジを測定できるようにテスト対象のソフトウエアやシステムの全体像を把握することがポイントになります。大きく分けて,「リスト」「マトリクス」「グラフ(モデル)」(図1)の利用が考えられます。

図1●リスト,マトリクス,グラフの例
図1●リスト,マトリクス,グラフの例

 リストは,いわゆるチェックリストです。マトリクスはその名の通り,二つの対象の組合せを確認するものですが,デシジョン・テーブルのようなものも該当します。グラフを使う場合は,テスト対象をフローチャート,状態遷移図,シーケンス図のようなモデルで表現し,処理の流れや振る舞いを網羅するようにします。

 「より少ないテスト・ケース」では,基本的な考え方として「同値クラス」があります。テスト範囲を「同値」という一定の塊で分割し,無限大になってしまう可能性のあるテスト数を減らす考え方です。それ以外には,ブール論理で優先度の高い組み合せを導き出す「原因-結果グラフ」や,三つ以上のパラメータがあった場合にすべての値(選択枝)の組み合わせをテストするのではなく,二つのパラメータ間の値の組み合せを網羅するようにテスト・ケースを設計する「All Pairテスト」や「直交表」というテスト設計技法がこの分類に当てはまります。

 「より多くのバグが見つかるテスト」では,境界値分析という技法があります。境界値分析を使って設計する方法を境界値テストと呼びます。また,境界値テストの考え方を発展させて,二つの変数の組み合せから境界値を見つけ出す方法としてドメイン・テストという技法もあります*1。また,より多くのバグを見つけるその他の方法としては,過去の不具合傾向を整理することで類似した不具合を狙い撃ちするエラー推測という技法があります。

 テスト設計技法を「テスト設計の三つのポイント」で分類して説明しましたが,他に「ホワイトボックス」と「ブラックボックス」に分ける,古くからある有名なテスト設計の分類方法もあります。

 ホワイトボックスは,ソフトウエアやシステムの内部構造に着目して,データの流れや制御を確認できるようテスト・ケースを作成する方法です。一方ブラックボックスは,要件や仕様通りにソフトウエアが動作するか確認できるようテスト・ケースを作成していく方法です。ホワイトボックスとブラックボックスの違いは図2のようになります。

図2●ホワイトボックスとブラックボックスの違い
図2●ホワイトボックスとブラックボックスの違い

 実際にテストする際は,ホワイトボックスでもブラックボックスでも,データを入力してソフトウエアを動作させて確認します。両テストの違いは,動作結果の確認方法にあります。ブラックボックスでは,仕様で定義した振る舞い通りに動作しているかを確認します。一方,ホワイトボックスでは,ソフトウエアの構造を理解し,狙い通りの処理経路を通って結果が正しく返ってくるかを確認します。

 テスト設計の三つのポイントで示したテスト設計技法を,ホワイトボックスとブラックボックスの視点で整理すると図3のようになります。

図3●ホワイトボックスとブラックボックスで整理した技法一覧
図3●ホワイトボックスとブラックボックスで整理した技法一覧
[画像のクリックで拡大表示]

 次のPart2では,ホワイトボックスとブラックボックスの代表的な技法について具体的に説明していきます。