Integrationstestning

Introduktion till testning i Java

Maria Milusheva

Senior Software Engineer

Vad är integrationstestning?

  • Integration – processen att kombinera enskilda programvarukomponenter eller delsystem till ett enhetligt system som fungerar sammanhängande.
  • Integrationstest – ett test som verifierar samspelet mellan flera komponenter eller moduler i en applikation för att säkerställa att de fungerar korrekt tillsammans. Det innefattar ofta testning med externa beroenden.

En bild på Ikea-möbler precis innan montering

Introduktion till testning i Java

Beroenden

  • Programvaruberoende – en relation mellan programvarukomponenter där en komponent förlitar sig på en annan för att fungera korrekt

Diagram över beroenderelationer mellan klasser

1 Diagram skapat med Mermaid: https://mermaid.live
Introduktion till testning i Java

Integrationstestning vs. enhetstestning

Enhetstester:

  • Testar enskilda komponenter isolerat
  • Fel pekar direkt på en specifik del av koden
  • Snabbare att skriva och köra
  • Använder olika verktyg för att undvika att testa beroenden
  • Kontrollerar exakta resultat och utfall

Integrationstester:

  • Testar flera komponenter och deras samspel
  • Fel kräver djupare analys för att spåra
  • Kan vara tunga och ta längre tid att konfigurera och köra
  • Testar verkliga interaktioner med verkliga beroenden
  • Kan kontrollera allmänna beteenden i stället för exakta resultat
Introduktion till testning i Java

Exempel: Valutaväxling

Anta att vi bygger en app för valutaväxling:

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 } }
Introduktion till testning i Java

Integrationstestning av valutaväxling

Integrationstestningen verifierar både metoden convertEuroTo och 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 }
Introduktion till testning i Java

Nu kör vi en övning!

Introduktion till testning i Java

Preparing Video For Download...