언제 쓰나
기능은 다 만들었는데 테스트를 어디까지 써야 할지 막막할 때, 또는 이미 쓴 테스트가 정상 경로만 덮고 있을 때 씁니다. 경계값과 예외를 프롬프트가 강제로 훑기 때문에, 사람이 습관적으로 빼먹는 "빈 배열", "최댓값+1", "외부 API 실패" 같은 구멍이 먼저 드러납니다.
사용법
{framework}에 언어와 테스트 프레임워크를 적습니다. (예:TypeScript / Vitest,Python / pytest,Java / JUnit 5){target}자리에 검증할 함수 코드나 기능 명세를 붙여 넣습니다. 코드가 있으면 코드를, 아직 구현 전이면 명세 문장을 그대로 넣어도 됩니다.- 출력의 3단계 표를 먼저 읽고 불필요한 케이스를 지운 뒤, "남긴 케이스만 코드로 다시"라고 요청하면 군더더기 없는 테스트가 나옵니다.
사용 예시
입력
언어/프레임워크: TypeScript / Vitest
검증 대상:
function splitBill(total: number, people: number): number[]
— 금액 total 을 people 명에게 1원 단위로 나눈다.
— 나누어떨어지지 않으면 앞사람부터 1원씩 더 부담한다.
— people 은 1 이상이어야 한다.
출력 (요약)
| # | 분류 | 입력 | 기대 결과 |
|---|------|------|-----------|
| 1 | 정상 | (10000, 4) | [2500, 2500, 2500, 2500] |
| 2 | 정상 | (10001, 4) | [2501, 2500, 2500, 2500] |
| 3 | 경계 | (0, 3) | [0, 0, 0] |
| 4 | 경계 | (10000, 1) | [10000] |
| 5 | 예외 | (10000, 0) | 오류 — people 은 1 이상 |
| 6 | 예외 | (-100, 2) | 명세 확인 필요 (음수 정의 없음) |
test('나누어떨어지지 않으면 앞사람이 1원 더 부담한다', () => {
expect(splitBill(10001, 4)).toEqual([2501, 2500, 2500, 2500]);
});
명세 확인 필요: 음수 total, 소수점 total, people 상한
팁
- 이미 테스트가 있다면
{target}뒤에 기존 테스트 코드를 함께 넣고 "이미 덮인 케이스는 제외하고 빠진 것만"이라고 덧붙이세요. - "명세 확인 필요" 목록은 그대로 이슈나 PR 코멘트로 옮기면 됩니다. 대개 진짜 스펙 구멍입니다.
- 테스트 데이터가 많이 필요하면 "3단계 표를 그대로 파라미터화 테스트(table-driven)로"라고 후속 요청하세요.