Какие основные уровни (layers) тестирования используются для backend-приложения?

«Какие основные уровни (layers) тестирования используются для backend-приложения?» — вопрос из категории Тестирование, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для 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-тестов.