PR

 開発したソフトウエアやシステムが、要件通りの機能を提供できるか、性能条件をクリアしているか、潜在的なバグを抱えていないかなどを確認すること。一般に、単体テスト、結合テスト、システム・テスト、運用テストの順で進める。

 単体テストの対象は、関数やメソッドなど、個々のモジュールである。プログラム(モジュール)が一通り完成したところで、詳細設計通りに実装できているかを確認する。単純な機能面だけでなく、ロジックはおかしくないか、既定のコーディング・ルールや変数のネーミング・ルールに沿っているかなど、ソース・コード・レベルでチェックする。このようなモジュールの中身までを検証するテストは、「ホワイトボックス・テスト」と呼ばれる。

 単体テストが済んだモジュールを組み合わせたサブシステムに対してテストするのが、結合テスト。さらに、結合テストをクリアしたサブシステムを組み合わせ、最終的なシステムとなったものを検証するのが、システム・テストである。

 結合/システム・テストでは、基本設計通りに実装できているかをチェックするが、プログラムの中身は見ない。あくまで、与えた操作/入力データに対して、想定した動きをするかどうかを確認する。中身をブラックボックスとしてとらえるため、「ブラックボックス・テスト」と呼ばれる。

 与える入力データと、その結果の出力のセットを、「テスト・ケース」という。「このデータを入力したり、この操作を実行したら、こういう出力や動作をするはず」という組み合わせだ。基本設計から必要なテスト・ケースを複数作成し、テストする。適切なテスト・ケースを過不足なく用意できるかどうかが、テストの“質”を左右する。

 また結合/システム・テストでは、高負荷に耐えられるかを検証する「負荷テスト」なども行う。システム・テストではさらに、障害時の復旧処理を確かめる「障害テスト」、不正アクセスや情報漏えいに対する強度を検証する「セキュリティ・テスト」などを実施する。

 最後の運用テストは、本番稼働を想定して、運用手順、トラブル発生時の対処手順、社内やベンダーとの連絡体制などを広く検証する。ユーザー部門が主体となり、日々の業務の流れに沿ったテスト手順である「シナリオ」を作成。「疑似本番テスト」を行う。

 例えば日本航空(JAL)と日本エアシステム(JAS)のシステム統合の運用テストでは、飛行機を運航するための仕事の流れをシナリオとしてまとめた。通常運航の場合、欠航や目的地変更といった特殊な場合など複数のシナリオを用意。このシナリオに基づいて、多岐にわたる動きを検証した(日経コンピュータ5月31日号の特集記事を参照)。徹底した進捗管理やメンバー内での情報共有というプロジェクトマネジメントが、スムーズなテストの実施を後押しした。

(高下)