442. 테스트 시나리오 (Test Scenario)

핵심 인사이트 (3줄 요약)

  1. 본질: 테스트 시나리오(Test Scenario)는 소프트웨어의 특정 기능이나 테스트 가능한 영역을 한 문장으로 표현한 것으로, "무엇을 테스트할 것인가"에 대한 high-levelな 정의이다. 테스트 시나리오는複数の 테스트 케이스의 논리적 그룹으로서, 특정 테스트 목적을为中心로 관련 테스트 케이스들을 묶는 역할을 한다.
  2. 가치: 테스트 시나리오는 테스트 범위와 목적을 명확히 하여 테스트 기획의 효율성을 높이고, 이해관계자들이 테스트 진행 상황과 범위를 쉽게 파악할 수 있게 하며, 요구사항에서 테스트 가능 항목으로의 추적성을 확보하는 기반이 된다.
  3. 융합: 테스트 시나리오는 Agile의 사용자 스토리(User Story)와 연결하여 시나리오 기반 인수 테스트(Scenario-Based Acceptance Testing)로 발전하였으며, BDD(Behavior-Driven Development)의 Given-When-Then 형식과 결합하여 비기술적인 이해관계자도 이해할 수 있는 테스트 명세로 활용된다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

  • 개념: 테스트 시나리오는 특정 소프트웨어 기능, 모듈, 또는 사용자 여정(Journey)을 테스트하기 위해 작성되는 high-levelなテスト 목표 설명이다. 이는 "사용자가 로그인할 수 있어야 한다", "결제 시스템이 올바른 금액을 계산해야 한다"와 같이 간결하게 표현된다. 테스트 시나리오는通常 하나 이상의 테스트 케이스를 포함하며, 각 시나리오는 특정 테스트 목적을服务한다.

  • 필요성: 대규모 시스템에서는 수백甚至 수천 개의 테스트 케이스가 존재할 수 있다. 이러한 테스트 케이스들을 개별적으로 관리하면テスト策划과進捗管理가 매우 복잡해진다. 테스트 시나리오는 이러한 테스트 케이스들을 논리적 그룹으로 구성하여, 테스트 범위의 구조화를 가능하게 한다.

  • 💡 비유: 테스트 시나리오는 **'음식점의 메뉴판'**과 같다. 메뉴판에는 "한정", "오늘의 추천", "베스트셀러" 등의 카테고리가 있고, 각 카테고리 아래에 개별 요리가 목록된다. 테스트 시나리오도 마찬가지로 "로그인 기능", "결제 기능" 등의 시나리오(카테고리) 아래에具体的な 테스트 케이스(요리)가 구성된다.

  • 등장 배경 및 발전 과정:

    1. 1990년대: 요구사항 기반 테스트 기획에서 테스트 시나리오 개념 정립
    2. 2000년대: ISO/IEC 29119 (Software Testing) 표준에서 테스트 시나리오 정의
    3. 2010년대 이후: BDD, ATDD(Acceptance Test-Driven Development)와의 융합으로 Given-When-Then 기반 시나리오로 발전
  • 📢 섹션 요약 비유: 테스트 시나리오는 **'건축 检查清单'**과 같다. 건축 检查清单에는 "구조 안전성", "전기 배선", "급수 시스템" 등의 检查 항목(시나리오)이 있고, 각 항목 아래에 구체적인 检查 내용(테스트 케이스)이 나열된다. 시나리오가 없다면数千 개의 检查 내용을 한눈에 파악하고 관리하는 것이 불가능하듯이, 테스트 시나리오는テスト 케이스의 체계적 관리에 필수적이다.


Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

테스트 시나리오 vs 테스트 케이스 비교

[테스트 시나리오와 테스트 케이스의 관계]

