Integrační testování

Úvod do testování v Javě

Maria Milusheva

Senior Software Engineer

Definice integračního testování

  • Integrace – proces spojování jednotlivých softwarových komponent nebo subsystémů do jednotného funkčního celku.
  • Integrační test – test ověřující interakce mezi více komponentami nebo moduly aplikace, aby bylo zajištěno jejich správné spolupracování. Zahrnuje zpravidla testování s externími závislostmi.

Obrázek nábytku Ikea těsně před sestavením

Úvod do testování v Javě

Závislosti

  • Softwarová závislost – vztah mezi softwarovými komponentami, kde jedna komponenta ke své funkci potřebuje jinou

1 Chart made using Mermaid: https://mermaid.live
Úvod do testování v Javě

Integrační vs. jednotkové testování

Jednotkové testy:

  • Testují jednotlivé komponenty izolovaně
  • Selhání přesně ukazuje na problematickou část kódu
  • Rychlejší na psaní i spouštění
  • Používají nástroje pro vyhnutí se testování závislostí
  • Ověřují přesné výsledky a výstupy

Integrační testy:

  • Testují více komponent a jejich vzájemné interakce
  • Selhání vyžaduje hlubší analýzu příčin
  • Mohou být náročné a jejich příprava i spuštění déle trvají
  • Testují reálné interakce se skutečnými závislostmi
  • Mohou ověřovat obecné chování místo přesných výsledků
Úvod do testování v Javě

Příklad: Směna měn

Předpokládejme, že vytváříme aplikaci pro směnu měn:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Umožňuje ExchangeApp používat bankovní server

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Uložení objektu předaného konstruktorem
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Použití návratových hodnot metody banky ve výpočtech } }
Úvod do testování v Javě

Integrační testování směny měn

Integrační test ověřuje metodu convertEuroTo i EuropeanCentralBankServer:

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Předání objektu bank konstruktoru

double amount = 1000.0; String currency = "USD"; // convertEuroTo volá getRateEuroTo z objektu bank double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Přesnou hodnotu nelze předvídat, pouze ověřit správnost }
Úvod do testování v Javě

Pojďme procvičovat!

Úvod do testování v Javě

Preparing Video For Download...