📘 소프트웨어 생명 주기 모델과 테스트
📌 개요
소프트웨어 생명 주기(SDLC, Software Development Life Cycle)는
소프트웨어 개발 과정에서 요구사항부터 유지보수까지 단계별 활동과 산출물을 정의한 모델이다.
각 SDLC 모델마다 테스트 수행 시점과 방법이 다르며, 효율적인 품질 확보를 위해 적합한 테스트 전략이 필요하다.
📌 순차적 개발 모델 (Sequential Development Model)
폭포수 모델 (Waterfall Model)
- 개념: 단계별 순차적 진행 모델
- 요구사항 → 설계 → 구현 → 테스트 → 유지보수
- 특징:
- 각 단계 완료 후 다음 단계 진행
- 테스트는 구현 이후 수행 → 초기 결함 발견 지연 가능
- 계획 중심, 문서화 강조
1️⃣ 요구사항 분석
- 목적: 사용자 요구사항 수집 및 명세화
- 테스트 활동: 요구사항 검토, 리뷰, 명세 기반 검증
2️⃣ 구조 설계 단계
- 목적: 시스템 구조 설계, 모듈 간 인터페이스 정의
- 테스트 활동: 설계 리뷰, 아키텍처 검토, 정적 테스트
3️⃣ 상세 설계 단계
- 목적: 모듈별 상세 설계
- 테스트 활동: 설계 리뷰, 결함 탐지, 정적 분석
4️⃣ 코딩
- 목적: 실제 소프트웨어 구현
- 테스트 활동: 단위 테스트(Unit Test), 코드 리뷰, 정적 분석
5️⃣ 테스팅
- 목적: 전체 시스템 통합 및 검증
- 테스트 활동: 통합 테스트, 시스템 테스트, 인수 테스트
V-모델 (Verification & Validation Model)
- 개념: 개발 단계와 테스트 단계를 대칭 구조로 배치
- 특징:
- 요구사항 ↔ 인수 테스트
- 설계 ↔ 시스템/통합 테스트
- 코딩 ↔ 단위 테스트
- 장점: 각 개발 단계마다 대응하는 테스트 단계가 명확, 품질 확보 용이
- 폭포수 모델과 비교: 폭포수는 순차적 진행, V-모델은 각 단계에 대응하는 테스트 명시
📌 진화적 개발 모델 (Evolutionary Development Model)
- 개념: 소프트웨어를 반복적으로 개발하면서 점진적 개선
- 특징:
- 초기 요구사항 불완전 → 반복적 개선
- 프로토타입 기반 테스트 → 사용성 검증, 성능 검증
- 테스트 활동: 반복적 테스트, 사용자 피드백 반영, 리스크 기반 테스트
📌 애자일 개발 모델 (Agile Development Model)
- 개념: 짧은 반복(IID, Iterative & Incremental Development) 단위로 개발 + 지속적 피드백
- 주요 활동:
- IID (Iterative & Incremental Development): 반복적 개발 + 테스트, 매 반복마다 통합
- 짝 프로그래밍 (Pair Programming): 동료 검토, 코드 품질 확보
- TDD (Test-Driven Development): 테스트 케이스 먼저 작성 → 코드 구현
- 지속적 통합 (Continuous Integration, CI): 코드 통합 시 자동 빌드 + 자동화 테스트 수행
- 테스트 활동:
- 반복 단위마다 기능 테스트 수행
- 자동화 테스트 활용 → 회귀 테스트, 단위 테스트
- 피드백 기반 품질 개선
🧠 핵심 정리
| 개발 모델 |
테스트 시점 / 방법 |
특징 |
| 폭포수 |
구현 후 테스트 |
계획적, 순차 진행, 초기 결함 발견 지연 가능 |
| V-모델 |
개발 단계별 대응 테스트 |
개발 단계 ↔ 테스트 단계 대칭, 품질 확보 용이 |
| 진화적 |
반복적 테스트 + 사용자 피드백 |
초기 요구 불완전, 반복 개선 중심 |
| 애자일 |
반복 단위 테스트, TDD, CI |
지속적 통합, 자동화, 빠른 피드백, 짝 프로그래밍 |
SDLC 모델 선택에 따라 테스트 시점, 범위, 전략이 달라진다.
폭포수 모델은 계획적 테스트, 애자일은 반복적·자동화 테스트, V-모델은 단계 대응 테스트가 핵심이다.