Ответ
Для backend-приложения используется многоуровневая пирамида тестирования. Основные уровни:
1. Модульные тесты (Unit Tests)
- Цель: Проверить корректность отдельного класса или метода в изоляции.
- Инструменты: JUnit, TestNG, Mockito.
- Пример:
@Test public void shouldCalculateTotalPrice() { CartService service = new CartService(); BigDecimal total = service.calculateTotal(List.of(item1, item2)); assertEquals(new BigDecimal("150.00"), total); }
2. Интеграционные тесты (Integration Tests)
- Цель: Проверить взаимодействие нескольких компонентов (БД, внешние сервисы, REST API).
- Инструменты: Spring Boot Test, Testcontainers, REST Assured.
- Пример: Тест репозитория с реальной БД в Docker.
3. Сквозные тесты (End-to-End / E2E Tests)
- Цель: Проверить полный сценарий работы системы от начала до конца.
- Инструменты: Selenium, Cypress (для UI), специализированные фреймворки для API.
- Пример: Тест сценария "Создание пользователя -> Вход -> Создание заказа".
Дополнительные уровни:
- Нагрузочное тестирование (Load Testing): Оценка производительности под нагрузкой (Gatling, JMeter).
- Контрактное тестирование (Contract Testing): Проверка совместимости между сервисами (Pact).
Правило: Пирамида должна иметь много unit-тестов, меньше интеграционных и ещё меньше E2E-тестов.