Integratietests

Introductie tot testen in Java

Maria Milusheva

Senior Software Engineer

Wat is integratietesten?

  • Integratie: het samenvoegen van losse componenten of subsystemen tot één goed werkend geheel.
  • Integratietest: test die controleert of meerdere componenten/modules correct samenwerken, vaak met echte externe afhankelijkheden.

Een Ikea-meubel vlak voor montage

Introductie tot testen in Java

Afhankelijkheden

  • Software-afhankelijkheid: relatie waarbij de ene component de andere nodig heeft om te werken

1 Grafiek gemaakt met Mermaid: https://mermaid.live
Introductie tot testen in Java

Integratietesten vs. unittesten

Unittests:

  • Testen losse onderdelen in isolatie
  • Fouten wijzen exact naar het probleemonderdeel
  • Sneller te schrijven en uit te voeren
  • Gebruiken tools om afhankelijkheden te vermijden
  • Asserten op exacte resultaten

Integratietests:

  • Testen meerdere onderdelen en hun interacties
  • Fouten vergen meer analyse om te traceren
  • Zwaarder en kost meer tijd om op te zetten en te draaien
  • Testen echte interacties met echte afhankelijkheden
  • Assers kunnen op gedrag zitten i.p.v. exacte waarden
Introductie tot testen in Java

Voorbeeld: valutawissel

Stel, we bouwen een valuta-app:

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 } }
Introductie tot testen in Java

Integratietest voor valutawissel

Integratietests verifiëren zowel de methode convertEuroTo als 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 }
Introductie tot testen in Java

Laten we oefenen!

Introductie tot testen in Java

Preparing Video For Download...