Тестирование
Тестирование является неотъемлемой частью архитектуры приложения. Цель — обеспечить предсказуемость работы бизнес-сценариев, п редотвратить регрессии и создать безопасное пространство для рефакторинга.
Общие принципы
MUST
- Для средних и больших проектов тестовое покрытие обязательно.
- Отсутствие тестового покрытия должно быть явно зафиксировано в README проекта.
Пирамида тестирования
Распределение тестов должно следовать принципу пирамиды: больше тестов на нижних уровнях, меньше на верхних.
Сравнительная таблица уровней
| Характеристика | Unit | Component | Integration | E2E |
|---|---|---|---|---|
| Доля | 70–80% | входит в Unit/Integ | 15–25% | < 5% |
| Скорость | ✅ Очень быстро | ✅ Быстро | ⚠️ Средне | ❌ Медленно |
| Стоимость | ✅ Дёшево | ✅ Дёшево | ⚠️ Средне | ❌ Дорого |
| Хрупкость | ✅ Низкая | ✅ Низкая | ⚠️ Средняя | ❌ Высокая |
| Что проверяет | Логику | UI-поведение | Feature-flow | Critical Path |
| Инструменты | Vitest, MSW | RTL, MSW | RTL, MSW | Playwright |
| Изоляция | Полная | Компонент | Страница / виджет | Нет (black-box) |
FORBIDDEN
- Использовать E2E для проверки edge cases — это зона unit-тестов.
Структура документации
- Best practices — правила написания, селекторы, assertions, моки
- Code Review и автоматизация — чек-лист для ревьюера