결정 테이블 테스팅 (Decision Table Testing)

결정 테이블 테스팅은 복잡한 비즈니스 로직이나 시스템의 동작을 테스트하기 위한 체계적인 방법.
여러 조건(conditions)과 그에 따른 행동(actions)의 모든 가능한 조합을 표 형태로 정리하여 테스트 케이스를 도출하는 기법.

예를 들어, 온라인 쇼핑몰의 할인 정책을 테스트한다고 생각해보자.
회원 등급(일반/VIP), 구매 금액(5만원 이상/미만), 프로모션 코드 사용 여부에 따라 다른 할인율이 적용된다면, 이러한 여러 조건의 조합을 결정 테이블로 정리하여 체계적으로 테스트할 수 있다.

결정 테이블의 구성 요소

결정 테이블은 네 가지 주요 부분으로 구성된다:

  1. 조건 스텁(Condition Stub):
    테스트 대상 시스템에 영향을 미치는 조건들을 나열한다.
    예를 들어:

    • 회원 등급
    • 구매 금액
    • 프로모션 코드 사용 여부
  2. 조건 항목(Condition Entries):
    각 조건에 대한 가능한 값들을 표시합니다. 보통 ‘Y/N’ 또는 ‘T/F’로 표현한다.

  3. 행동 스텁(Action Stub):
    시스템이 취할 수 있는 행동들을 나열한다.
    예를 들어:

    • 할인율 적용
    • 포인트 적립
    • 무료 배송 제공
  4. 행동 항목(Action Entries):
    각각의 조건 조합에 대해 시스템이 취해야 할 행동을 표시한다.

결정 테이블 작성 과정

  1. 조건 식별:
    먼저 시스템에 영향을 미치는 모든 조건들을 식별한다. 이는 요구사항 문서나 시스템 명세를 바탕으로 한다.

  2. 행동 식별:
    시스템이 취할 수 있는 모든 가능한 행동들을 식별한다.

  3. 규칙 작성:
    조건들의 모든 가능한 조합과 그에 따른 행동을 표로 정리한다.

  4. 테이블 단순화:
    불가능하거나 의미 없는 조합을 제거하여 테이블을 최적화한다.

예시

온라인 쇼핑몰 할인 정책 테스트

조건:

  • C1: 회원 등급 (VIP/일반)
  • C2: 구매 금액 (5만원 이상/미만)
  • C3: 프로모션 코드 사용 (예/아니오)

행동:

  • A1: 10% 할인
  • A2: 5% 할인
  • A3: 추가 2% 할인
  • A4: 무료 배송

이를 결정 테이블로 표현하면:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
| 규칙 번호     | 1     | 2     | 3     | 4     | 5     | 6     | 7     | 8     |
| ------------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
| C1: VIP       | Y     | Y     | Y     | Y     | N     | N     | N     | N     |
| C2: 5만원↑    | Y     | Y     | N     | N     | Y     | Y     | N     | N     |
| C3: 프로모션  | Y     | N     | Y     | N     | Y     | N     | Y     | N     |
| ------------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
| A1: 10% 할인  | X     | X     |       |       |       |       |       |
| A2: 5% 할인   |       |       | X     | X     | X     | X     |       |
| A3: 2% 추가   | X     |       | X     |       | X     |       | X     |
| A4: 무료배송  | X     | X     |       |       | X     | X     |       |

테스트 케이스 도출

결정 테이블에서 각 규칙(열)은 하나의 테스트 케이스가 된다. 예를 들어:

테스트 케이스 1:

  • 입력: VIP 회원이 5만원 이상 구매하고 프로모션 코드 사용
  • 기대 결과: 10% 할인 + 2% 추가 할인 + 무료 배송

주요 특징

  1. 복잡한 비즈니스 규칙을 문서화하는 데 사용된다.
  2. 시스템의 조건과 동작(Actions)을 식별한다.
  3. 입력 조건과 동작은 주로 참(True)과 거짓(False)으로 표현된다.
  4. 각 열(컬럼)은 하나의 비즈니스 규칙과 대응관계를 가진다.

결정 테이블 테스팅의 장점

  1. 체계성: 모든 가능한 조건 조합을 빠짐없이 테스트할 수 있다.

  2. 명확성: 테스트 조건과 기대 결과가 명확하게 정의된다.

  3. 효율성: 중복되거나 불필요한 테스트 케이스를 쉽게 식별하고 제거할 수 있다.

  4. 유지보수성: 조건이나 행동이 변경될 때 테스트 케이스를 쉽게 업데이트할 수 있다.

결정 테이블 테스팅의 제한사항과 해결 방안

  1. 테이블 크기 증가: 조건이 많아지면 테이블이 기하급수적으로 커질 수 있다. 해결방안:

    • 조건 그룹화
    • 동등 분할
    • 우선순위가 높은 조합만 선택
  2. 동적 조건 처리: 시간에 따라 변하는 조건을 표현하기 어렵다. 해결방안:

    • 상태 전이 테스팅과 결합
    • 시나리오 기반 테스트 추가
  3. 복잡한 의존관계: 조건들 간의 복잡한 의존관계를 표현하기 어려울 수 있다. 해결방안:

    • 계층적 결정 테이블 사용
    • 의존관계를 명시적으로 문서화

참고 및 출처