유즈케이스 테스팅 (Use Case Testing))

유즈케이스 테스팅은 유즈케이스나 비즈니스 시나리오를 기반으로 테스트를 명세화하는 블랙박스 테스트 설계 기법이다.
이 방법은 액터와 시스템 간의 상호작용을 표현하고, 그 결과를 사용자에게 전달하는 과정을 테스트한다.

실제 예시를 통해 구체적으로 살펴보자.
온라인 쇼핑몰의 상품 주문 기능에 대한 유즈케이스 테스팅을 설계한다고 가정해보면:

기본 흐름(Basic Flow):

  1. 사용자가 상품을 장바구니에 추가한다
  2. 시스템이 장바구니 내용을 표시한다
  3. 사용자가 주문하기 버튼을 클릭한다
  4. 시스템이 배송 정보 입력 폼을 표시한다
  5. 사용자가 배송 정보를 입력한다
  6. 시스템이 결제 수단 선택 화면을 표시한다
  7. 사용자가 결제 수단을 선택하고 결제한다
  8. 시스템이 주문 완료 화면을 표시한다

대체 흐름(Alternative Flows):

  • 장바구니가 비어있는 경우
  • 배송 정보가 불완전한 경우
  • 결제가 실패한 경우

예외 흐름(Exception Flows):

  • 시스템 오류 발생 시
  • 네트워크 연결 끊김 시
  • 세션 만료 시

유즈케이스 테스팅의 단계별 수행 과정을 살펴보자:

  1. 유즈케이스 분석 단계
    먼저 테스트할 유즈케이스의 모든 구성 요소를 파악한다:

    • 선행 조건(예: 로그인된 상태여야 함)
    • 사용자 액션과 시스템 응답
    • 대체 흐름과 예외 상황
    • 후행 조건(예: 주문 정보가 데이터베이스에 저장되어야 함)
  2. 테스트 시나리오 도출 단계
    각 흐름별로 구체적인 테스트 시나리오를 작성한다.
    기본 흐름뿐만 아니라 모든 대체 흐름과 예외 흐름에 대해서도 시나리오를 만든다.

  3. 테스트 케이스 설계 단계
    각 시나리오를 구체적인 테스트 케이스로 변환한다.
    테스트 케이스에는 다음 내용이 포함된다:

    • 테스트 목적
    • 선행 조건
    • 테스트 데이터
    • 테스트 단계
    • 예상 결과
    • 판단 기준
  4. 테스트 실행 준비 단계
    테스트 환경을 설정하고 필요한 테스트 데이터를 준비한다:

    • 테스트 계정 생성
    • 테스트용 상품 데이터 설정
    • 결제 시스템 테스트 모드 설정
  5. 테스트 실행 및 결과 검증 단계
    준비된 테스트 케이스를 실행하고 결과를 검증한다:

    • 각 단계의 실행 결과 기록
    • 예상 결과와의 비교
    • 발견된 문제점 문서화

주요 특징

  1. 프로세스 흐름 중심: 기본 흐름과 대체 흐름을 포함한 전체 프로세스를 테스트한다.
  2. 사용자 중심 접근: 실제 사용자의 관점에서 시스템을 검증한다.
  3. 시나리오 기반: 유즈케이스 상세(description)를 바탕으로 테스트 시나리오를 구성한다.
  4. 다양한 테스트 레벨 적용: 컴포넌트(단위) 레벨과 시스템 레벨에서 모두 적용 가능하다.

장점

  1. 실제 사용 환경에서의 결함 발견: 시스템이 실제로 사용되는 프로세스 흐름에서 결함을 효과적으로 찾아낼 수 있다.
  2. 인수 테스트에 유용: 고객이나 사용자 그룹이 참여하는 인수 테스트 설계에 특히 효과적이다.
  3. 통합 결함 식별: 통합 테스트 단계에서 컴포넌트 간 상호작용 문제를 찾는 데 도움이 된다.

테스트 프로세스

  1. 테스트 시나리오 구성: 어떤 흐름을 테스트할지 결정한다.
  2. 필수 상황 선택: 유즈케이스 상세에서 테스트에 필요한 핵심 상황을 식별한다.
  3. 상황 분류: 입력값, 출력값, 상황 처리 등으로 테스트 요소를 분류한다.
  4. ID 부여: 각 테스트 상황에 고유 ID를 할당한다.
  5. 값 결정: 각 상황에 대해 가능한 값(유효/무효, 상한/하한 등)을 정의한다.

테스트 레벨

  1. 컴포넌트(단위) 레벨: 개별 유즈케이스를 독립적으로 테스트한다.
  2. 시스템 레벨: 유즈케이스 간의 상호작용을 테스트한다. 활동 기반, 전이 기반, 경로 기반 커버리지 등의 방법을 사용할 수 있다.

효과적인 유즈케이스 테스팅을 위한 고급 전략

  • 경계값 분석 통합
    각 입력 필드에 대해 경계값 테스트를 수행한다. 예를 들어, 주문 수량의 최소값과 최대값을 테스트한다.

  • 상태 전이 고려
    시스템의 상태 변화를 추적하면서 테스트한다. 예를 들어, 주문 상태가 ‘결제 대기’ → ‘결제 완료’ → ‘배송 중’으로 올바르게 변경되는지 확인한다.

  • 데이터 일관성 검증
    전체 프로세스 수행 후 데이터가 올바르게 저장되고 처리되었는지 확인한다.

이러한 유즈케이스 테스팅은 현대의 복잡한 소프트웨어 시스템을 체계적으로 검증하는 데 매우 효과적인 방법이다. 특히 업무 프로세스가 복잡하거나 여러 시스템이 연계되어 있는 엔터프라이즈 애플리케이션 테스팅에서 큰 가치를 발휘한다.


참고 및 출처