Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Comprehensive testing strategy using Vitest for unit/integration tests and Playwright for E2E tests with best practices and coverage targets
.claude/skills/aiskillstore-testing-strategy/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 154% | 0% |
TDD와 실제 구현 기반 테스트를 결합한 통합 테스트 스킬입니다.
> "NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST"
- 원하는 동작을 보여주는 최소한의 테스트 작성
- 테스트가 실패하는지 반드시 확인- 테스트를 통과시키는 가장 단순한 코드 작성
- 완벽한 코드 X, 동작하는 코드 O- 코드 정리 (중복 제거, 명명 개선)
- 테스트가 계속 통과하는지 확인> 실제 구현을 테스트하라
typescriptjest.mock('./database'); jest.mock('./api');
typescript// 실제 테스트 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' }])); }) );
typescripttest('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(); });
| 유형 | 범위 | 도구 | |------|------|------| | Unit | 함수/클래스 | Vitest, Jest | | Integration | 모듈 간 연동 | 실제 DB, MSW | | E2E | 전체 사용자 흐름 | Playwright |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 13,477 | 20,651 | +53% | 1 | 1 | 0% | 2,989 | 3,790 | +27% | 0 | 0 | — |
case-02 | fail→pass | 26,844 | 18,990 | -29% | 1 | 1 | 0% | 5,906 | 3,320 | -44% | 0 | 0 | — |
case-03 | fail→pass | 29,797 | 29,076 | -2% | 1 | 1 | 0% | 5,887 | 6,097 | +4% | 0 | 0 | — |
case-04 | pass→pass | 19,558 | 11,220 | -43% | 1 | 1 | 0% | 2,841 | 2,786 | -2% | 0 | 0 | — |
case-05 | pass→pass | 15,802 | 9,556 | -40% | 1 | 1 | 0% | 2,583 | 2,174 | -16% | 0 | 0 | — |
case-06 | pass→pass | 20,485 | 19,118 | -7% | 1 | 1 | 0% | 2,490 | 2,760 | +11% | 0 | 0 | — |
case-07 | pass→pass | 17,749 | 7,226 | -59% | 1 | 1 | 0% | 2,140 | 1,911 | -11% | 0 | 0 | — |
case-08 | pass→pass | 14,980 | 16,096 | +7% | 1 | 1 | 0% | 1,582 | 1,760 | +11% | 0 | 0 | — |
case-09 | pass→pass | 10,840 | 9,404 | -13% | 1 | 1 | 0% | 865 | 1,158 | +34% | 0 | 0 | — |
case-10 | pass→pass | 21,621 | 21,826 | +1% | 1 | 1 | 0% | 2,665 | 3,503 | +31% | 0 | 0 | — |
case-11 | fail→pass | 13,305 | 8,021 | -40% | 1 | 1 | 0% | 2,030 | 1,475 | -27% | 0 | 0 | — |
case-12 | fail→pass | 8,621 | 11,222 | +30% | 1 | 1 | 0% | 552 | 1,401 | +154% | 0 | 0 | — |
case-13 | fail→fail | 21,732 | 17,873 | -18% | 1 | 1 | 0% | 3,621 | 4,100 | +13% | 0 | 0 | — |
case-14 | fail→fail | 13,169 | 7,384 | -44% | 1 | 1 | 0% | 2,520 | 1,949 | -23% | 0 | 0 | — |
case-15 | pass→pass | 20,231 | 19,440 | -4% | 1 | 1 | 0% | 2,814 | 3,365 | +20% | 0 | 0 | — |
case-16 | pass→pass | 19,577 | 23,772 | +21% | 1 | 1 | 0% | 4,316 | 5,155 | +19% | 0 | 0 | — |
case-17 | pass→pass | 18,181 | 17,182 | -5% | 1 | 1 | 0% | 2,737 | 2,960 | +8% | 0 | 0 | — |
case-18 | pass→pass | 13,308 | 6,176 | -54% | 1 | 1 | 0% | 2,178 | 1,494 | -31% | 0 | 0 | — |
case-19 | pass→pass | 13,917 | 15,979 | +15% | 1 | 1 | 0% | 2,802 | 2,561 | -9% | 0 | 0 | — |
case-20 | pass→pass | 13,518 | 12,015 | -11% | 1 | 1 | 0% | 1,658 | 2,025 | +22% | 0 | 0 | — |
case-21 | pass→pass | 3,649 | 10,413 | +185% | 1 | 1 | 0% | 698 | 1,153 | +65% | 0 | 0 | — |
case-22 | pass→pass | 17,532 | 14,561 | -17% | 1 | 1 | 0% | 3,165 | 3,284 | +4% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.