結合テストには外部結合テストと内部結合テストの2種類あり、明確に分けるて考えるべきって話を聞いたのでまとめた。とりあえず一般的に提唱されるテストを整理した後に、上記2テストがどこにマッピングされるかを考えてみる。一般的に提唱されている各設計工程とテスト工程の関係は、下記表の通りである(たぶん)。

一般的に提唱されている設計と工程

| 設計工程   | テスト工程       | 略称・英語表記            |
|------------|----------------|--------------------------|
| 要求定義   | 受け入れテスト   | UAT, User Acceptance Test |
| 要件定義   | システムテスト   | ST, System Test          |
| 基本設計   | 結合テスト       | IT, Integration Test     |
| 詳細設計   | 単体テスト       | UT, Unit Test            |

要求定義 - 受け入れテスト

  • 要求をヒアリングし、実現したい価値を定義する設計工程
  • 要求者の要望通り、システムが期待される価値を提供できているかを確認するテストを実施する

要件定義 - システムテスト

  • 要件定義を基にシステム全体が提供すべき機能を定義する設計工程
  • システム全体が要求通り動作し、実現すべき機能が提供できているかを確認するテストを実施する

基本設計 - 結合テスト

  • システム全体への要求を分解し、各コンポーネントやモジュールが提供する機能を設計する工程
  • システム内部のモジュール間の連携や、外部システム間のインタフェースが正しく動作するかを確認するテストを実施する

詳細設計 - 単体テスト

  • システム内部における各モジュール(クラスやメソッド)機能を設計する工程
  • 各モジュールが設計通り機能を提供できているか検証し、また、メソッドやコンポーネント単位で正しく動作するかを確認するテストを実施する

外部結合テストと内部結合テストのマッピング

外部結合テストと内部結合テストはその名の通り結合テストの一部である。それぞれの定義は下記の通り。マッピングするならば外部結合テストは結合テスト、内部結合テストは結合テスト及び単体テストにマッピングするのが正しそう。

外部結合テスト

  • 外部システム間のインタフェースが正しく動作するかを確認するテスト

内部結合テスト

  • システム内部のコンポーネント間が正しく動作するかを確認するテスト
internal-and-external-coupling-tests