결정 테이블 테스팅 (Decision Table Testing)
결정 테이블 테스팅은 복잡한 비즈니스 로직이나 시스템의 동작을 테스트하기 위한 체계적인 방법.
여러 조건(conditions)과 그에 따른 행동(actions)의 모든 가능한 조합을 표 형태로 정리하여 테스트 케이스를 도출하는 기법.
예를 들어, 온라인 쇼핑몰의 할인 정책을 테스트한다고 생각해보자.
회원 등급(일반/VIP), 구매 금액(5만원 이상/미만), 프로모션 코드 사용 여부에 따라 다른 할인율이 적용된다면, 이러한 여러 조건의 조합을 결정 테이블로 정리하여 체계적으로 테스트할 수 있다.
결정 테이블의 구성 요소
결정 테이블은 네 가지 주요 부분으로 구성된다:
조건 스텁(Condition Stub):
테스트 대상 시스템에 영향을 미치는 조건들을 나열한다.
예를 들어:- 회원 등급
- 구매 금액
- 프로모션 코드 사용 여부
조건 항목(Condition Entries):
각 조건에 대한 가능한 값들을 표시합니다. 보통 ‘Y/N’ 또는 ‘T/F’로 표현한다.행동 스텁(Action Stub):
시스템이 취할 수 있는 행동들을 나열한다.
예를 들어:- 할인율 적용
- 포인트 적립
- 무료 배송 제공
행동 항목(Action Entries):
각각의 조건 조합에 대해 시스템이 취해야 할 행동을 표시한다.
결정 테이블 작성 과정
조건 식별:
먼저 시스템에 영향을 미치는 모든 조건들을 식별한다. 이는 요구사항 문서나 시스템 명세를 바탕으로 한다.행동 식별:
시스템이 취할 수 있는 모든 가능한 행동들을 식별한다.규칙 작성:
조건들의 모든 가능한 조합과 그에 따른 행동을 표로 정리한다.테이블 단순화:
불가능하거나 의미 없는 조합을 제거하여 테이블을 최적화한다.
예시
온라인 쇼핑몰 할인 정책 테스트
조건:
- C1: 회원 등급 (VIP/일반)
- C2: 구매 금액 (5만원 이상/미만)
- C3: 프로모션 코드 사용 (예/아니오)
행동:
- A1: 10% 할인
- A2: 5% 할인
- A3: 추가 2% 할인
- A4: 무료 배송
이를 결정 테이블로 표현하면:
|
|
테스트 케이스 도출
결정 테이블에서 각 규칙(열)은 하나의 테스트 케이스가 된다. 예를 들어:
테스트 케이스 1:
- 입력: VIP 회원이 5만원 이상 구매하고 프로모션 코드 사용
- 기대 결과: 10% 할인 + 2% 추가 할인 + 무료 배송
주요 특징
- 복잡한 비즈니스 규칙을 문서화하는 데 사용된다.
- 시스템의 조건과 동작(Actions)을 식별한다.
- 입력 조건과 동작은 주로 참(True)과 거짓(False)으로 표현된다.
- 각 열(컬럼)은 하나의 비즈니스 규칙과 대응관계를 가진다.
결정 테이블 테스팅의 장점
체계성: 모든 가능한 조건 조합을 빠짐없이 테스트할 수 있다.
명확성: 테스트 조건과 기대 결과가 명확하게 정의된다.
효율성: 중복되거나 불필요한 테스트 케이스를 쉽게 식별하고 제거할 수 있다.
유지보수성: 조건이나 행동이 변경될 때 테스트 케이스를 쉽게 업데이트할 수 있다.
결정 테이블 테스팅의 제한사항과 해결 방안
테이블 크기 증가: 조건이 많아지면 테이블이 기하급수적으로 커질 수 있다. 해결방안:
- 조건 그룹화
- 동등 분할
- 우선순위가 높은 조합만 선택
동적 조건 처리: 시간에 따라 변하는 조건을 표현하기 어렵다. 해결방안:
- 상태 전이 테스팅과 결합
- 시나리오 기반 테스트 추가
복잡한 의존관계: 조건들 간의 복잡한 의존관계를 표현하기 어려울 수 있다. 해결방안:
- 계층적 결정 테이블 사용
- 의존관계를 명시적으로 문서화