Test di integrazione

Introduzione al Testing in Java

Maria Milusheva

Senior Software Engineer

Definizione di test di integrazione

  • Integrazione: combinare componenti o sottosistemi in un sistema unico che funziona in modo coerente.
  • Test di integrazione: verifica l’interazione tra più componenti o moduli per assicurare che lavorino insieme correttamente; spesso coinvolge dipendenze esterne.

Immagine di mobili Ikea prima del montaggio

Introduzione al Testing in Java

Dipendenze

  • Dipendenza software: relazione in cui un componente dipende da un altro per funzionare correttamente

Diagramma delle dipendenze tra classi

1 Grafico creato con Mermaid: https://mermaid.live
Introduzione al Testing in Java

Test di integrazione vs unit test

Unit test:

  • Testano componenti singoli in isolamento
  • I guasti indicano il punto esatto del problema
  • Più rapidi da scrivere ed eseguire
  • Usano strumenti per evitare di testare le dipendenze
  • Asseriscono risultati esatti e output specifici

Test di integrazione:

  • Testano più componenti e le loro interazioni
  • I guasti richiedono analisi più approfondite
  • Più pesanti e lenti da preparare ed eseguire
  • Testano interazioni reali con dipendenze reali
  • Possono asserire comportamenti generali, non valori esatti
Introduzione al Testing in Java

Esempio: cambio valuta

Supponiamo di creare un’app di cambio valuta:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Consente a ExchangeApp di usare il server della banca

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Salva l'oggetto passato dal costruttore
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Usa i valori restituiti dal metodo della banca nei calcoli } }
Introduzione al Testing in Java

Test di integrazione: cambio valuta

I test di integrazione verificano sia il metodo convertEuroTo sia EuropeanCentralBankServer:

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Passa l'oggetto bank al costruttore

double amount = 1000.0; String currency = "USD"; // convertEuroTo chiama getRateEuroTo dall'oggetto bank double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Valore esatto imprevedibile: fai solo un sanity check }
Introduzione al Testing in Java

Ayo berlatih!

Introduzione al Testing in Java

Preparing Video For Download...