테스트 설계 기법
명세 기반(동등분할·경계값·상태전이·결정테이블·페어와이즈), 구조 기반(구문·분기·조건·MC/DC, 순환 복잡도·경로 테스트), 모델 기반 테스트, 경험 기반 기법을 상황에 맞게 골라 쓴다.
★ 가장 중요한 기초. 이후 모든 모듈이 여기서 배운 기법을 전제한다.
학습 목표
이 모듈 한 줄 요약 — "다 해 볼 수 없으니, 무엇을 볼지 근거를 갖고 고른다". 모듈 1에서 "완전한 테스트는 불가능하다" 를 봤다. 그러면 무엇을 고를 것인가 — 그 고르는 방법들이 이 모듈이다. 감으로 고르는 것과 기법으로 고르는 것의 차이는 결함을 더 찾느냐가 아니라, 무엇을 안 봤는지 말할 수 있느냐에 있다.
레슨이 11개로 이 커리큘럼에서 가장 긴 축에 속하고, 중간부터 난이도가 올라간다. 처음이라면 레슨 1(동등분할·경계값)과 레슨 2(기법 지도)만 먼저 읽어도 된다 — 그 둘이 나머지 아홉 개의 지도 구실을 한다. 코드를 보는 기법(레슨 7·10)은 모듈 9 (개발 지식)를 지나고 와도 늦지 않다.
이 모듈을 마치면 요구사항 하나를 받았을 때 "어떤 기법으로, 몇 개의 케이스를 만들 것인가"를 스스로 결정할 수 있다. 명세 기반(블랙박스), 구조 기반(화이트박스), 경험 기반 세 갈래를 전부 다루되, 실무에서 가장 자주 쓰는 명세 기반 기법(동등분할·경계값·상태전이·결정테이블· 페어와이즈)에 가장 많은 시간을 쓴다.
완료 후 할 수 있는 것
- 입력이 사실상 무한한 필드를 동등분할로 유한한 대표값 집합으로 줄일 수 있다
- 경계값 분석으로
>/>=같은 코드 수준의 흔한 버그를 예측하고 겨냥할 수 있다 - 상태가 있는 화면(장바구니, 주문 상태 등)을 상태 전이 다이어그램으로 모델링할 수 있다
- 여러 옵션 조합을 페어와이즈 기법과 도구(PICT 등)로 압축해 테스트할 수 있다
- 커버리지 지표(구문·분기·조건·MC/DC)를 읽고, 코드 리뷰에서 테스트 공백을 지적할 수 있다
- 순환 복잡도로 최소 필요 테스트 케이스 수를 계산하고, 경로 테스트로 케이스를 체계적으로 뽑아낼 수 있다
- 상태 전이 모델에서 테스트 케이스를 자동으로 생성하는 모델 기반 테스트가 언제 효과적인지 판단할 수 있다
- AI가 생성한 테스트 케이스에서 빠진 경계·창작된 요구사항을 스스로 찾아낼 수 있다
채용시장에서의 위치
QA 채용공고 대부분이 "테스트 케이스 설계 기법 이해"를 명시적으로 요구하고, 면접에서 "이 입력 필드의 TC를 설계해보라"는 형태로 실제로 손으로 풀리는 경우가 많다. 이 모듈은 이 커리큘럼 전체에서 유일하게 ⭐ 표시가 붙은 "가장 중요한 기초"이기도 하다 — 이후 자동화(모듈 11~14)와 AI 교차검증(모듈 18-C)에서 "테스트가 무엇을 검증하는지"를 판단하는 근거가 전부 여기서 나온다.
관련 도구도 함께 알아둔다.
| 구분 | 도구 |
|---|---|
| 페어와이즈 조합 | PICT (Microsoft), Allpairs, JENNY |
| 분류 트리 기법 | TESTONA |
| 구조 기반 커버리지 | SonarQube, VectorCAST, Test RealTime, LDRA |
실무에서는 "이 기법을 안다"보다 "왜 이 케이스를 선택했는지 근거를 설명할 수 있다"가 평가받는다. 20개를 무작정 넣는 사람과, 6개로 같은 커버리지를 설명하는 사람의 차이가 바로 이 모듈의 내용이다.
레슨 (11개)
- 입문약 25분
명세 기반 기법 (1) 동등분할과 경계값 분석
무한한 입력을 유한한 테스트로 줄이는 두 기본 기법. 경계에서 결함이 나오는 이유를 코드 수준에서 이해한다.
- 중급약 18분
테스트 설계 기법 지도 — 전략적으로 기법 고르기
명세 기반·구조 기반·경험 기반 세 갈래를 지도로 그리고, 상황에 따라 어떤 기법을 왜 고르는지 판단하는 기준을 세운다.
- 중급약 24분
명세 기반 기법 (2) 상태전이와 결정테이블
시간에 따라 상태가 바뀌는 시스템은 상태전이로, 여러 조건이 동시에 맞물리는 규칙은 결정테이블로 설계한다.
- 중급약 20분
명세 기반 기법 (3) 유즈케이스 기반 테스트
사용자의 목표를 중심으로 정상 흐름과 대안·예외 흐름을 나눠, 실제 사용 시나리오에 가까운 테스트 케이스를 설계한다.
- 중급약 22분
명세 기반 기법 (4) 조합 테스트 — 페어와이즈와 PICT
모듈 1에서 확인한 조합 폭발 문제를, "대부분의 결함은 두 값의 조합에서 나온다"는 경험칙으로 실현 가능한 크기로 줄인다.
- 중급약 18분
명세 기반 기법 (5) 분류 트리 기법과 TESTONA
테스트 대상을 관점별로 체계적으로 쪼개 나무 구조로 그리고, 빠뜨린 관점이 있는지 시각적으로 확인하는 법을 익힌다.
- 중급약 24분
구조 기반 기법 — 구문·분기·조건·MC/DC 커버리지
명세가 아니라 실제 코드를 근거로 테스트한다. 구문·분기·조건 커버리지의 차이를 코드로 직접 계산해본다.
- 중급약 18분
경험 기반 기법 — 오류 추정과 체크리스트
명세가 부실하거나 시간이 부족할 때, 과거에 자주 터졌던 결함 패턴을 근거로 빠르게 테스트 범위를 채우는 법을 익힌다.
- 중급약 25분
TC 설계 종합 — 입력·처리·출력 관점, 중복과 누락 줄이기
이 모듈에서 배운 기법들을 한 기능에 실제로 조합해보고, 입력·처리·출력 세 관점으로 빠진 부분을, 그리고 중복된 케이스를 정리한다.
- 고급약 24분
화이트박스 심화 — 순환 복잡도로 최소 테스트 케이스 수 계산하기
코드가 복잡할수록 필요한 테스트 케이스도 늘어난다. 이 관계를 감이 아니라 숫자(순환 복잡도)로 계산하고, 코드의 모든 독립 경로를 실제로 테스트하는 경로 테스트를 익힌다.
- 고급약 22분
모델 기반 테스트(Model-Based Testing) — 그림에서 테스트 케이스를 자동으로 뽑아내기
레슨 3에서 손으로 그린 상태 전이표를 모델로 삼아, 그 모델이 가능한 모든 경로를 스스로 순회하며 테스트 케이스를 생성하게 만드는 기법을 익힌다.
이 모듈의 실습
실습은 별도 저장소에서 진행합니다. 새 탭으로 열립니다.
- 차터로 이끄는 탐색 세션과 결함 지도중급 · 약 120분 · 바로 실습
도구: markdown
- 쇼핑몰 규칙으로 테스트 케이스 설계하기중급 · 약 120분 · 바로 실습
도구: csv