V-Model 기반의 Waterfall Model 테스트에 대해 설명하시오.
**V-모델 (V-Model, Verification and Validation Model)**은 **전통적인 폭포수 모델(Waterfall Model)**에 테스트 활동을 병행 구조로 강화한 소프트웨어 개발 모델입니다.
개발 단계마다 **정확한 검증(Verification)**과 **적절한 검증(Validation)**을 위한 테스트 계획 및 실행이 **대칭 구조(V자형)**로 배치되어 있는 것이 특징입니다.
V-모델은 왼쪽과 오른쪽 대칭 구조를 가집니다.
요구사항 정의 ← 인수 테스트
↓ ↑
시스템 설계 ← 시스템 테스트
↓ ↑
아키텍처 설계 ← 통합 테스트
↓ ↑
모듈 설계 ← 단위 테스트
↓ ↑
구현(코딩)
| 구분 | 개발 단계 | 테스트 단계 | 테스트 목적 |
|---|---|---|---|
| ① | 사용자 요구사항 정의 | 인수 테스트 | 시스템이 사용자 요구 만족 여부 |
| ② | 시스템 요구사항 분석 | 시스템 테스트 | 시스템 전체 기능 검증 |
| ③ | 아키텍처 설계 | 통합 테스트 | 모듈 간 인터페이스/데이터 흐름 확인 |
| ④ | 상세 설계 | 단위 테스트 | 개별 모듈의 기능 정확성 확인 |
| ⑤ | 구현 | 없음 | 개발 후 유닛 테스트 수행 |
| 모델 | 특징 |
|---|---|
| Waterfall Model | 단계별 순차적 개발, 테스트는 마지막 단계 |
| V-Model | Waterfall 확장형, 테스트가 병행 구조로 포함됨 |
| Agile Model | 반복 및 점진적 개발, 테스트는 반복 수행 |
| Spiral Model | 리스크 기반 반복 모델, 프로토타입 중심 |
| 용어 | 정의 |
|---|---|
| Verification | 요구사항에 맞게 정확히 개발되었는지 검증 |
| Validation | 사용자의 요구를 만족하는지 확인 |
| 단위 테스트(Unit Test) | 개별 모듈 수준 테스트 |
| 통합 테스트(Integration Test) | 모듈 간 연결, 인터페이스 테스트 |
| 시스템 테스트(System Test) | 시스템 전체 기능 및 성능 테스트 |
| 인수 테스트(Acceptance Test) | 고객이 최종 수용 여부 판단 테스트 |
✅ 장점
❌ 단점
| 항목 | Waterfall Model | V-Model |
|---|---|---|
| 테스트 시점 | 개발 완료 후 | 개발 단계마다 병행 |
| 테스트 계획 | 후속 단계 | 선행 기획 |
| 구조 | 직선형 | V자형 대칭 |
| 결함 발견 시점 | 후기 | 초기 가능 |
| 유연성 | 낮음 | 낮음 (같음) |
V-모델은 소프트웨어를 만들 때, 만드는 동시에 계속 테스트하는 모델이에요.
왼쪽에서는 계획을 세우고 만들고, 오른쪽에서는 만든 것을 하나씩 확인하고 검사해요.
이렇게 하면 문제를 빨리 찾아서 고칠 수 있어서 나중에 고치느라 고생하지 않아요!
V-Model 기반의 Waterfall Model 테스트는 전통적인 순차적 개발 방식에 테스트를 병행함으로써, 소프트웨어의 품질을 강화하고 오류를 조기에 발견할 수 있도록 설계된 체계적인 개발 모델입니다.
기획과 테스트를 함께 생각하는 점이 핵심이며, 특히 기술사 시험에서는 단계별 연계와 검증 활동의 대응관계를 명확히 기술하는 것이 중요합니다.
| 개발 단계 (좌측) | 산출물 | 연계 테스트 단계 (우측) | 테스트 목적 | 테스트 기준 (Basis) |
|---|---|---|---|---|
| 사용자 요구사항 정의 (User Requirement Specification) | 사용자 요구 명세서 (URS) | 인수 테스트 (Acceptance Test) | 사용자가 원하는 기능을 만족하는지 확인 | 사용자 요구사항 |
| 시스템 요구사항 정의 (System Requirement Specification) | 시스템 요구 명세서 (SRS) | 시스템 테스트 (System Test) | 전체 시스템의 기능 및 성능 검증 | 시스템 요구사항 |
| 아키텍처 설계 (High-Level Design, HLD) | 아키텍처 설계 문서 | 통합 테스트 (Integration Test) | 모듈 간 데이터 흐름 및 인터페이스 검증 | 모듈 간 인터페이스 정의 |
| 상세 설계 (Low-Level Design, LLD) | 상세 설계 문서 | 단위 테스트 (Unit Test) | 각 모듈(클래스/함수)의 내부 로직 검증 | 모듈 상세 설계 |
| 구현 (Coding) | 소스 코드 | – (테스트 실행 대상) | – | – |