Інтеграційне тестування

Вступ до тестування в Java

Maria Milusheva

Senior Software Engineer

Визначення інтеграційного тестування

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

Зображення меблів Ikea перед складанням

Вступ до тестування в Java

Залежності

  • Програмна залежність — відношення між компонентами, коли один компонент покладається на інший, щоб працювати належним чином

Схема залежностей між класами

1 Схему створено за допомогою Mermaid: https://mermaid.live
Вступ до тестування в Java

Інтеграційне проти модульного тестування

Модульні тести:

  • Тестують окремі компоненти ізольовано
  • Збої точно вказують на проблемний фрагмент коду
  • Швидші в написанні та виконанні
  • Використовують інструменти, щоб уникати тестування залежностей
  • Перевіряють точні результати та наслідки

Інтеграційні тести:

  • Тестують кілька компонентів і їхню взаємодію
  • Збої потребують глибшого аналізу для відстеження
  • Можуть бути важкими, довше готуються та виконуються
  • Перевіряють реальні взаємодії з реальними залежностями
  • Можуть перевіряти загальну поведінку, а не точні результати
Вступ до тестування в 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...