본문으로 건너뛰기
중급약 11시간 (예상)

테스트 설계 기법

명세 기반(동등분할·경계값·상태전이·결정테이블·페어와이즈), 구조 기반(구문·분기·조건·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개)

  1. 입문약 25분

    명세 기반 기법 (1) 동등분할과 경계값 분석

    무한한 입력을 유한한 테스트로 줄이는 두 기본 기법. 경계에서 결함이 나오는 이유를 코드 수준에서 이해한다.

  2. 중급약 18분

    테스트 설계 기법 지도 — 전략적으로 기법 고르기

    명세 기반·구조 기반·경험 기반 세 갈래를 지도로 그리고, 상황에 따라 어떤 기법을 왜 고르는지 판단하는 기준을 세운다.

  3. 중급약 24분

    명세 기반 기법 (2) 상태전이와 결정테이블

    시간에 따라 상태가 바뀌는 시스템은 상태전이로, 여러 조건이 동시에 맞물리는 규칙은 결정테이블로 설계한다.

  4. 중급약 20분

    명세 기반 기법 (3) 유즈케이스 기반 테스트

    사용자의 목표를 중심으로 정상 흐름과 대안·예외 흐름을 나눠, 실제 사용 시나리오에 가까운 테스트 케이스를 설계한다.

  5. 중급약 22분

    명세 기반 기법 (4) 조합 테스트 — 페어와이즈와 PICT

    모듈 1에서 확인한 조합 폭발 문제를, "대부분의 결함은 두 값의 조합에서 나온다"는 경험칙으로 실현 가능한 크기로 줄인다.

  6. 중급약 18분

    명세 기반 기법 (5) 분류 트리 기법과 TESTONA

    테스트 대상을 관점별로 체계적으로 쪼개 나무 구조로 그리고, 빠뜨린 관점이 있는지 시각적으로 확인하는 법을 익힌다.

  7. 중급약 24분

    구조 기반 기법 — 구문·분기·조건·MC/DC 커버리지

    명세가 아니라 실제 코드를 근거로 테스트한다. 구문·분기·조건 커버리지의 차이를 코드로 직접 계산해본다.

  8. 중급약 18분

    경험 기반 기법 — 오류 추정과 체크리스트

    명세가 부실하거나 시간이 부족할 때, 과거에 자주 터졌던 결함 패턴을 근거로 빠르게 테스트 범위를 채우는 법을 익힌다.

  9. 중급약 25분

    TC 설계 종합 — 입력·처리·출력 관점, 중복과 누락 줄이기

    이 모듈에서 배운 기법들을 한 기능에 실제로 조합해보고, 입력·처리·출력 세 관점으로 빠진 부분을, 그리고 중복된 케이스를 정리한다.

  10. 고급약 24분

    화이트박스 심화 — 순환 복잡도로 최소 테스트 케이스 수 계산하기

    코드가 복잡할수록 필요한 테스트 케이스도 늘어난다. 이 관계를 감이 아니라 숫자(순환 복잡도)로 계산하고, 코드의 모든 독립 경로를 실제로 테스트하는 경로 테스트를 익힌다.

  11. 고급약 22분

    모델 기반 테스트(Model-Based Testing) — 그림에서 테스트 케이스를 자동으로 뽑아내기

    레슨 3에서 손으로 그린 상태 전이표를 모델로 삼아, 그 모델이 가능한 모든 경로를 스스로 순회하며 테스트 케이스를 생성하게 만드는 기법을 익힌다.

이 모듈의 실습

실습은 별도 저장소에서 진행합니다. 새 탭으로 열립니다.