┌─────────────────────────────────────────────────────────────────┐
│                 테스트 시나리오 (Test Scenario)                                    │
│   "사용자가 은행 앱으로 송금할 수 있어야 한다"                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │ TS-001: 유효한 금액으로 송금하기                               │   │
│  │   → TC-001: 잔액이 충분할 때 정상 송금                                   │   │
│  │   → TC-002: 송금 후 잔액 정확히 차감                                     │   │
│  ├─────────────────────────────────────────────────────────┤   │
│  │ TS-002: 잘못된 금액으로 송금 시도하기                            │   │
│  │   → TC-003: 음수 금액 입력 시 거부                                  │   │
│  │   → TC-004: 잔액 초과 금액 입력 시 거부                               │   │
│  │   → TC-005: 0원 입력 시 거부                                       │   │
│  ├─────────────────────────────────────────────────────────┤   │
│  │ TS-003: 수취인 정보 검증하기                                     │   │
│  │   → TC-006: 존재하지 않는 계좌로 송금 시 거부                         │   │
│  │   → TC-007: 자기 자신에게 송금 시 거부                               │   │
│  └─────────────────────────────────────────────────────────┘   │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

  [비교 요약]
  ┌─────────────────┬────────────────────────┬────────────────────────┐
  │ 구분            │ 테스트 시나리오           │ 테스트 케이스              │
  ├─────────────────┼────────────────────────┼────────────────────────┤
  │抽象화 수준       │ High-level ( WHAT)      │ Low-level ( HOW)       │
  │ 문장 수         │ 1문장 (간결)             │ 여러 단계 (상세)         │
  │ 포함 관계       │ 여러 TC를 그룹화         │ 개별 실행 단위           │
  │ 작성 시점       │ 테스트策划 단계          │ 테스트 설계 단계         │
  │ 변경 빈도       │ 상대적으로 안정적         │频繁하게 변경 가능        │
  └─────────────────┴────────────────────────┴────────────────────────┘

[다이어그램 해석] 테스트 시나리오는 "무엇을 테스트하는가"에 집중하는 high-levelな抽象化이며, 복수의 테스트 케이스를 논리적으로 그룹화한다. 테스트 케이스는 "어떻게 테스트하는가"에 집중하며, 구체적인 입력값, 절차, 기대 결과를 포함한다.

테스트 시나리오 도출 기법

[테스트 시나리오 도출 방법]

  1. 요구사항 분석 기반
     - 기능 요구사항에서 동사(CRUD: 생성, 조회, 수정, 삭제) 추출
     - 예: "사용자가 계좌를 등록할 수 있다" → "계좌 등록 시나리오"

  2. 사용자 여정 (User Journey) 기반
     - 핵심 사용자 여정을 시나리오로 변환
     - 예: "신규 회원가입 → 물품 검색 → 장바구니 담기 → 결제 → 확인"

  3. 시나리오 기반 인수 테스트 (SBAT)
     - 사용자 스토리의 인수 기준(Acceptance Criteria)을 시나리오로 변환
     - 예: "사용자가 5만원 이상 구매 시 무료 배송" → "무료 배송 조건 테스트"

  4. 위험 분석 기반
     - 高리스크 영역을 식별하여 시나리오로 구성
     - 예: 결제 로직, 보안 관련 기능 중심 시나리오

  5. 동등 분할/경계값 분석 기반
     - equivalence class당 최소 하나의 시나리오 구성
     - 예: "유효 금액 범위", "경계값", "무효 금액" 시나리오

[다이어그램 해설] 테스트 시나리오는 다양한 방법론을 통해 도출될 수 있다. 요구사항 분석, 사용자 여정, 인수 테스트, 위험 분석, 동등 분할 등의 기법을 조합하여 포괄적인 테스트 시나리오를 구성하는 것이 바람직하다.


Ⅲ. 구현 및 실무 응용 (Implementation & Practice)

테스트 시나리오 작성 예시: 전자상거래 플랫폼

