통합 테스트로 서비스 결합부의 결함을 검증하는 방법
통합 테스트의 범위와 환경 구성, 계약·데이터 일관성 검증, CI/CD 파이프라인 적용 방식을 정리한다.
2026-08-14 · 최초 발행 2025-12-20
서비스 경계에서만 드러나는 결함
분산 아키텍처와 다계층 시스템에서는 각 모듈이 정상 동작하더라도, 연결 지점에서 품질 문제가 발생할 수 있다. 통합 테스트는 실제 인프라 또는 가상화한 의존성 위에서 API, 데이터베이스, 메시징의 상호작용을 검증하는 활동이다. 배포 빈도가 높아지고 Microservices가 확산될수록 회귀 결함을 초기에 막는 수단으로 중요해진다.
이 테스트는 단위 테스트와 E2E 테스트 사이의 중간 계층에 놓인다. 개별 기능보다 계약, 스키마, 트랜잭션 경계, 오케스트레이션 로직에 초점을 맞추며, 스키마 불일치, 타임아웃, 재시도 정책 오류, 메시지 순서 보장 실패 같은 결합부의 실패 모드를 찾는다.
재현 가능한 검증 환경을 만드는 조건
테스트 환경은 컨테이너 기반으로 임시 생성하고 격리할 수 있다. Docker와 Testcontainers 같은 도구를 활용하면 프로비저닝과 테어다운을 자동화해 재현성을 확보할 수 있다. DB, 브로커, 외부 API는 가상화하거나 실제 인스턴스를 사용하는 방식을 함께 선택한다.
데이터와 스키마의 상태도 환경만큼 중요하다. Flyway, Liquibase 같은 마이그레이션 도구로 스키마를 맞추고, 테스트 데이터 시드와 픽스처로 결정적인 입력을 준비한다. Truncate나 Rollback을 이용한 데이터 정리와 테스트 간 오염 방지 역시 필요하다.
Producer와 Consumer 사이에서는 API·이벤트 계약을 합의하고 자동 검증한다. Avro 또는 JSON Schema 기반 스키마 레지스트리와 연계할 수 있으며, 하위 호환성, 필드 추가·삭제, 기본값 정책을 포함한 진화적 스키마 관리가 검증 대상이 된다.
장애 조건도 정상 흐름과 분리해 다룬다. 타임아웃, 재시도, 서킷브레이커 정책을 확인하고 네트워크 지연, 패킷 손실, 부분 장애를 시뮬레이션한다. 멱등성과 메시지 중복·역순 처리 대응 여부도 이 과정에서 검증한다.
변경부터 결과 보존까지의 흐름
CI/CD에서는 병렬 실행, 캐시, 변경 영향 기반의 테스트 선택으로 실행 시간을 최적화할 수 있다. 성공률, 평균 소요, 플레이크 비율을 수집하고, 실패 시 로그·트레이스·덤프 같은 아티팩트를 자동 보존하면 원인 분석이 수월해진다.
트랜잭션은 서비스 계층 단위의 커밋과 롤백뿐 아니라 교차 서비스 Saga와 아웃박스 패턴까지 검증 범위에 포함한다. 비관·낙관 락 충돌, 재시도·백오프 정책, 최종 일관성 지연 허용 범위도 확인 대상이다. 이벤트의 순서와 At-least/Exactly-once 딜리버리 보장 역시 함께 검증한다.
인터페이스별로 확인할 지점
마이크로서비스에서는 Pact 등을 사용해 Producer와 Consumer의 계약을 생성하고 검증함으로써 배포 전 계약 위반을 막는다.
데이터 계층에서는 실제 DB 컨테이너로 Repository와 ORM 동작, 마이그레이션 호환성, N+1과 인덱스 누락을 확인한다. Kafka나 RabbitMQ 기반 흐름은 컨테이너 환경에서 중복·역순 이벤트와 파티션 재배치 영향을 검증할 수 있다.
외부 API에는 WireMock 등을 이용한 Service Virtualization을 적용해 장애, 슬로우 응답, 스로틀링, 인증 실패 시나리오를 다룬다. 배포 단계에서는 코드 소유자·경로 매핑에 따른 변화 영향 기반 테스트 선택과 불안정 테스트 격리, 재시도 정책을 게이트로 활용한다.
테스트 계층별 특성
| 구분 | 성능(속도) | 범위(결합부) | 일관성/재현성 | 결함 위치 특정 | 인프라 의존성 | 운영 편의 |
|---|---|---|---|---|---|---|
| 단위 테스트 | 매우 빠름 | 낮음(단일 모듈) | 매우 높음 | 매우 용이 | 매우 낮음 | 매우 높음 |
| 통합 테스트 | 중간 | 중간~높음(주요 인터페이스) | 높음(격리 환경 전제) | 용이 | 중간 | 중간 |
| E2E 테스트 | 느림 | 매우 높음(전체 체인) | 중~낮음(플레이크 위험) | 어려움 | 높음 | 낮음 |
결합부 결함을 일찍 찾으면 회귀 결함 3060% 감소를 기대할 수 있으며, 조직·도메인에 따라 편차가 존재한다. 배포 파이프라인 안정화는 릴리스 리드타임을 2040% 단축하고, 재현 시나리오 자동화는 운영 장애 전이를 줄여 장애 MTTR을 15~35% 개선할 수 있다. 스키마와 계약의 진화를 안정화하면 멀티팀 동시 개발 속도를 높이고 커뮤니케이션 비용을 줄이는 데도 도움이 된다.
통합 테스트는 환경 재현성, 결정적 데이터, 명시적 계약, 실패 모드 모델링을 함께 갖출 때 의미가 있다. 컨테이너 기반 프로비저닝, 계약 테스트, 마이그레이션 자동화, 장애 시나리오 주입을 테스트 피라미드 안에서 연결하고, 단위 테스트·통합 테스트·E2E 테스트의 균형을 CI/CD 파이프라인에 반영해야 지속 가능한 품질 관리가 가능하다.