Интеграционное тестирование

Введение в тестирование на Java

Maria Milusheva

Senior Software Engineer

Что такое интеграционное тестирование

  • Интеграция — процесс объединения отдельных программных компонентов или подсистем в единую согласованно работающую систему.
  • Интеграционный тест — тест, проверяющий взаимодействие нескольких компонентов или модулей приложения и их совместную работу. Часто включает тестирование с внешними зависимостями.

Мебель IKEA перед сборкой

Введение в тестирование на Java

Зависимости

  • Программная зависимость — отношение между компонентами, при котором один компонент опирается на другой для корректной работы

1 Диаграмма создана с помощью Mermaid: https://mermaid.live
Введение в тестирование на Java

Интеграционное тестирование vs. модульное тестирование

Модульные тесты:

  • Проверяют отдельные компоненты в изоляции
  • Сбои указывают на проблему в конкретной части кода
  • Быстрее пишутся и выполняются
  • Используют различные инструменты, чтобы избежать тестирования зависимостей
  • Проверяют точные результаты и значения

Интеграционные тесты:

  • Проверяют несколько компонентов и их взаимодействие
  • Сбои требуют более глубокого анализа
  • Могут быть ресурсоёмкими и занимать больше времени
  • Тестируют реальные взаимодействия с реальными зависимостями
  • Могут проверять общее поведение, а не точные результаты
Введение в тестирование на Java

Пример: обмен валют

Предположим, мы создаём приложение для обмена валют:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Enables ExchangeApp to use the bank server

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Save the object passed through the constructor
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Use the return values of the bank method in calculations } }
Введение в тестирование на Java

Интеграционное тестирование обмена валют

Интеграционное тестирование проверяет как метод convertEuroTo, так и EuropeanCentralBankServer:

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Pass bank object to constructor

double amount = 1000.0; String currency = "USD"; // convertEuroTo calls getRateEuroTo from the bank object double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Can't predict exact value, can only sanity test }
Введение в тестирование на Java

Давайте потренируемся!

Введение в тестирование на Java

Preparing Video For Download...