[전자상거래 플랫폼 테스트 시나리오]

  ┌─────────────────────────────────────────────────────────────────┐
  │                     테스트 시나리오 목록                                             │
  ├─────────────────────────────────────────────────────────────────┤
  │                                                                  │
  │  [TS-001] 회원 관리 기능                                             │
  │     - TS-001-01: 신규 회원 가입                                       │
  │     - TS-001-02: 회원 정보 수정                                      │
  │     - TS-001-03: 회원 탈퇴                                          │
  │     - TS-001-04: 비밀번호 재설정                                     │
  │                                                                  │
  │  [TS-002] 상품 검색 및 浏览 기능                                        │
  │     - TS-002-01: 키워드 검색                                         │
  │     - TS-002-02: 카테고리별 탐색                                     │
  │     - TS-002-03: 필터링 및 정렬                                     │
  │     - TS-002-04: 상품 상세 정보 조회                                 │
  │                                                                  │
  │  [TS-003] 장바구니 기능                                              │
  │     - TS-003-01: 상품 장바구니 담기                                  │
  │     - TS-003-02: 장바구니 수량 변경                                  │
  │     - TS-003-03: 장바구니 상품 삭제                                   │
  │     - TS-003-04: 장바구니 금액 계산 정확성                            │
  │                                                                  │
  │  [TS-004] 주문 및 결제 기능                                           │
  │     - TS-004-01: 정상 주문 완료                                      │
  │     - TS-004-02: 쿠폰 적용 주문                                      │
  │     - TS-004-03: 결제 수단 변경                                      │
  │     - TS-004-04: 결제 실패 처리                                      │
  │                                                                  │
  │  [TS-005] 배송 관리 기능                                             │
  │     - TS-005-01: 배송지 변경                                        │
  │     - TS-005-02: 배송 추적 정보 확인                                 │
  │     - TS-005-03: 배송 완료 처리                                      │
  │                                                                  │
  └─────────────────────────────────────────────────────────────────┘

  [시나리오 상세 예시: TS-001-01]
  ┌─────────────────────────────────────────────────────────────────┐
  │ 시나리오 ID: TS-001-01                                           │
  │ 시나리오명: 신규 회원 가입                                           │
  │ 관련 요구사항: FR-001 (회원 가입 기능)                                │
  │                                                                  │
  │ 테스트 케이스:                                                      │
  │   TC-001: 모든 필수 정보 입력 시 정상 가입                             │
  │   TC-002: 이메일 중복 시 가입 거부                                    │
  │   TC-003: 필수 정보 누락 시 가입 거부                                 │
  │   TC-004: 잘못된 이메일 형식 시 가입 거부                              │
  │   TC-005: 비밀번호 정책 불일치 시 가입 거부                             │
  │                                                                  │
  │ 우선순위: High                                                    │
  │ 예상 노력: 2시간                                                   │
  │                                                                  │
  └─────────────────────────────────────────────────────────────────┘

테스트 시나리오 관리 도구와의 연계

[테스트 시나리오 관리 워크플로우]

  [요구사항]
      │
      ▼
  [시나리오 도출] ───────────────────────┐
      │                                  │
      ▼                                  │
  [시나리오 승인]                         │
      │                                  │
      ▼                                  ▼
  [TC 설계] ◄────────────────────────────┘
      │
      ▼
  [TC 실행]
      │
      ▼
  [결과 기록]
      │
      ▼
  [시나리오 단위進捗管理]

  ※ 주요 관리 항목:
     - 시나리오별 TC 개수, 실행률, 합격률
     - 블로킹(Blocked) TC 식별
     - 커버리지 분석 (요구사항 ↔ 시나리오 ↔ TC)

Ⅳ. 품질 관리 및 테스트 (Quality & Testing)

테스트 시나리오 품질 기준

