ソフトウェア開発プロセスにおける結合テストの実施内容として, 適切なものはどれか。
平成23年度 秋期 ITパスポート試験 問41
この問題の解説と、これまでの解答の記録です。
問 41
不正解ア
LAN ケーブルで複数の PC を接続してファイルの共有ができることをテストする作業は、ソフトウェアを開発する工程の話ではなく、構築した LAN が正しく動作するかを確かめるネットワークの動作確認・疎通確認である。検証対象がプログラム間のインタフェースではなく、配線・機器設定・共有設定であり、しかも前提となる単体テスト済のモジュールという概念も存在しない。ネットワーク構築後の確認作業を結合テストと呼ぶことはないため誤りである。
不正解イ
PC と周辺装置をつなぐケーブルの差込口の形状を確認し、ケーブルが無理なく差し込めることを確かめる作業は、コネクタ形状やインタフェース規格が物理的に合致するかを見るハードウェアの接続確認にすぎない。ここでいうインタフェースはプログラム間の呼出し仕様ではなく物理的なコネクタの形状であり、言葉は似ていても対象がまったく異なる。ソフトウェアを一切動かしていない以上、ソフトウェア開発プロセスのテスト工程には該当しない。
不正解ウ
インターネットサービスプロバイダと契約した後にブラウザで Web サイトが閲覧できることを確かめる作業は、インターネット接続サービスが正しく開通したかを利用者側で確認する開通確認であり、既製のブラウザと外部サービスを使っているだけで自ら開発したプログラムを結合しているわけではない。単体テスト済モジュールの組合せというプロセスも、インタフェース仕様との突合せという検証内容も伴わないため、結合テストとは言えない。
- エ
正解 正解はエ。結合テスト (統合テスト、Integration testing) とは、単体テストを通過した複数のプログラム (モジュール) を組み合わせて動かし、モジュール間のインタフェースが仕様どおりに作られているか、互いに正常に連動するかを検証するテスト工程である。ソフトウェア開発のテストは下位から段階的に積み上げる構造になっており、まず単体テストで個々のモジュールの内部処理を確かめ、次に結合テストでモジュール同士のつなぎ目を確かめ、続くシステムテストでシステム全体が要件どおり動くことを確かめ、最後に運用テスト・受入れテストで利用者が実際の業務環境における妥当性を確認する。エは「二つの単体テスト済のプログラムを組み合わせ」という前提条件が単体テスト完了後という結合テストの位置付けにそのまま対応し、検証対象も「プログラム間のインタフェースが仕様どおりに作成され, 正常に連動すること」であって、まさにモジュールのつなぎ目そのものである。結合テストで実際に問題として洗い出されるのは、呼出し側と呼ばれる側で引数の個数・順序・データ型が食い違う、受渡しデータの桁数や単位が異なる、戻り値やエラーコードの解釈がずれる、呼出しの順序やタイミングが想定と違う、といった単体テストでは絶対に見つからない不整合である。個々のモジュールがどれだけ正しく作られていても、インタフェースの仕様解釈が担当者間でずれていれば結合した瞬間に破綻するため、この工程が独立して必要になる。以上より、結合テストの実施内容として適切なものはエである。
- 結合テストの定義 — 単体テスト済の複数モジュールを組み合わせ、モジュール間のインタフェース (引数の個数・順序・データ型、受渡しデータの桁数や単位、戻り値やエラーコードの解釈、呼出しの順序) が仕様どおりで正常に連動するかを検証する工程。単体テストでは発見できないつなぎ目の不整合を洗い出すことが目的である。
- テスト工程の段階と検証対象 — 単体テスト (モジュール内部の処理) → 結合テスト (モジュール間のインタフェース) → システムテスト (システム全体が要件を満たすか) → 運用テスト・受入れテスト (実運用環境で利用者が業務上の妥当性を確認) の順に、検証範囲が下位から上位へ広がる。どのテストかを問われたら「何を検証対象にしているか」で判別する。