Коротка відповідь
middleПіраміда тестування — це модель розподілу рівнів автоматизованих тестів: unit, integration, end‑to‑end. Вона рекомендує 70% unit, 20% integration, 10% e2e. Така ієрархія зменшує час виконання та підвищує надійність.
Повне пояснення
Що це і навіщо Піраміда тестування описує пропорції між різними типами автоматизованих тестів, що допомагає оптимізувати час розробки та забезпечити стабільність продукту.
Ключові принципи
- Unit‑тести перевіряють окремі функції/методи.
- Integration‑тести оцінюють взаємодію між модулями.
- End‑to‑end (E2E) тестують повний сценарій користувача.
Як це працює Починаємо з unit‑тестів, що швидко виявляють локальні помилки. Після їх стабілізації додаємо integration‑тести, щоб перевірити взаємодію. Нарешті, E2E тестуємо реальні сценарії.
Практика і реалізація
// unit test (Jest)
test('sum', () => {
expect(sum(1,2)).toBe(3);
});
// integration test (Vitest)
test('user service', async () => {
const user = await getUser(1);
expect(user.id).toBe(1);
});
// e2e test (Playwright)
test('login flow', async ({ page }) => {
await page.goto('/login');
await page.fill('#email', 'test@example.com');
await page.click('button[type=submit]');
await expect(page).toHaveURL('/dashboard');
});
Тестування
- Unit: Jest, Vitest.
- Integration: Supertest, Prisma Test Utils.
- E2E: Playwright, Cypress.
Оптимізація Зосереджуємося на 70% unit‑тестів, щоб швидко виявляти дефекти. Integration‑тести виконуються частіше, ніж E2E, що зменшує час CI.
Часті помилки
- Надмірна кількість E2E тестів → збільшує час.
- Недостатня крихкість unit‑тестів → пропускаються локальні баги.
- Відсутність моків у integration‑тестах → залежності зберігаються.
Дизайн‑рішення Використовувати shared test utils, щоб уникнути дублювання коду. Підтримувати CI‑pipeline з паралельним запуском тестів.
Безпека Тестувати валідацію даних у unit‑тестах, щоб запобігти SQL‑ін’єкціям та XSS.
Висновок Піраміда тестування забезпечує збалансований підхід, що дозволяє швидко виявляти помилки на ранніх етапах і зберігати якість продукту.