📘 [QA] 테스팅 방법
📌 개요
테스팅 방법은 소프트웨어 개발 과정과 위험 요소, 변경 사항 등에 따라서 테스트를 어떻게 전략적으로 수행할 것인가에 대한 접근 방식이다.
단순히 테스트를 수행하는 것이 아니라,
상황에 맞는 방법을 선택하는 것이 중요하다.
📌 리그레션 테스트 (Regression Test)
✔ 개념
- 기존 기능이 변경이나 수정 이후에도 정상 동작하는지 확인하는 테스트
✔ 목적
- 수정으로 인해 기존 기능에 발생할 수 있는 부작용 방지
✔ 전략
1️⃣ 리테스트 범위 결정
- 리테스트 전량 (Retest All)
- 모든 기존 테스트 케이스 수행
- 장점: 결함 누락 없음
- 단점: 비용·시간 부담 큼
- 선택적 리그레션 (Selective Regression)
- 변경 영역과 영향 영역만 수행
- 장점: 시간·비용 절감
- 단점: 영향 영역을 잘못 판단하면 결함 누락 가능
2️⃣ 테스트 최소화 전략 (Test Minimization)
- 과거 결함 데이터와 중복 케이스 분석 후 불필요 케이스 제거
- 장점: 반복 실행 효율 향상, 자원 절약
3️⃣ 테스트 우선순위화 전략 (Test Prioritization)
- 위험도, 중요 기능, 최근 결함 기준으로 테스트 순서 결정
- 먼저 실행 → 핵심/고위험 기능 중심 검증
- 장점: 제한된 시간·자원 내 최대 결함 발견
✔ 특징
- 반복 수행됨
- 자동화에 적합
- 유지보수 단계에서 매우 중요
👉 “변경이 기존 기능에 영향을 주지 않았는가?”를 확인하는 테스트
📌 소프트웨어 생명 주기 모델과 테스트
소프트웨어 개발 방법론에 따라 테스트 접근 방식이 달라진다.
✔ 폭포수 모델 (Waterfall Model)
- 개발 단계가 순차적으로 진행
- 테스트는 개발 완료 후 수행
- 결함 발견 시 비용 증가
👉 테스트가 후반부에 집중됨
✔ V-모델 (V-Model)
- 개발 단계와 대응되는 테스트 단계 존재
- 요구사항 ↔ 인수 테스트
- 설계 ↔ 시스템/통합 테스트
- 구현 ↔ 단위 테스트
👉 개발과 테스트를 병행하는 구조
✔ 애자일 모델 (Agile Model)
- 반복적 개발
- 테스트를 지속적으로 수행
- 자동화 테스트 중요
👉 테스트와 개발이 동시에 진행됨
📌 위험 기반 테스트 (Risk-Based Testing)
✔ 개념
- 위험 요소를 분석하여 우선순위를 정해 테스트 수행
✔ 절차
- 위험 식별
- 위험 분석 (발생 가능성 × 영향도)
- 우선순위 결정
- 집중 테스트 수행
✔ 특징
- 제한된 자원을 효율적으로 사용
- 핵심 기능 중심 검증
👉 “가장 문제가 될 부분을 먼저 테스트”하는 전략
📌 모델 기반 테스트 (Model-Based Testing)
✔ 개념
- 시스템의 동작을 모델로 표현하고,
이를 기반으로 테스트 케이스를 자동 생성하는 방법
✔ 모델 예시
✔ 특징
- 체계적이고 자동화에 적합
- 복잡한 시스템에 효과적
👉 설계 모델을 기반으로 테스트를 도출하는 방식
🧠 전체 요약
- 리그레션 테스트 → 변경 후 기존 기능 검증 + 전략적 우선순위 적용
- 리테스트 전량 vs 선택적 / 최소화 / 우선순위화 전략
- 생명 주기 모델 → 개발 방법론에 따른 테스트 전략 차이
- 위험 기반 테스트 → 위험 우선순위 중심
- 모델 기반 테스트 → 모델을 활용한 체계적 설계
테스팅 방법은 상황과 목적에 맞게 선택하는 전략적 활동이다.