[좋은 테스트 시나리오의 조건]

  1. 완전성 (Completeness)
     - 해당 기능의 모든 주요 경로를 포함하는가?
     - 정상 케이스 + 예외/에러 케이스가 적절히 표현되었는가?

  2. 독립성 (Independence)
     - 다른 시나리오와의 중복이 최소화되었는가?
     - 시나리오 간 순서 의존성이 없는가?

  3. 추적 가능성 (Traceability)
     - 요구사항 ID와 연결되어 있는가?
     - 테스트 결과가 요구사항까지 추적 가능한가?

  4. 이해 가능성 (Understandability)
     - 비기술적인 Stakeholder도 이해할 수 있는가?
     - 명확하고 간결한 표현으로 되어 있는가?

  5. 실행 가능성 (Feasibility)
     - 실제로 테스트 가능한 시나리오인가?
     - 기술적/환경적 제약으로 인해 실행 불가능한 것이 없는가?
  • 📢 섹션 요약 비유: 테스트 시나리오는 **'소설의 챕터'**와 같다. 소설의 각 챕터는 특정 사건이나 갈등을 다루며, 그 안에 여러 장면(테스트 케이스)이 구성된다. 챕터 제목만 봐도 소설의 큰 줄거리를 알 수 있듯이, 시나리오 이름만으로도 테스트 범위를 파악할 수 있어야 한다. 또한 챕터가 너무 길거나 알 수 없으면 독자(테스터)가 혼란을 겪듯이, 시나리오도 적절한粒度로 구분되어야 한다.

최신 동향

  1. BDD 시나리오와의 융합: Cucumber, SpecFlow 등의 BDD 도구에서 사용되는 Gherkin 언어의 Given-When-Then 시나리오形式은 테스트 시나리오의一种이다. 이는 비즈니스 언어로 테스트를 표현할 수 있어, 개발자 외의 Stakeholder도テスト策划에 참여할 수 있게 한다.
  2. AI 기반 시나리오 자동 생성: 요구사항 문서(PRD, 用户故事)를 AI가 분석하여 자동으로 테스트 시나리오를 제안하는 도구가 등장하고 있다. 이는手動 시나리오 도출의工作量을 줄이고, 일관성을 확보하는 데 기여한다.
  3. 테스트 시나리오의 디지털 트윈: 소프트웨어의 동작을 모델링한 디지털 트윈에서 자동으로 테스트 시나리오를 생성하고, 실제 환경에서의 테스트 결과와 연계하는研究方向が進行中이다.

한계점 및 보완

  • 시나리오와 TC의 불일치: 시나리오가 변경되었는데 연결된 TC가 업데이트되지 않으면 추적성이 깨진다. 이를 해결하기 위해 시나리오-TC 매핑의定期적 감사이 필요하다.
  • 과도한 시나리오 분할 또는 통합:粒度가 너무 작거나 크면 관리와進捗 파악이 어려워진다. 권장되는粒度는 한 시나리오당 3~7개의 TC를 포함하는 수준이다.
  • 변경 관리: Agile 환경에서 시나리오가频繁하게 변경될 수 있으므로, 변경 이력과 히스토리를 관리하는체계화된 프로세스가 필요하다.

테스트 시나리오는テスト 케이스와 요구사항 사이에서重要な桥梁 역할을 하며, 테스트策划과進捗管理의 효율성을 높이는 핵심 도구이다. 잘 설계된 테스트 시나리오는 테스트 범위를 명확히 하고, 이해관계자との 의사소통을 원활하게 하며, 요구사항에서 실행까지의 추적성을確保한다. 앞으로 AI/ML 기반 자동화와 BDD 등의 방법론과의 융합을 통해, 테스트 시나리오의 작성과 관리 방식도 더욱 지능화되고 효율화될 것으로 전망된다.

  • 📢 섹션 요약 비유: 테스트 시나리오는 **'영화의 시나리오'**와 같다. 영화 시나리오에는 "第1장: 아파트에서 시작", "第2장: 회사로 향하는 지하철" 등의 큰 줄거리(시나리오)가 있고, 각 장 안에 구체적인 분장, 연기 지시(테스트 케이스)가 구성된다. 영화ファンが場面の流れを理解できるように, 테스트 시나리오도ステークホルダーがテストの範囲と流れを理解할 수 있게 하는重要な 문서이다.

참고

  • 모든 약어는 반드시 전체 명칭과 함께 표기: API (Application Programming Interface)
  • 일어/중국어 절대 사용 금지 (한국어만 사용)
  • 각 섹션 끝에 📢 요약 비유 반드시 추가
  • ASCII 다이어그램의 세로선 │와 가로선 ─ 정렬 완벽하게
  • 한 파일당 최소 800자 이상의 실질 내용