Какие основные типы и сценарии тестирования вы применяли на практике?

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

Ответ

На практике применял следующие ключевые типы и сценарии тестирования:

1. Модульное тестирование (Unit Testing)

  • Инструменты: JUnit 5, Mockito.
  • Цель: Проверка изолированной работы отдельных классов или методов.
  • Пример:

    @Test
    void calculateTotalPrice_ShouldReturnCorrectSum() {
    // Arrange
    OrderService service = new OrderService();
    List<Item> items = List.of(new Item("Book", 10.0), new Item("Pen", 2.5));
    
    // Act
    double total = service.calculateTotalPrice(items);
    
    // Assert
    assertEquals(12.5, total);
    }

2. Интеграционное тестирование (Integration Testing)

  • Инструменты: Spring Boot Test (@SpringBootTest), Testcontainers, H2 Database.
  • Цель: Проверка взаимодействия между компонентами (сервисы, репозитории, внешние API).
  • Сценарий: Тестирование сохранения и загрузки сущности через JPA-репозиторий.

3. Функциональное/API-тестирование (Functional/API Testing)

  • Инструменты: REST Assured, Postman.
  • Цель: Проверка корректности работы REST API эндпоинтов.
  • Пример сценария: POST /api/users должен возвращать 201 Created и созданный объект.

4. Сквозное тестирование (End-to-End Testing)

  • Инструменты: Selenium, Cypress.
  • Цель: Имитация действий реального пользователя в UI (логин, заполнение формы, навигация).

5. Нагрузочное тестирование (Load Testing)

  • Инструменты: JMeter, Gatling.
  • Цель: Проверка производительности и стабильности системы под нагрузкой (например, 100 RPS в течение 5 минут).

6. Тестирование безопасности (Security Testing)

  • Сценарии: Проверка на уязвимости (SQL-инъекция, XSS), валидация аутентификации и авторизации.

7. Другие ключевые сценарии:

  • Тестирование граничных условий и исключений: Пустые коллекции, null-значения, некорректные форматы данных.
  • Регрессионное тестирование: Автоматизированные прогоны тестов в CI/CD (Jenkins, GitHub Actions) для проверки, что новые изменения не сломали существующий функционал.