テスト設計ではまず,テスト対象を分析して,いくつかの要素に分解することから始める(図1の(1))。ここでは,テストの目的やシステムの種類によって観点や粒度が変わってくる。日立製作所の石川氏は「単体テストではモジュール,結合テストでは個々の業務フローを示したユースケース・シナリオ,システムテストではシステム全体というテスト対象になる」と説明する。テスト対象の分解は,こうした粒度にテスト対象を分けていくことを指す。

図1●テスト項目の「設定」と「絞り込み」が山場
図1●テスト項目の「設定」と「絞り込み」が山場
テスト設計では,テスト対象を分析・分解した上で,具体的なテスト内容とテスト結果の期待値を設定する(これを「テスト項目」と呼ぶ)。さらにテスト項目に優先度や重要度を付けて絞り込むほか,テストケースを作成してテスト項目に関連付ける
[画像のクリックで拡大表示]

 テスト対象が決まったら,それを漏れなく網羅するテストの内容とテスト結果の期待値を設定する(図1の(2))。忘れてはならないのは「期待値を明記すること」と,マーキュリー・インタラクティブ・ジャパンの中居洋氏(プロフェッショナルサービス プリンシパル・コンサルタント)は強調する。期待値とは,テストが正常に終了した結果,得られる値や状態のこと。例えば「a+a」という処理に「a=1」という値を与えれば,期待値は当然「2」となる。だが,画面遷移を確認したり,データ・アクセスを確認したりするテスト項目などは,期待値を定量的に示すのが難しい。そのため,期待値を空欄にして問題になるケースが多いという。「画面遷移の場合でも“最後まで停止せずに動作する”など,何をもってテストが終了するかを表すことが重要だ」(中居氏)。

 次に,各テスト項目の中から実施すべきテスト項目を絞り込む(図1の(3))。もちろん,絞り込みを考慮してテスト項目を洗い出してもよい。ただ,複数のモジュールを組み合わせて動作を確認する結合テストでは,例外処理などを含めるとその数は膨大になる。このため,いったんすべての組み合わせを洗い出し,そこから絞り込むのが現実的のようだ。

 実際,石川島播磨重工業で2006年4月に稼働を始めた調達システムでは,200キロ・ステップのプログラムに対して結合テストのテスト項目が約4万件にも及んだ。同社のテストのコンサルティングを手掛けたサイクスの宗雅彦社長は「限られた時間の中で4万件ものテストはとても実施できない。そこで優先度を付けて基本パターンである40件まで絞り込んだ。設計カバレッジも確認したので,稼働後のバグはほとんどない」と語る。

 テスト項目を絞り込んだら,それを確認するテストの手順とテストデータを設定する(図1の(4))。一つのテスト項目に対してテストケースは一つとは限らない。「多くのテスト項目をより少ないテストケースで確認できるよう知恵を絞ることが大切」と,日立製作所の宮崎肇之氏(生産技術本部 システム開発部 主任技師)は語る。中でも性能や信頼性などを確認するシステムテストに関するテストケースには,共通化できるものがあるという。

 作成したテストケースは,各テスト項目と関連付ける(図1の(5))。これで,テスト設計が終了する。

 なお,成果物となるテスト設計書は,単体テスト,結合テスト,システムテストなど目的に応じて分類される。実際にはここに,テスト環境やツールの適用なども記述することになる。日立製作所や富士通などでは,これらを「チェックリスト」として一覧表にまとめている。テストの段階になると,このチェックリストに従って,一つひとつテスト項目を確認していくわけだ。