용어집 · 테스트 설계
결정 테이블 테스트
영어: Decision table testing
다른 이름: 결정 테이블, 의사결정 테이블 테스트, 디시전 테이블 테스트, 결정표 테스트
정의
조건의 조합과 각 조합이 일으켜야 할 동작을 표로 정리해, 모든 비즈니스 규칙에 테스트가 하나씩 대응되도록 하는 테스트 설계 기법입니다.
결정 테이블 테스트(Decision table testing)는 여러 조건의 조합에 따라 달라지는 비즈니스 로직을 모델링합니다. 조건을 행으로, 조건 값의 관련 조합을 열(규칙)로 나열하고, 규칙마다 기대 동작을 적습니다. 각 열은 적어도 하나의 테스트 케이스가 됩니다. 복잡한 규칙의 어떤 조합도 빠뜨리지 않도록 보장하는 가장 확실한 방법입니다.
예시: 대출 승인
규칙: 신용 점수가 700 이상이고 소득이 $40,000 이상이면 승인합니다. 점수가 700 이상이지만 소득이 그보다 낮으면 수동 심사로 넘깁니다. 점수가 700 미만인 기존 고객도 수동 심사로 넘깁니다. 그 외에는 모두 거절합니다.
예/아니요 조건 세 개로 2 x 2 x 2 = 8개의 규칙이 나옵니다.
| 조건 / 동작 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 |
|---|---|---|---|---|---|---|---|---|
| 신용 점수 >= 700 | Y | Y | Y | Y | N | N | N | N |
| 소득 >= $40,000 | Y | Y | N | N | Y | Y | N | N |
| 기존 고객 | Y | N | Y | N | Y | N | Y | N |
| 승인 | X | X | ||||||
| 수동 심사 | X | X | X | X | ||||
| 거절 | X | X |
표로 작성하다 보면 요구사항이 명확히 답하지 않은 질문이 드러납니다. 예를 들어 R5와 R7은 모두 수동 심사이므로, 점수가 낮은 기존 고객에게는 소득이 아무런 차이를 만들지 않습니다. 이것이 의도된 것일까요, 아니면 기존 고객이라도 점수와 소득이 모두 낮으면 거절해야 할까요? 표가 이 질문을 드러내 주므로 테스트 전에 프로덕트 오너와 확인할 수 있습니다.
테이블 축소하기
어떤 조건이 결과에 영향을 주지 않으면 “상관없음”을 뜻하는 “-“로 규칙을 병합할 수 있습니다. R1과 R2는 고객 여부와 상관없이 모두 승인이므로 점수 Y, 소득 Y, 고객 - 라는 하나의 규칙으로 합칠 수 있습니다. 축소하면 테스트 수가 줄지만, 서로 다른 동작 경로마다 최소 하나의 테스트는 유지하세요.
다른 기법과의 결합
각 조건에는 여전히 경계가 있습니다. “점수 >= 700”은 699와 700으로, “소득 >= $40,000”은 $39,999와 $40,000으로 테스트해야 합니다. 조합은 결정 테이블로 커버하고, 구체적인 값은 경계값 분석으로 고르세요.
언제 사용하나
결정 테이블은 여러 조건이 상호작용하는 규칙에 적합합니다. 가격과 할인, 자격 요건, 권한, 보험 견적, 세금 등입니다. 조건이 많으면 테이블이 2^n으로 커지므로 조건을 그룹화하거나, 관련 없는 조건을 축소하거나, 서로 독립적인 설정 옵션이라면 페어와이즈 테스트로 전환하세요.