용어집 · 테스트 기초
인수 조건
영어: Acceptance criteria
다른 이름: 수용 기준, 인수 기준, 승인 기준, AC
정의
사용자 스토리나 기능이 완료된 것으로 프로덕트 오너에게 인정받기 위해 충족해야 하는 구체적이고 테스트 가능한 조건입니다.
인수 조건(Acceptance Criteria)은 비즈니스 관점에서 사용자 스토리가 언제 “완료”되는지를 정의하는 조건입니다. 각 조건은 통과 또는 실패로 판정할 수 있는 명확하고 테스트 가능한 문장입니다. 개발을 시작하기 전 리파인먼트(refinement) 단계에서 합의하며, 테스트 시나리오와 자동화된 검사의 출발점이 됩니다.
예시
스토리: 쇼핑객으로서 결제 단계에서 할인 코드를 적용해 프로모션 가격으로 결제하고 싶다.
규칙 기반 형식:
- 유효하고 만료되지 않은 코드는 주문 총액을 코드의 할인율만큼 줄입니다.
- 만료된 코드는 “This code has expired” 메시지를 표시하고 총액을 바꾸지 않습니다.
- 주문당 코드는 하나만 적용할 수 있으며, 두 번째 코드를 적용하면 첫 번째 코드를 대체합니다.
- 코드는 대소문자를 구분하지 않습니다(
SAVE10과save10은 동일).
같은 만료 코드 조건을 Given/When/Then 형식으로 쓰면 다음과 같습니다.
Scenario: Expired discount code is rejected
Given my cart total is $50.00
And the code "SPRING10" expired yesterday
When I apply the code "SPRING10"
Then I see the message "This code has expired"
And my cart total is still $50.00
인수 조건과 완료의 정의(Definition of Done)의 차이
인수 조건은 하나의 스토리에 한정됩니다. 즉, 이 기능이 무엇을 해야 하는지를 정합니다. **완료의 정의(Definition of Done)**는 모든 스토리에 적용됩니다. 코드 리뷰 완료, 테스트 자동화, 문서 업데이트, 스테이징 배포 같은 항목입니다. 스토리는 두 가지를 모두 충족해야 비로소 완료됩니다.
좋은 인수 조건 작성법
- 테스트 가능해야 합니다. “페이지가 빠르게 로드된다”는 테스트할 수 없지만, “스테이징 데이터셋 기준으로 상품 1,000개의 결과 페이지가 2초 이내에 렌더링된다”는 테스트할 수 있습니다.
- 구현이 아니라 동작을 기술합니다. 어떤 데이터베이스 테이블이 바뀌는지가 아니라 결과를 설명하세요.
- 부정 케이스를 포함합니다. 잘못된 입력, 권한, 오류 메시지도 기능의 일부입니다.
- 쓰리 아미고(three amigos)가 합의합니다. 기획, 개발, 테스트가 함께 검토합니다. 테스터는 코드가 작성되기 전에 “만약 ~하면 어떻게 되나요?“라고 질문할 때 가장 큰 가치를 더합니다.