TDD (테스트 주도 개발)

SkillDev tools

Test-driven development - write tests first, then implement. Triggers: "TDD", "테스트 먼저", "테스트 주도", "RED-GREEN-REFACTOR". Anti-triggers: "구현 먼저", "테스트 나중에".

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the TDD (테스트 주도 개발) skill

What this skill tells your AI

The instructions your AI receives, as published by jh941213/my-cc-harness in skills/tdd/SKILL.md and read by ahel’s review.

테스트를 먼저 작성하고, 코드를 구현하는 TDD 방식을 적용합니다.

TDD 사이클

RED → GREEN → REFACTOR → REPEAT

RED:      실패하는 테스트 작성
GREEN:    테스트 통과하는 최소 코드 작성
REFACTOR: 코드 개선 (테스트 유지)
REPEAT:   다음 기능/시나리오

Step 1: 인터페이스 정의 (SCAFFOLD)

// 타입 먼저 정의
interface CreateUserInput {
  name: string;
  email: string;
}

// 빈 구현체
export function createUser(input: CreateUserInput): User {
  throw new Error('Not implemented');
}

Step 2: 테스트 작성 (RED)

테스트 순서: 정상 → 엣지 → 에러

describe('createUser', () => {
  // 정상 케이스 먼저
  it('유효한 입력으로 사용자를 생성해야 한다', () => {
    const input = { name: '홍길동', email: 'hong@test.com' };
    const result = createUser(input);
    expect(result).toMatchObject({ name: '홍길동', email: 'hong@test.com' });
    expect(result.id).toBeDefined();
  });

  // 엣지 케이스
  it('이름 앞뒤 공백을 제거해야 한다', () => {
    const result = createUser({ name: '  홍길동  ', email: 'hong@test.com' });
    expect(result.name).toBe('홍길동');
  });

  // 에러 케이스
  it('이메일이 없으면 ValidationError를 던져야 한다', () => {
    expect(() => createUser({ name: '홍길동', email: '' })).toThrow(ValidationError);
  });
});

Step 3: 실패 확인 (중요!)

# 반드시 실패하는지 확인 — 바로 통과하면 테스트가 잘못된 것
npm test -- path/to/file.test.ts
# 또는
pytest path/to/test_file.py -v

실패 안 하면 STOP — 테스트를 다시 검토.

Step 4: 최소 구현 (GREEN)

  • 테스트만 통과하는 최소한의 코드
  • 하드코딩도 OK (리팩토링에서 개선)
  • 우아함보다 정확성

Step 5: 리팩토링 (REFACTOR)

  • 중복 제거, 네이밍 개선
  • 테스트 재실행하여 깨지지 않는지 확인
  • 새 기능 추가 금지 — 리팩토링만

Step 6: 반복 (REPEAT)

다음 테스트 케이스 추가 → RED부터 다시.

프레임워크별 명령어

프레임워크실행워치커버리지
Vitestnpx vitest runnpx vitestnpx vitest --coverage
Jestnpx jestnpx jest --watchnpx jest --coverage
pytestpytest -vptwpytest --cov=src

테스트 파일 위치

패턴위치
코로케이션src/user.tssrc/user.test.ts
testssrc/user.tssrc/__tests__/user.test.ts
Pythonsrc/user.pytests/test_user.py

기존 프로젝트 패턴을 따름.

주의사항

  • 한 번에 하나의 테스트만 추가
  • 테스트가 실패하는지 반드시 확인
  • 구현이 아닌 행위를 테스트
  • 커버리지 목표: 새 코드 80%+

Signals

GitHub stars
125
Forks
35
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
tdd-jh941213
Source
github.com/jh941213/my-cc-harness