1. 테스트의 필요성
1.1 소프트웨어 결함
Error(오류) → Defect/Bug(결함) → Failure(실패)
| 구분 | 의미 |
|---|---|
| Error | 사람이 만든 실수 |
| Defect / Bug | 코드 또는 산출물에 존재하는 결함 |
| Failure | 실행 시 기대 결과와 다른 동작 발생 |
결함 발생 원인
- 인간의 실수
- 요구사항 또는 설계 문제
- 개발 과정의 오류
- 환경적 요인
- 방사선
- 자기장
- 전자기장
- 물리적 오염
- 하드웨어 상태 변화
1.2 개발 단계별 테스팅의 역할
테스팅은 소프트웨어 결함을 발견하고 품질과 리스크를 관리하는 활동이며 소프트웨어 개발 생명주기 전반에서 수행된다.
초기 단계 (요구사항 · 설계)
문서 리뷰와 정적 분석을 통해 요구사항, 설계 단계의 결함을 조기에 발견
개발 단계 (구현)
구현된 기능을 실행하여 컴포넌트 · 통합 · 시스템 수준의 동작 검증
- 개발 조직 : 컴포넌트 테스트 / 통합 테스트
- 테스트 조직 : 시스템 테스트 / 인수 테스트
유지보수 단계
시스템 및 환경 변경에 대응하기 위해 운영 테스팅으로 결함과 장애를 예방하여 기존 기능 영향 여부와 안정성 확인
2. 테스팅 이해
테스팅 = 정적 테스트 + 동적 테스트
즉 결함을 발견하고 품질 정보를 제공하는 활동의 집합
2.1 테스팅 목적
- 결함 발견 및 예방
- 요구사항 및 명세 충족 여부 확인
- 제품 품질 수준 평가
- 품질 관련 정보 제공
- 프로젝트 리스크 정보 제공
- 개발 프로세스 점검 및 개선
- 검증 · 리뷰 · 평가 · 보고
※ 상세 활동은 테스트 프로세스의 기초에서 설명
2.2 테스팅의 정도
테스트 범위 = 리스크 + 제약 요소
제약 요소
- 일정
- 비용
- 기술적 제약
- 비즈니스 요구
- 인력
- 테스트 환경
3. 테스팅의 원리 및 가이드
1️⃣ 테스팅은 결함 존재를 밝히는 활동
- 결함이 없음을 증명할 수는 없음
2️⃣ 완벽한 테스팅은 불가능
- 입력 값의 무한한 조합
- 실행 경로의 무한한 가능성
3️⃣ 테스팅은 개발 초기부터 시작
- 요구사항 단계부터 테스트 계획 가능
4️⃣ 결함 집중 (Defect Clustering)
- 대부분의 결함은 소수의 모듈에 집중
5️⃣ 살충제 패러독스 (Pesticide Paradox)
- 동일 테스트 반복 → 결함 발견 감소
- 테스트 케이스 주기적 개선 필요
6️⃣ 테스팅은 정황 의존적
시스템 특성에 따라 테스트 방법이 달라진다.
예
- 금융 시스템
- 게임
- 의료 시스템
7️⃣ 오류 부재의 궤변 (Absence of Errors Fallacy)
결함이 없더라도
- 사용자 요구
- 사용성
- 비즈니스 목적
을 만족하지 못하면 품질이 낮은 시스템
4. 테스트 프로세스의 기초
테스트 활동은 순차적이지만 실제 프로젝트에서는 병행·반복 수행 가능
1. 계획과 제어 (Test Planning & Control)
테스트 목표 설정 및 관리 활동
주요 활동
- 테스트 목표 정의
- 리스크 분석
- 테스트 전략 수립
- 일정 관리
- 완료 기준(Exit Criteria) 설정
- 테스트 진행 상황 모니터링
- 테스트 제어 및 조정
2. 분석과 설계 (Test Analysis & Design)
테스트 기준을 기반으로 테스트 케이스를 도출하는 단계
주요 활동
- 테스트 베이시스 검토
- 테스트 조건 도출
- 테스트 우선순위 설정
- 테스트 케이스 설계
- 테스트 기법 적용
- 테스트 환경 정의
3. 구현과 실행 (Test Implementation & Execution)
테스트 준비 및 실제 수행 단계
주요 활동
- 테스트 케이스 구체화
- 테스트 프로시저 작성
- 테스트 스크립트 작성
- 테스트 환경 구축
- 테스트 실행
- 테스트 결과 기록
- 결함 / 이슈 보고
- 결함 심각도 및 우선순위 분류
4. 완료 조건 평가와 리포팅 (Evaluation & Reporting)
테스트 목표 대비 결과 평가
주요 활동
- 완료 기준 충족 여부 확인
- 테스트 결과 분석
- 테스트 진행률 평가
- 이해관계자 보고
- 테스트 요약 보고서 작성
5. 테스트 마감 활동 (Test Closure)
테스트 종료 후 결과 정리 및 개선 활동
주요 활동
- 테스트 산출물 정리
- 테스트 데이터 보관
- 테스트웨어(Testware) 축적
- 결함 분석
- 테스트 프로세스 평가 및 개선
- 인수 관련 문서화
5. 테스팅의 심리학
5.1 테스트 독립성
개발자와 독립된 테스트 수행 시
- 객관성 증가
- 결함 발견 가능성 증가
- 품질 평가 신뢰도 향상
5.2 커뮤니케이션
테스트 과정에서는 효과적인 의사소통이 중요
- 결함은 비난이 아닌 개선 관점으로 전달
- 개발자와 협력적 문제 해결
- 명확하고 객관적인 보고
---
5.3 팀 협력
- 감정적 충돌 최소화
- 상호 이해 기반 협업
- 품질 중심 문화 형성
'SW QA' 카테고리의 다른 글
| 3. 테스트 설계 기법 (0) | 2026.03.10 |
|---|---|
| 2. 소프트웨어 수명주기와 테스팅 (0) | 2026.03.08 |
| SW QA 이해 (1) | 2026.02.27 |