testing
Тестирование: unit/integration/e2e, выбор фреймворка (pytest/Jest/Vitest/Playwright), TDD,覆盖率
SKILL.mdskills/testing/SKILL.md
GitHubTesting
Гайд по тестированию программного обеспечения.
Типы тестов (пирамида)
| Уровень | Инструмент | Объём |
|---|---|---|
| Unit | pytest (Python), Jest/Vitest (JS) | Больше всего |
| Integration | pytest + апи-клиент, supertest | Средне |
| E2E | Playwright / Cypress | Мало |
Чек-лист
Выбор и настройка
- Unit: pytest (Python) / Vitest или Jest (JS/TS)
- E2E: Playwright (рекомендуется, кроссплатформенный)
- Отдельная команда запуска, CI-интеграция
Unit-тесты
- Тестируй одну единицу изолированно (мок зависимостей)
- Граничные случаи и ветвления
- Тест имени —
test_<что>_<при_каком_условии>_<ожидание> - Не тестируй реализацию, тестируй поведение
Интеграционные
- Проверяй контракты между модулями/сервисами
- Тестовая БД отдельно от прода (фикстуры + откат)
- Реальные вызовы API, не только моки
E2E
- Сценарии пользовательских путей (логин → действие → результат)
- Стабильные селекторы (
data-testid) - Изолированное окружение и детерминированность
Качество тестов
- Быстрые в прогоне (unit < 100мс)
- Независимы (без общего состояния между тестами)
- Детерминированы (без флапи по времени/случайности)
- Покрывают критичную логику, а не гонятся за 100% покрытия
Правила
- Пиши тест на баг до фикса (red → green).
- Не дублируй покрытие по уровням — сбалансируй пирамиду.
- Тесты — это код: читаемые, поддерживаемые, рефакторимые.
- Flaky-тест хуже отсутствия теста — чини или убирай.