📘 테스트 분류와 테스팅 방법
📌 개요
테스트는 단순히 실행하는 활동이 아니라
목적, 범위, 관점, 설계 방법에 따라 체계적으로 분류된다.
테스트를 올바르게 이해하려면
“어떤 기준으로 분류되는가”를 구분해야 한다.
📌 테스트 분류
테스트는 다음 기준에 따라 분류할 수 있다.
- 테스트 레벨에 의한 분류
- 테스트 유형에 의한 분류
- 테스트 설계 기법에 의한 분류
📌 테스트 레벨별 분류
테스트 수행 범위에 따른 분류
✔ 단위 테스트 (Unit Test)
✔ 통합 테스트 (Integration Test)
✔ 시스템 테스트 (System Test)
✔ 인수 테스트 (Acceptance Test)
👉 “어느 범위까지 검증하는가”의 기준
📌 테스트 유형에 의한 분류 (기능 / 비기능)
✔ 기능 테스트 (Functional Test)
✔ 비기능 테스트 (Non-functional Test)
👉 “어떤 관점으로 검증하는가”의 기준
📌 ISO 25010 품질 모델
ISO 25010은 소프트웨어 품질 특성을 정의한 국제 표준 모델이다.
✔ 주요 품질 특성
- 기능 적합성 (Functional Suitability)
- 성능 효율성 (Performance Efficiency)
- 호환성 (Compatibility)
- 사용성 (Usability)
- 신뢰성 (Reliability)
- 보안성 (Security)
- 유지보수성 (Maintainability)
- 이식성 (Portability)
👉 비기능 테스트의 기준이 되는 품질 모델
📌 테스트 설계 기법에 따른 분류
✔ 개요
테스트 설계 기법은
테스트 케이스를 체계적으로 도출하기 위한 방법이다.
📌 정적 테스트 (Static Test)
- 프로그램을 실행하지 않고 수행
- 산출물(요구사항, 설계서, 코드 등) 검토
✔ 리뷰 (Review)
사람이 직접 문서나 코드를 검토하는 방법
▪ 리뷰 유형
✔ 정적 분석 (Static Analysis)
도구를 이용하여 코드 구조를 분석
▪ 정적 분석 유형
- 코딩 규칙 위반 탐지
- 복잡도 분석
- 잠재적 오류 탐지
📌 동적 테스트 (Dynamic Test)
- 프로그램을 실제로 실행하여 검증
- 실행 결과를 기반으로 결함 발견
📌 명세 기반 테스트와 구조 기반 테스트
✔ 명세 기반 테스트 (Black-box)
- 요구사항 중심 설계
- 내부 구조를 고려하지 않음
✔ 구조 기반 테스트 (White-box)
👉 관점 차이 : 외부 명세 vs 내부 구조
📌 경험 기반 테스트
테스터의 경험과 직관을 활용한 설계 방법
✔ 오류 추정 (Error Guessing)
▪ 오류 추정 기법
- 경험 기반 체크리스트 활용
- 자주 발생한 오류 패턴 분석
▪ 가장 효과적인 방법
- 숙련된 테스터의 경험과 과거 결함 데이터 활용
오류 추정의 예시
- 입력 목록 크기가 0일 때
- 입력 목록이 오직 하나의 데이터만 가지고 있는 경우
- 입력 목록이 모두 동일한 데이터를 가지고 있는 경우
- 입력 목록이 모두 정렬이 되어 있는 경우
✔ 탐색적 테스트 (Exploratory Testing)
- 설계와 실행을 동시에 수행
- 즉흥적이지만 체계적인 접근
탐색적 테스트를 가이드 없이 수행 할 때 단점
- 탐색하는 데 과도한 시간을 사용할 위험이 존재함
- 여러명이 함께 탐색적 테스트에 참여할 경우 동일 기능 중복하여 반복적 테스트를 할 가능성이 높음
- 테스트 범위를 명확히 문서화 하지 않고 테스트 실시하여 커버리지에 대한 판단이 불가함
▪ 애자일 방법에서의 탐색적 테스트
- 짧은 반복 주기
- 빠른 피드백
- 문서화보다 실행 중심
🧠 전체 구조 요약
- 테스트 레벨 → 범위 기준
- 테스트 유형 → 품질 관점 기준
- ISO 25010 → 비기능 품질 기준
- 정적 테스트 → 실행 없이 검증
- 동적 테스트 → 실행하여 검증
- 명세/구조 기반 → 설계 관점 차이
- 경험 기반 → 테스터 경험 활용
테스트는 하나의 방법이 아니라,
다양한 기준에 따라 체계적으로 분류되는 활동이다.