전체 목록
테스트Medium#404

유닛 테스트(Unit Test)와 통합 테스트(Integration Test)의 차이점을 설명해주세요.

#테스트#UnitTest#IntegrationTest#품질

답변 포인트

테스트 대상의 범위와 외부 의존성 포함 여부를 기준으로 비교해보세요.

정답 및 해설

빠른 요약

테스트의 목적과 범위에 따라 테스트를 계층적으로 분류할 수 있습니다. ## 유닛 테스트 (Unit Test) 애플리케이션에서 가장 작은 단위(함수, 메서드, 클래스 등)가 의도한 대로 동작하는지 검증하는 테스트입니다.

테스트의 목적과 범위에 따라 테스트를 계층적으로 분류할 수 있습니다.

유닛 테스트 (Unit Test)

애플리케이션에서 가장 작은 단위(함수, 메서드, 클래스 등)가 의도한 대로 동작하는지 검증하는 테스트입니다.

  • 특징:
    • 격리(Isolation): 외부 의존성(데이터베이스, 네트워크, 파일 시스템 등)으로부터 완전히 분리되어야 합니다. 이를 위해 Mocking이나 Stub을 사용합니다.
    • 속도: 매우 빠릅니다. 수천 개의 테스트를 몇 초 안에 실행할 수 있습니다.
    • 정밀도: 실패 시 정확히 어느 코드 라인에서 문제가 생겼는지 즉시 알 수 있습니다.
  • 목적: 코드의 논리적 오류를 조기에 발견하고, 리팩토링 시 안전장치 역할을 합니다.

통합 테스트 (Integration Test)

여러 개의 모듈이나 컴포넌트가 서로 결합되어 작동할 때, 그 상호작용이 올바른지 검증하는 테스트입니다.

  • 특징:
    • 결합(Integration): 모듈 간의 인터페이스, 데이터 흐름, 외부 시스템(DB, API 등)과의 연동을 확인합니다.
    • 속도: 유닛 테스트보다 느립니다. 실제 네트워크나 DB 연결이 포함될 수 있기 때문입니다.
    • 범위: 단위 간의 연결 고리나 데이터베이스 스키마 불일치 등을 찾아냅니다.
  • 목적: 개별 모듈은 잘 작동하더라도, 모듈들이 만났을 때 발생하는 문제(통신 오류, 데이터 형식 불일치 등)를 찾아냅니다.

비교 요약

구분유닛 테스트통합 테스트
테스트 범위최소 단위 (함수/클래스)여러 모듈/컴포넌트의 결합
의존성 처리Mock/Stub으로 격리실제 또는 유사 환경 사용
실행 속도매우 빠름상대적으로 느림
발견 내용개별 로직 오류모듈 간 상호작용/흐름 오류

관련 질문

같은 카테고리/태그 기준