테스트 레벨(단위, 통합, 시스템, 인수 테스트)

용어키워드
단위 테스트개별 모듈, 서브루틴, 컴포넌트, 코딩 단계, 개발자 수행
통합 테스트인터페이스, 모듈 간 상호작용, 설계 단계, 상향식/하향식
시스템 테스트전체 시스템, 요구사항 명세, 기능/비기능 테스트, 분석 단계
인수 테스트사용자 관점, 요구사항 충족, 알파/베타 테스트, 최종 승인
알파 테스트개발자 환경, 통제된 상태, 개발자 모니터링, 내부 테스트
베타 테스트사용자 환경, 개발자 부재, 오류 정보 취합, 외부 테스트
V 모델개발 단계-테스트 단계 대응, 검증과 확인, 폭포수 모델 확장

테스트 레벨

테스트 레벨(Test Level)은 소프트웨어 개발 과정에서 테스트가 수행되는 단계를 구분한 것이다.

테스트 레벨은 일반적으로 단위 테스트 -> 통합 테스트 -> 시스템 테스트 -> 인수 테스트 순서로 진행된다.

V 모델과 테스트 레벨

V 모델은 폭포수 모델을 확장한 개발 모델로, 개발의 각 단계에 대응하는 테스트 단계를 정의한다.

V자 형태로 왼쪽에넌 개발 단계, 오른쪽에는 테스트 단계가 배치되어 각 단계 간의 관계를 직관적으로 보여준다.

image
개발 단계테스트 단계검증 내용
요구시스템 테스트요구분석 검증
시스템 설계통합 테스트인터페이스 검증
모듈 설계단위 테스트모듈 검증
구현-(V자 꼭지점)

단위 테스트 (Unit Test)

단위 테스트는 소프트웨어의 개별 모듈, 서브루틴, 컴포넌트가 정상적으로 실행되는지 확인하는 테스트다.

가장 작은 단위의 테스트로, 주로 개발자가 코딩 단계에서 수행한다.

  • 목적 : 개별 컴포넌트의 기능이 명세대로 동작하는지 검증 (모듈 검증)
  • 수행 주체 : 개발자
  • 대응 개발 단계 : 모듈 설계
  • 특징:
    • 빠른 피드백으로 초기 결함 발견 가능
    • 자동화하기 가장 쉬운 테스트 레벨
    • 드라이버(Driver), 스텁(Stub) 등 테스트 도구 사용

통합 테스트 (Integration Test)

통합 테스트는 단위 테스트를 통과한 모듈들을 결합하여 인터페이스 간 시스템이 정상적으로 실행되는지 확인하는 테스트이다.

모듈 간의 상호작용과 데이터 흐름을 검증한다.

  • 목적 : 모듈 간 인터페이스 및 상호작용 검증 (인터페이스 검증)
  • 수행 주체 : 개발자 또는 테스트 팀
  • 대응 개발 단계 : 시스템 설계
  • 통합 방식:
    • 상향식 (Bottom-up) : 하위 모듈부터 통합, 드라이버(Driver) 사용
    • 하향식 (Top-down) : 상위 모듈부터 통합, 스텁(Stub) 사용
    • 빅뱅 (Big-bang) : 모든 모듈을 한 번에 통합
    • 샌드위치 (Sandwich) : 상향식과 하향식을 혼합

시스템 테스트 (System Test)

시스템 테스트는 통합된 전체 시스템이 요구사항 명세에 맞게 동작하는 테스트이다.

기능적 요구사항뿐만 아니라 성능, 보안, 신뢰성 등 비기능적 요구사항도 함께 테스트한다.

  • 목적 : 전체 시스템의 기능 및 비기능 요구사항 검증 (요구분석 검증)
  • 수행 주체 : 독립적인 테스트 팀
  • 대응 개발 단계 : 요구
  • 테스트 유형:
    • 기능 테스트 : 요구사항 명세에 따른 기능 동작 검증
    • 성능 테스트 : 응답 시간, 처리량, 자원 사용량 검증
    • 보안 테스트 : 보안 취약점 및 접근 제어 검증
    • 복구 테스트 : 장애 발생 시 복구 능력 검증

인수 테스트 (Acceptance Test)

인수 테스트는 사용자 관점에서 시스템이 요구사항을 충족하는지 최종적으로 확인하는 테스트이다.

시스템의 인도 또는 배포 전에 수행되며, 사용자의 승인을 받기 위한 테스트다.

  • 목적 : 사용자 요구사항 충족 여부 및 시스템 인수 결정
  • 수행 주체 : 사용자 또는 고객
  • 수행 시점 : 시스템 테스트 이후 최종 단계
  • 유형:
    • 알파 테스트 : 개발자 환경에서 사용자가 테스트
    • 베타 테스트 : 사용자 환경에서 사용자가 테스트

알파 테스트 vs 베타 테스트

구분알파 테스트 (Alpha Test)베타 테스트 (Beta Test)
테스트 환경개발자 환경 (사내)사용자 환경 (실제 운영 환경)
개발자 참여개발자가 함께 참여하여 모니터링개발자 없이 사용자가 독립적으로 수행
통제 수준통제된 상태에서 테스트비통제 상태에서 자유롭게 테스트
오류 처리개발자가 직접 오류를 기록하고 수정사용자가 오류 정보를 개발자에게 보고
목적내부 품질 검증실제 사용 환경에서의 품질 검증

알파 테스트 (Alpha Test)

알파 테스트는 개발자 환경에서 통제된 상태로 수행되는 테스트이다.

사용자가 프로그램을 수행하는 것을 개발자가 함께 참여하여 모니터링하며 오류를 기록한다.

베타 테스트 (Beta Test)

베타 테스트는 사용자 환경에서 개발자 없이 수행되는 테스트이다.

사용자가 독립적으로 프로그램을 사용하면서 발견한 오류 정보를 개발자에게 보내면, 개발자가 이를 취합하여 오류를 수정한다.