Testy integracyjne

Wprowadzenie do testowania w Javie

Maria Milusheva

Senior Software Engineer

Definicja testów integracyjnych

  • Integracja – proces łączenia poszczególnych komponentów lub podsystemów w spójny, działający system.
  • Test integracyjny – test weryfikujący interakcje między wieloma komponentami aplikacji, aby upewnić się, że współpracują poprawnie. Często obejmuje testowanie z zewnętrznymi zależnościami.

Zdjęcie mebli IKEA tuż przed montażem

Wprowadzenie do testowania w Javie

Zależności

  • Zależność oprogramowania – relacja między komponentami, w której jeden komponent wymaga drugiego do poprawnego działania

1 Chart made using Mermaid: https://mermaid.live
Wprowadzenie do testowania w Javie

Testy integracyjne vs. jednostkowe

Testy jednostkowe:

  • Testują poszczególne komponenty w izolacji
  • Błędy wskazują konkretny fragment kodu
  • Szybsze do napisania i uruchomienia
  • Używają narzędzi do unikania testowania zależności
  • Sprawdzają dokładne wyniki i rezultaty

Testy integracyjne:

  • Testują wiele komponentów i ich interakcje
  • Błędy wymagają głębszej analizy
  • Mogą być kosztowne i czasochłonne w konfiguracji
  • Testują rzeczywiste interakcje z prawdziwymi zależnościami
  • Mogą weryfikować ogólne zachowania zamiast dokładnych wyników
Wprowadzenie do testowania w Javie

Przykład: Wymiana walut

Suppose we are building a currency exchange app:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Umożliwia ExchangeApp korzystanie z serwera bankowego

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Zapisuje obiekt przekazany przez konstruktor
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Używa wartości zwróconej przez metodę bankową w obliczeniach } }
Wprowadzenie do testowania w Javie

Test integracyjny wymiany walut

Test integracyjny weryfikuje metodę convertEuroTo oraz EuropeanCentralBankServer:

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Przekazuje obiekt banku do konstruktora

double amount = 1000.0; String currency = "USD"; // convertEuroTo wywołuje getRateEuroTo z obiektu banku double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Nie można przewidzieć dokładnej wartości – tylko test poprawności }
Wprowadzenie do testowania w Javie

Czas na ćwiczenia!

Wprowadzenie do testowania w Javie

Preparing Video For Download...