Marketplace testing-strategy

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

install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/doyajin174/testing-strategy" ~/.claude/skills/aiskillstore-marketplace-testing-strategy-9f10e7 && rm -rf "$T"
manifest: skills/doyajin174/testing-strategy/SKILL.md
source content

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