| 항목 | 통합 테스트 | 단위 테스트 |
|---|---|---|
| 테스트 대상 | 여러 모듈의 조합, 전체 시스템의 일부 | 개별 모듈이나 매서드 |
| 테스트 환경 | 실제와 유사한 환경, 실제 의존성 사용 | 격리된 환경, 의존성 최소화 |
| 테스트 목적 | 컴포넌트 간 상호작용, 전체 기능 검증 | 개별 기능의 정확성 |
모든 모듈을 한 번에 통합하여 테스트하는 방식으로 빠른 통합이 가능하다.
모듈을 단계적으로 통합하며 테스트하는 방식
오류 발견 및 수정 용이
체계적인 통합 가능
종류
최상위 모듈부터 시작하여 하위 모듈로 점진적으로 통합하는 방식으로 상위 모듈 테스트 시 하위 모듈을 스텁(Stub)으로 대체한다.

위 5단계를 모든 모듈이 통합될 때까지 반복한다.
최하위 모듈부터 시작하여 상위 모듈로 점진적으로 통합하는 방식으로 하위 모듈 테스트 시 상위 모듈을 드라이버로 대체한다.

위 5단계를 모든 모듈이 통합될 때까지 반복한다.
모듈 간 결합도를 기준으로 테스트 케이스를 설계하고 실행하는 방법으로 모듈 간 상호작용과 데이터 흐름의 정확성을 검증한다.
| 강도 | 결합도 종류 | 내용 |
|---|---|---|
| 약함 | 자료 결합도 (Data Coupling) | 모듈 간의 인터페이스로 전달되는 파라미터(데이터)를 통해서만 상호 작용이 이루어지는 경우. 결합도가 가장 낮고 가장 좋은 형태이다. |
| 스탬프 결합도 (Stamp Coupling) | 모듈 간의 인터페이스로 배열이나 객체, 자료 구조 등이 전달되는 경우. | |
| 제어 결합도 (Control Coupling) | 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하는 제어 요소를 전달하는 경우. | |
| 외부 결합도 (External Coupling) | 어떤 모듈이 외부에 있는 다른 모듈의 데이터를 참조하는 경우 (데이터, 통신 프로토콜 등). | |
| 공통 결합도 (Common Coupling) | 여러 개의 모듈이 하나의 공통 데이터 영역(전역 변수 참조 및 갱신)을 사용하는 경우. | |
| 강함 | 내용 결합도 (Content Coupling) | 어떤 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우. 결합도가 가장 높고 가장 좋지 않은 형태이다. |
한 모듈에서 다른 모듈로 데이터가 전달되는 실행 경로
ex)
public class PaymentStub implements PaymentGateway {
@Override
public boolean processPayment(double amount) {
// 항상 성공적인 결제 처리로 가정
System.out.println("stub: " + amount + "결제 처리됨");
return true;
}
}