| name | testing-strategy |
| description | Comprehensive testing workflow combining TDD, real implementations (no mocking), and E2E testing. Use when implementing features, writing tests, or setting up test infrastructure. |
| allowed-tools | Read, Glob, Grep, Edit, Write, Bash |
| license | MIT |
| metadata | [object Object] |
Testing Strategy
TDD와 실제 구현 기반 테스트를 결합한 통합 테스트 스킬입니다.
Iron Law
"NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST"
RED-GREEN-REFACTOR Cycle
1. RED - 실패하는 테스트 작성
- 원하는 동작을 보여주는 최소한의 테스트 작성
- 테스트가 실패하는지 반드시 확인
2. GREEN - 테스트 통과시키기
- 테스트를 통과시키는 가장 단순한 코드 작성
- 완벽한 코드 X, 동작하는 코드 O
3. REFACTOR - 리팩토링
- 코드 정리 (중복 제거, 명명 개선)
- 테스트가 계속 통과하는지 확인
No Mocking Policy
실제 구현을 테스트하라
❌ 금지
jest.mock('./database');
jest.mock('./api');
✅ 허용
// 실제 테스트 DB 또는 인메모리 DB 사용
const db = await createTestDatabase();
// MSW로 실제 HTTP 계층 테스트
const server = setupServer(
rest.get('/api/users', (req, res, ctx) => {
return res(ctx.json([{ id: 1, name: 'Test' }]));
})
);
E2E Testing (Playwright)
test('user can complete checkout', async ({ page }) => {
await page.goto('/products');
await page.click('[data-testid="add-to-cart"]');
await page.click('[data-testid="checkout"]');
await expect(page.locator('.confirmation')).toBeVisible();
});
Test Categories
| 유형 | 범위 | 도구 |
|---|---|---|
| Unit | 함수/클래스 | Vitest, Jest |
| Integration | 모듈 간 연동 | 실제 DB, MSW |
| E2E | 전체 사용자 흐름 | Playwright |
Checklist
- 모든 함수가 테스트됨
- 테스트가 먼저 실패하는 것을 확인
- Mock 사용 없음 (MSW 허용)
- E2E로 핵심 흐름 검증