용어집 · 테스트 기초
테스트 케이스
영어: Test case
다른 이름: test cases, TC, 테스트케이스
정의
시스템의 한 가지 동작을 검증하기 위한 사전 조건, 입력 데이터, 단계, 기대 결과의 구체적인 조합으로, 명확한 통과·실패 판정을 냅니다.
테스트 케이스는 계획된 테스트의 가장 작은 단위입니다. 이런 사전 조건과 이런 데이터가 주어졌을 때 이런 단계를 수행하면 이런 결과가 나와야 한다는 형식입니다. 누가 실행하든 같은 판정에 도달해야 합니다. 테스트 케이스는 테스트 시나리오, 요구사항, 인수 조건에서 도출되며, 실제로 실행되고 자동화되고 보고되는 대상이 바로 테스트 케이스입니다.
예시
| 항목 | 값 |
|---|---|
| ID | TC-LOGIN-004 |
| 제목 | 잘못된 비밀번호로는 로그인이 거부된다 |
| 사전 조건 | 활성 사용자 qa.user@example.com이 존재하고, 사용자는 로그아웃 상태다 |
| 테스트 데이터 | 이메일 qa.user@example.com, 비밀번호 WrongPass1! |
| 단계 | 1. /login 열기 2. 이메일과 비밀번호 입력 3. “Sign in” 클릭 |
| 기대 결과 | “Email or password is incorrect” 메시지가 표시되고, 사용자는 /login에 머물며, 세션 쿠키가 설정되지 않는다 |
| 우선순위 | 높음 |
| 요구사항 | AUTH-12 |
같은 케이스를 Playwright 자동화 테스트로 작성하면 다음과 같습니다.
import { test, expect } from '@playwright/test';
test('login is rejected with a wrong password', async ({ page }) => {
await page.goto('/login');
await page.getByLabel('Email').fill('qa.user@example.com');
await page.getByLabel('Password').fill('WrongPass1!');
await page.getByRole('button', { name: 'Sign in' }).click();
await expect(page.getByText('Email or password is incorrect')).toBeVisible();
await expect(page).toHaveURL(/\/login/);
});
테스트 케이스와 테스트 시나리오의 차이
테스트 시나리오는 무엇을 테스트할지 한 줄로 적은 문장입니다(“잘못된 자격 증명으로 로그인 검증”). 테스트 케이스는 그중 하나의 구체적인 사례를 정확한 데이터와 기대 결과와 함께 어떻게 테스트할지 정한 것입니다. 하나의 시나리오에서 보통 여러 케이스가 나옵니다. 잘못된 비밀번호, 등록되지 않은 이메일, 빈 필드, 잠긴 계정 등입니다.
좋은 테스트 케이스의 조건
- 하나의 동작, 하나의 판정. 절반만 통과할 수 있는 케이스라면 나눕니다.
- 구체적인 기대 결과. “오류가 표시된다”는 약합니다. 메시지를 그대로 인용하고, 일어나서는 안 되는 일도 명시합니다.
- 독립성. 이전 케이스에 의존하지 않고 스스로 사전 조건을 준비합니다.
- 추적 가능성. 검증하는 요구사항이나 스토리와 연결되어 있습니다.