testing-strategy

Doyajin174's avatarfrom Doyajin174

Comprehensive testing workflow combining TDD, real implementations (no mocking), and E2E testing. Use when implementing features, writing tests, or setting up test infrastructure.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 2, 2026

When & Why to Use This Skill

This Claude skill provides a comprehensive testing workflow that integrates Test-Driven Development (TDD), real-world implementations without mocking, and End-to-End (E2E) testing. It enforces the strict 'Red-Green-Refactor' cycle and a 'No Mocking' policy to ensure high code reliability and maintainability across unit, integration, and E2E layers.

Use Cases

  • Feature Development: Implementing new software features following the TDD 'Iron Law' to ensure all production code is verified by a failing test first.
  • E2E Testing: Setting up and executing automated user flow tests using Playwright to validate the entire application stack from a user's perspective.
  • Integration Testing: Testing module interactions using real databases or MSW for API simulation to ensure components work together without relying on brittle mocks.
  • Code Refactoring: Safely cleaning and optimizing existing codebases while ensuring functional integrity through a robust, pre-existing test suite.
  • Test Infrastructure Setup: Establishing a standardized testing environment that covers unit, integration, and E2E testing categories.
nametesting-strategy
descriptionComprehensive testing workflow combining TDD, real implementations (no mocking), and E2E testing. Use when implementing features, writing tests, or setting up test infrastructure.
allowed-toolsRead, Glob, Grep, Edit, Write, Bash
licenseMIT
authorobra/superpowers
version"2.0"

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로 핵심 흐름 검증