테스트의 종류 - 단위.통합테스트 CBT UAT 시스템테스트
단위 /통합 테스트와 CBT (Component-Based Testing), UAT (인수 테스트, User Acceptance Testing)

📌 테스트 종류
| 종류 | 대상 | 주체 | 목적 |
| 단위 테스트 | 함수/메서드 | 개발자 | 기능별 정확성 검증 |
| 통합 테스트 | 모듈 간 연결 | QA/개발자 | 상호작용 및 데이터 흐름 확인 |
| CBT(기능단위) | 개별 컴포넌트 | 개발자 자동화 도구 |
기능 단위의 정확성 및 안정성 검증 UI 요소, API, 데이터 처리 모듈 등 |
| 시스템 테스트 | 전체 시스템(개발완료) | QA | 전체 기능 및 성능 검증 |
| UAT (인수 테스트) | 실제 사용자 시나리오 | 고객/사용자 | 요구사항 충족 여부 확인 |
소프트웨어 테스트 종류 비교 (옵션 B - 표 형식)
| 테스트 종류 (Testing Type) | 주요 대상 (Focus Area) | 주요 주체 (Primary Executor) | 핵심 목적 (Core Goal) | 수행 단계 (Phase) |
| 단위 테스트 (Unit Testing) |
함수, 메서드, 클래스 등 가장 작은 개별 코드 단위 | 개발자 | 개별 기능의 정확성 및 논리 검증. 버그를 조기에 발견하여 수정 비용 절감. | 개발 초기 (코딩 직후) |
| 통합 테스트 (Integration Testing) |
모듈 간의 연결 및 인터페이스. 데이터 흐름. | 개발자, QA (품질 보증) | 결합된 모듈들의 정상적인 상호작용 및 데이터 흐름 확인 | 단위 테스트 완료 후 |
| CBT (Component-Based Testing) |
독립적으로 배포 가능한 개별 컴포넌트 (UI, API 모듈 등) | 개발자, 자동화 도구 | 독립적인 컴포넌트의 기능적 정확성 및 재사용성 확인. | 통합 테스트 전후 |
| 시스템 테스트 (System Testing) |
완성된 전체 시스템 (End-to-End) | QA 전문가, 독립 테스트 팀 | 종합적인 시스템 검증 요구사항 충족 여부 및 성능, 보안, 사용성 등 |
통합 테스트 완료 후 |
| UAT (User Acceptance Testing) |
실제 비즈니스 시나리오 및 사용자 관점의 흐름 | 고객, 최종 사용자 | 시스템이 비즈니스 요구사항을 충족하며 실제 사용 환경에서 문제없이 작동하는지 최종 승인. | 시스템 테스트 완료 직후 (출시 전 최종 검증) |
- 단위 테스트와 CBT는 작은 범위에서 시작하여 각 부분의 품질을 확보하는 데 중점을 둡니다.
- 통합 테스트는 부분이 합쳐질 때 발생하는 오류를 찾습니다.
- 시스템 테스트는 전체 그림이 요구사항에 맞는지 확인합니다.
- UAT는 실제로 사용할 고객의 최종 만족도를 확인하는 마지막 관문입니다.
🧪 단위 테스트 (Unit Testing)
정의: 단위 테스트는 소프트웨어의 가장 작은 단위인 함수, 메서드, 클래스 등 개별 모듈이 정상적으로 작동하는지 확인하는 테스트입니다. 개발자가 직접 작성하며, 자동화된 테스트 코드로 수행되는 경우가 많습니다.
🎯 목적
- 코드의 기능별 정확성 검증
- 버그를 초기에 발견하고 수정
- 리팩토링이나 기능 추가 시 기존 기능이 깨지지 않도록 보장
🧩 특징
- 테스트 범위가 작고 명확함
- 외부 시스템(DB, 네트워크 등)과 격리된 상태에서 수행
- 빠르고 반복적으로 실행 가능
- 일반적으로 테스트 프레임워크를 사용 (예: JUnit, pytest, NUnit 등)
🧪 통합 테스트 (Integration Testing)
정의: 통합 테스트는 여러 개의 모듈이나 컴포넌트를 조합해서 테스트하는 단계입니다. 각 모듈이 단위 테스트를 통과한 후, 이들이 서로 정상적으로 상호작용하는지 확인하는 것이 목적입니다.
주요 특징:
- 모듈 간 데이터 흐름과 인터페이스를 검증
- 오류가 발생하기 쉬운 경계 영역을 집중적으로 테스트
- 예: 로그인 모듈과 사용자 정보 조회 모듈이 함께 작동하는지 확인
종류:
- Top-down: 상위 모듈부터 하위 모듈로 통합
- Bottom-up: 하위 모듈부터 상위 모듈로 통합
- Big Bang: 모든 모듈을 한 번에 통합 후 테스트
🖥️ 시스템 테스트 (System Testing)
정의: 시스템 테스트는 개발된 소프트웨어 전체를 대상으로 하는 테스트로, 요구사항에 따라 전체 시스템이 제대로 작동하는지 확인하는 단계입니다. 이는 통합 테스트 이후에 수행되며, 실제 운영 환경과 유사한 조건에서 테스트합니다.
주요 특징:
- 전체 시스템을 엔드 투 엔드(End-to-End)로 테스트
- 기능, 성능, 보안, 사용성 등 다양한 측면을 검증
- 비즈니스 요구사항이 충족되는지 확인
- QA 팀 또는 테스트 전문가가 수행
예시:
쇼핑몰 웹사이트에서 회원가입, 상품 검색, 장바구니, 결제까지 모든 기능이 정상적으로 작동하는지 확인
🧩 CBT (Component-Based Testing)
정의: CBT는 시스템을 구성하는 각 컴포넌트 단위로 테스트하는 방식입니다. 컴포넌트란 독립적으로 개발되고 배포 가능한 기능 단위로, UI, API, 데이터 처리 모듈 등이 될 수 있습니다.
주요 특징:
- 각 컴포넌트를 개별적으로 테스트하여 품질 확보
- 컴포넌트 간의 의존성을 최소화하고 재사용성을 높임
- 예: 결제 컴포넌트만 따로 테스트하여 오류 여부 확인
장점:
- 유지보수 용이
- 테스트 자동화에 적합
- 빠른 피드백 제공
✅ UAT (사용자 인수 테스트, User Acceptance Testing)
정의: UAT는 실제 사용자 또는 고객이 시스템을 테스트하여 요구사항이 제대로 반영되었는지 확인하는 마지막 테스트 단계입니다. 개발과 테스트가 완료된 후, 제품이 실제 사용 환경에서 문제 없이 작동하는지를 검증합니다.
🎯 목적
- 시스템이 비즈니스 요구사항을 충족하는지 확인
- 사용자 관점에서 기능, 성능, 사용성을 검토
- 제품 출시 전 최종 승인을 받기 위한 테스트
🧩 특징
- 실제 사용자 또는 고객이 수행
- 테스트 시나리오는 실제 업무 흐름 기반
- 개발자나 QA가 아닌 비즈니스 담당자가 주체
- 오류 발견 시, 수정 후 다시 테스트
🛠️ 예시
예: 쇼핑몰 웹사이트에서 고객이 상품을 검색하고 결제까지 진행하는 시나리오를 테스트하여, 모든 기능이 정상적으로 작동하는지 확인
📋 UAT 절차
- 요구사항 분석 및 테스트 계획 수립
- 테스트 시나리오 및 케이스 작성
- 테스트 환경 구축
- 사용자 테스트 수행
- 결과 분석 및 승인 여부 결정
UAT는 제품이 실제 사용자에게 적합한지를 판단하는 중요한 단계