Test Case 작성법 : Test Case 구성요소 | 테스트 케이스, TC 작성하기
Test Case(TC)란?
Test Case(테스트 케이스)**는 소프트웨어가 의도한 대로 작동하는지 확인하기 위해 설계된 테스트 시나리오입니다. 간단히 말해, 특정 기능이나 모듈이 정상적으로 동작하는지를 검증하기 위한 구체적인 절차와 조건을 정의한 문서입니다.
소프트웨어 테스트에서 테스트 케이스(Test Case, TC)는 테스트 수행의 기본 요소로, 소프트웨어가 기획된 대로 작동하는지 확인하기 위해 중요한 역할을 합니다.
Test Case는 테스트 대상이 되는 소프트웨어의 기능, 입력 데이터, 실행 방법, 예상 결과 등을 포함하여 작성되며, 이를 통해 소프트웨어의 정확성, 신뢰성, 성능 등을 평가합니다.
Test Case의 주요 구성 요소
1. Depth (상/하위 계층 구조)
Depth는 테스트 시나리오의 상/하위 계층 구조를 정의하여, 주로 테스트할 화면, 페이지, 기능을 구분합니다. Depth가 높아질수록 더욱 세부적인 기능까지 테스트하게 됩니다.
Depth 작성은 책의 목차와 유사하며, 테스트 항목을 대분류(Depth 1), 중분류(Depth 2), 소분류(Depth 3, 4...)로 나누어 체계적으로 정리합니다. 이러한 구조를 통해 소프트웨어의 시나리오와 플로우를 명확히 하고, 테스트가 일관되게 진행될 수 있도록 합니다.
- 예시1:
Depth 1: 상품 관리 메인 화면
Depth 2: 상품 등록 메뉴
Depth 3: 상품 기본 정보 입력 화면 - 예시2:
Depth 1: 상품 관리 메인 화면
Depth 2: 상품 삭제 메뉴
Depth 3: 상품 삭제 확인 팝업
2. Test Item (테스트 항목)
**Test Item (테스트 항목)**은 무엇을 테스트할 것인지 명확히 정의하는 항목입니다. 이는 테스트 대상이 되는 기능, 화면, 페이지, 또는 모듈 등을 구체적으로 나타내며, 테스트의 범위를 정확하게 설정하는 데 중요한 역할을 합니다. 테스트 항목을 명확히 정의함으로써, 테스트가 무엇을 목표로 하는지 쉽게 이해할 수 있으며, 테스트의 일관성을 유지하고 누락된 부분이 없도록 합니다.
- 예시1:
Test Item: 로그인 기능 테스트 - 예시2:
Test Item: 상품 등록 기능 테스트
3. Precondition (사전조건)
**Precondition (사전조건)**은 테스트를 수행하기 전에 충족되어야 하는 조건이나 상황을 정의하는 항목입니다. 테스트가 원활하게 진행되기 위해 필요한 시스템 환경, 데이터 상태, 사용자 권한 등이 사전에 갖추어져야 하는데, 이를 미리 명확히 작성함으로써 테스트가 실패하는 이유를 다른 요소와 혼동하지 않도록 합니다.
사전조건을 명확하게 정의하면, 테스트 실행자가 테스트를 준비하고 재현할 때 필요한 정보를 빠르게 파악할 수 있습니다. 간결하고 이해하기 쉽게 작성하는 것이 중요합니다. 또한 회사마다 사전조건 작성 방식이 다를 수 있으며, 일부 회사에서는 간단하게 1줄로 작성하거나, 여러 줄로 자세히 설명하기도 하므로 회사의 양식에 맞춰 작성해야 합니다.
- 예시 :
- Precondition: 사용자가 관리자 권한으로 로그인한 상태이어야 함
- Precondition: 상품 등록 화면에 진입한 상태여야 함
- Precondition: 테스트 데이터베이스에 기본 상품 데이터가 등록되어 있어야 함
이와 같은 방식으로, 테스트 실행을 위한 필수 조건을 명확하게 정의하면, 재현 스텝을 보다 간결하게 작성할 수 있습니다.
4. Steps (재현 스텝)
**Steps (재현 스텝)**은 테스트를 수행하기 위한 순서를 정의한 항목으로, 테스트를 처음 수행하는 사람도 쉽게 따라할 수 있도록 명확하고 간결하게 작성되어야 합니다. 재현 스텝은 기대 결과를 확인하기 위해 어떤 동작을 해야 하는지를 구체적으로 나열하며, 각 단계가 논리적으로 연결되도록 작성해야 합니다.
복잡한 시나리오를 간단하게 표현할 수 있는 부분은 최대한 간결하게 정리하고, 중요한 동작이나 검증이 필요한 부분은 명확하게 서술하는 것이 중요합니다. Depth와 연결되는 경우, 상위 Depth에 대한 설명은 생략하고 하위 Depth부터 구체적으로 작성할 수도 있습니다.
- 예시:
- Steps (상품 등록 기능 테스트)
- 1. 좌측 메뉴에서 '상품 관리'를 클릭한다.
- 2. '상품 등록' 버튼을 클릭한다.
- 3. 임의의 상품명, 가격, 설명을 입력한다.
- 4. 이미지 파일을 선택하여 업로드한다.
- 5. '저장' 버튼을 클릭한다.
- Steps (상품 등록 기능 테스트)
이러한 방식으로 재현 스텝은 테스트의 흐름을 따라 한 단계씩 작성하여, 사용자가 테스트 절차를 정확하게 이해하고 실행할 수 있도록 돕습니다.
5. Expected Result (기대 결과)
**Expected Result (기대결과)**는 테스트가 성공적으로 수행되었을 때 예상되는 결과를 정의하는 항목입니다. 재현 스텝을 모두 완료했을 때, 시스템이 어떻게 동작해야 하는지, 어떤 화면이 나타나야 하는지, 데이터가 어떻게 변경되어야 하는지를 명확하게 기술합니다.
기대 결과는 테스트 결과를 Pass 또는 Fail로 평가하는 기준이 되기 때문에, 구체적이고 명확하게 작성해야 합니다. 기획서나 디자인 문서에 기반하여, 해당 기능이 의도한 대로 동작했는지를 검증하는 역할을 합니다.
- 예시:
- Expected Result (상품 등록 기능 테스트)
- 입력한 상품 정보가 정상적으로 등록되며, 상품 목록에 새로운 상품이 추가된다.
- Expected Result (상품 등록 기능 테스트)
6. Result (결과)
**Result (결과)**는 테스트를 수행한 후 실제로 얻은 결과를 기록하는 항목입니다. 기대결과와 비교하여 시스템이 의도대로 동작했는지 여부를 평가하며, Pass, Fail, 또는 테스트를 수행할 수 없을 때는 N/T (No Test), N/A (Not Applicable) 상태로 기록됩니다.
- Pass: 기대결과와 실제 결과가 일치할 때, 기능이 정상적으로 동작했다는 것을 의미합니다.
- 예시 :
Result: Pass
상품이 정상적으로 등록되고, 상품 목록에 추가된 것이 확인되었다.
- 예시 :
- Fail: 기대결과와 실제 결과가 일치하지 않을 때 기록하며, 문제 발생 시 이슈 번호(BTS No.)와 함께 구체적인 원인 및 상황을 코멘트로 남깁니다.
- **BTS No. (버그 트래킹 시스템 번호)**는 테스트 결과에서 Fail이 발생했을 때, 해당 문제를 추적하고 관리하기 위한 고유 번호입니다. BTS는 Bug Tracking System의 약자로, 소프트웨어의 결함이나 이슈를 기록하고 추적하는 시스템입니다. BTS No.는 팀 내에서 이슈를 공유하고, 문제 해결 상황을 확인하며, 후속 작업을 관리하는 데 중요한 역할을 합니다. 이 번호는 문제가 해결되었는지 확인하거나 이후 회귀 테스트를 진행할 때 사용됩니다.
- 예시 :
Result: Fail
이미지 파일 업로드 시 오류 발생. 상품 목록에 상품명은 표시되었으나, 이미지가 표시되지 않음. [BTS-12345] "이미지 업로드 실패" 이슈 발생.
- N/T (No Test): 테스트가 계획되었으나 테스트 환경이나 제약 조건 등으로 인해 테스트를 수행할 수 없는 경우입니다. 네트워크 오류, 서버 접근 불가 등의 이유로 테스트가 불가할 때 사용됩니다.
- 예시 :
Result: N/T
서버 연결 문제로 인해 상품 삭제 기능 테스트가 불가함. 테스트 환경 설정 필요.
- 예시 :
- N/A (Not Applicable): 테스트가 가능해야 하지만, 개발이 지연되거나 기능이 취소되어 더 이상 테스트가 불필요한 경우입니다.
- 예시 :
Result: N/A
상품 검색 기능이 기획에서 제외되었음. 해당 기능에 대한 테스트 불필요.
- 예시 :
7. Priority (우선도)
**Priority (우선도)**는 테스트 항목이 얼마나 중요한지를 나타내며, 문제가 발생했을 때 그 문제 해결의 시급성을 결정하는 기준입니다. 우선도는 주로 P0, P1, P2, P3 등으로 구분됩니다. 우선도가 높은 항목일수록 시스템의 주요 기능에 큰 영향을 미치며, 낮은 항목일수록 비교적 덜 중요한 기능에 해당합니다.
우선도의 분류:
- P0 (Critical):
가장 중요한 기능으로, 테스트가 실패하면 시스템의 핵심 기능이 중단됩니다. 즉시 수정이 필요합니다.- 예시: 로그인 기능이 동작하지 않음.
이 기능이 제대로 작동하지 않으면 전체 시스템 접근이 불가하므로, 즉시 수정이 필요합니다.
- 예시: 로그인 기능이 동작하지 않음.
- P1 (High):
중요한 기능이지만, 시스템 전체에는 치명적인 영향을 주지 않습니다. 빠른 수정이 필요하지만, 시스템 전체가 중단되지는 않습니다.- 예시: 결제 기능에서 특정 결제 옵션만 작동하지 않음.
다른 결제 방식은 사용할 수 있지만, 일부 사용자에게 영향을 미치므로 빠른 수정이 필요합니다.
- 예시: 결제 기능에서 특정 결제 옵션만 작동하지 않음.
- P2 (Medium):
시스템의 비핵심 기능에 영향을 미치는 문제입니다. 중요한 기능이지만, 비교적 빠른 수정이 필요하지 않습니다.- 예시: 상품 검색 결과 페이지에서 정렬 기능이 제대로 작동하지 않음.
사용자 경험에 영향을 미치지만, 핵심 기능은 아니기 때문에 우선도는 중간 정도입니다.
- 예시: 상품 검색 결과 페이지에서 정렬 기능이 제대로 작동하지 않음.
- P3 (Low):
치명적이지 않은 문제나 UI 상의 사소한 오류입니다. 우선순위가 낮고, 나중에 해결해도 큰 문제가 없습니다.- 예시: 페이지 하단의 문구 오타, 아이콘 정렬 오류.
기능에는 영향을 주지 않으며, UI상의 작은 문제이므로 우선도는 낮습니다.
- 예시: 페이지 하단의 문구 오타, 아이콘 정렬 오류.
예시
Depth
- Depth 1: 상품 관리 메인 화면
- Depth 2: 상품 등록 메뉴
- Depth 3: 상품 기본 정보 입력 화면
Priority (우선도)
- P0~3 (택 1)
Test Item (테스트 항목)
- 상품 등록 기능 테스트
Precondition (사전조건)
- 관리자 권한으로 로그인한다.
Steps (재현 스텝)
- 상품 관리 메인 화면에서 "상품 등록 메뉴"를 클릭한다.
- "상품 기본 정보 입력 화면"에서 상품명, 가격, 재고 수량 등 필수 정보를 입력한다.
- 등록 버튼을 클릭한다.
Expected Result (기대 결과)
- 입력한 상품 정보가 정상적으로 등록되고, 상품 목록에 추가된 상품이 나타난다.
Result (결과)
- PASS or FAIL or N/T or N/A (택 1)
- [기대 결과와 동일하게 동작하면] "PASS"
- [문제가 발생하면] "FAIL", 실제 동작 기록
- BTS No. (버그 트래킹 시스템 번호) : 20231022-001 (버그 발생 시, BTS에 등록된 버그 번호 기록)
- [테스트 환경에서 서버 오류로 인해 상품 등록을 시도할 수 없는 경우] " N/T"
- [상품 등록 기능이 아직 개발되지 않아서 테스트를 진행할 수 없는 경우] " N/A"
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."