統合・テスト
トップダウンテストとボトムアップテスト、スタブとドライバ、回帰テストなどのテストの種類、システム統合から検証テストまでの流れを理解できるようになります。
ねらい
作った部品をつなぎ、全体を確かめる工程を学びます。このレッスンを終えると、統合テストの進め方とスタブ・ドライバの使い分け、検証テストの種類、システム全体の統合から引き渡し前の確認までの流れを説明できるようになります。
ストーリー
ユニットテストでは、どの部品も完璧に動きました。ところが、つないでみると動かない。片方はミリ秒で、もう片方は秒で時間を渡していた。部品どうしの境目にこそ、バグは潜みます。だからこそ、統合には統合のテストが要るのです。
ソフトウェア統合:つなぐ順番を計画する
ソフトウェア統合では、統合する順序に基づいてソフトウェア統合計画を作り、構築されたソフトウェアユニットを段階的に組み上げます。修正のたびに前に通ったテストをやり直す再帰戦略(回帰戦略)も計画に含めます。
統合の進め方には、2つの代表的な方向があります。
- トップダウンテストは、上位のモジュールから順に統合します。まだ完成していない下位モジュールの代わりに、スタブという仮の部品を置きます。
- ボトムアップテストは、下位のモジュールから順に統合します。上位モジュールの代わりに、呼び出し役のドライバという仮の部品を使います。
「上から作るときは下の代役のスタブ、下から作るときは上の代役のドライバ」という対応で覚えましょう。テストデータの大量生成にはテストデータジェネレーターが使われます。
検証テスト:要件どおりかを確かめる
統合したソフトウェアは、ソフトウェア要件定義で定めた要件に従って、ソフトウェア検証テストで確かめます。テストには目的に応じた種類があります。
| テスト | 確かめること |
|---|---|
| 機能テスト | 要求された機能が動くか |
| 非機能要件テスト | 性能やセキュリティなどの非機能要件を満たすか |
| 性能テスト | レスポンスタイムなどの性能目標を満たすか |
| 負荷テスト | 大量のアクセスやデータに耐えられるか |
| セキュリティテスト | 脆弱性がないか。異常データを与えるファジングも使われる |
| 回帰テスト(リグレッションテスト) | 修正によって、これまで動いていた部分が壊れていないか |
| 探索的テスト | 仕様書にとらわれず、テスト担当者の知見で怪しい箇所を探す |
テストの実施後は、結果の記録、分析と評価、修正や改良を行い、必要に応じて設計書と利用者用文書類を更新します。ここでも要件との双方向の追跡可能性が評価の柱です。
システム統合とシステム検証テスト
ソフトウェアだけでなく、ハードウェア構成品目、手作業、必要に応じて他のシステムまで含めて組み上げるのがシステム統合です。統合したシステムは、システム設計のテスト仕様に従うシステム統合テストで確認し、さらにシステム要件定義の要件に従うシステム検証テストで、要件どおりに実現されているかを確かめます。ソフトウェアユニットからソフトウェア全体、システム全体へと、テストのたびに確かめる範囲は入れ子状に広がっていきます。
テスト後は結果を記録・分析し、性能が足りなければシステムのチューニングを行います。共同レビューを経て、納入可能なシステムと、運用及び保守に引き継ぐ準備を整えます。
例題
次の問いに答えてください。
問1 ボトムアップテストで、未完成の上位モジュールの代わりに下位モジュールを呼び出す仮の部品を何といいますか。
問2 プログラムの修正によって、これまで正しく動いていた機能が壊れていないかを確かめるテストを何といいますか。
解答と解説
問1の答えはドライバです。下から組み上げるボトムアップテストでは、呼び出す側の上位が未完成なので、その代役としてドライバを使います。
問2の答えは回帰テスト(リグレッションテスト)です。修正の副作用を捕まえるためのテストで、修正のたびに繰り返すため自動化の効果が大きい領域です。
応用
本試験を意識した問題を解いてみましょう。
問 トップダウンテストで、まだ完成していない下位モジュールの代わりに組み込む仮の部品はどれでしょうか。次の中から選んでください。
- スタブ
- ドライバ
- テストデータジェネレーター
- デバッガ
解答と解説
答えは1のスタブです。上位から統合するトップダウンテストでは、呼び出される側の下位が未完成のため、決まった応答を返すだけの仮の部品であるスタブを置いてテストを進めます。2のドライバは逆に、ボトムアップテストで上位モジュールの代わりに下位を呼び出す仮の部品です。3のテストデータジェネレーターはテストデータを自動生成する道具であり、モジュールの代役ではありません。4のデバッガはプログラムの誤りを調べるための道具で、統合テストの仮部品とは役割が異なります。
分からなかった点・気になった点
読み込み中です。