Test 란?
- 노출되지 않은 숨어있는 결함(Fault)을 찾기 위한 과정
- SW의 동작과 성능, 안정성을 요구사항과 비교하며 프로그램의 품질을 평가하고 개선하는 과정
Test 의 목적
- 잠재된 오류 발견
- 기술적 기능 및 성능 확인
- 사용자 요구 만족도 향상
- 제품 신뢰도 향상
Test 의 원리
💡 원리 |
📄 내용 |
🧐 원인 |
결함 발견 |
- 결함 제거가 아닌 결함 발견이 목적 |
|
불완전성 |
- 완벽한 테스팅은 불가능 (지극히 간단한 SW제외) |
|
- 무한경로, 무한입력값, 무한타이밍 | 자원의 한계 |
| 정황 의존성 | - 테스트는 테스트 주변환경에 의해 영향을 받음 | 외부요소, 심리요소 |
| 초기 집중
(요르돈 법칙) | - 개발 설계 시점부터 테스트를 고려 (TDD)
- 결함의 조기발견 및 재유입 방지 | 품질비용 감소 |
| 결함 집중 | - 결함의 80%는 20% 코드에 집중
- 결함이 높은 곳에 자원 집중 | 파레토 법칙(80-20 rule) |
| 살충제 패러독스 | - 동일한 테스트 전략, 기법을 적용할 시 내성이 생김
⇒ TC의 정기적인 리뷰와 개선, 경험 기반 접근법 필요 | 테스터의 수동적 자세 |
| 오류-부재 궤변 | - 결함이 없다 ≠ 품질이 우수하다 | SW 요구사항 불만족 |
Test 의 종류
단계별 구분
V diagram : 소프트웨어 개발 생명주기(SWLC)에 따라 대응되는 테스트를 표현한 다이어그램
테스트 |
세부 내용 |
비고 |
단위 테스트 |
|
|
(Unit Test) |
- 제어흐름 테스트 |
|
- 조건/결정 테스트
- 인터페이스 테스트
- 자료구조 테스트
- 실행경로 테스트
- 예외처리 테스트 | 일반적으로 화이트박스 테스트 포함 |
| 통합 테스트
(Integration Test) | - 상향식 통합
- 하향식 통합
- 백본 통합
- 빅뱅 통합 | |
| 시스템 테스트
(System Test) | - 기능 요구사항 검증 (블랙박스 테스트)
- 비기능 요구사항 검증 | |
| 인수 테스트
(Acceptance Test) | - 알파 테스트
- 베타 테스트 | |
| 설치 테스트
(Install Test) | - 하드웨어 호환성
- 파일시스템 구성
- 다른 SW와의 연계 | |
접근 방법에 따른 구분
- 정적 테스트
- 동적 테스트
- 소스 코드 열람에 따른 구분
- 블랙박스 테스트: 동치분할 검사, 경계값 분석, 오류 예측 검사, 비교 검사, 원인 효과 그래프
- 화이트박스 테스트: 조건 검사, 루프 검사, 기대값 분석, 데이터 흐름 검사
- 설계 기법에 따른 분류
- 명세 기반 테스트: 동치 분할, 경계값 분석, 상태 전이 모델
- 구조 기반 테스트: 제어흐름 테스트, 자료흐름 테스트
- 경험 기반 테스트: 애드혹 테스트, 탐색적 테스트 등
- 계획 정도에 따른 분류
- 애드혹 테스트: 계획 없이 휴리스틱으로 수행
- 탐색적 테스트: 최소한의 계획으로 수행
- 스크립트 테스트: 방법론 기반, 구체적 시나리오 하에서 수행