Integrationstest prüft, ob mehrere Komponenten einer Software korrekt zusammenarbeiten. Während der Unit-Test jede Einheit isoliert betrachtet, testet der Integrationstest die Schnittstellen dazwischen: Datenbankzugriffe, REST-APIs, Message-Queues oder den Aufruf anderer Module.
Was Integrationstests finden
- Schnittstellenfehler: falsche Parameterreihenfolge, abweichende Datentypen oder veraltete Verträge zwischen Komponenten.
- Integrationsfehler: Probleme mit dem Datenbankschema, fehlende Konfiguration, ungünstige Reihenfolge bei Initialisierung.
- Umgebungsfehler: Unterschiede zwischen Entwicklung, Test und Produktion (z. B. Zeichensätze, Zeitzonen).
In der Testpyramide bilden Integrationstests die mittlere Schicht: weniger zahlreich als Unit-Tests, dafür näher an der Realität — und entsprechend langsamer, weil echte Datenbanken oder Container beteiligt sein können.
Strategien
- Big Bang: Alle Module werden auf einmal zusammengeschaltet und getestet — bei kleinen Systemen praktikabel, Fehler sind aber schwerer zu lokalisieren.
- Inkrementell: Module werden schrittweise integriert (Top-down oder Bottom-up), Fehler lassen sich gezielt einer Integrationsstufe zuordnen.
- Testcontainers: Docker-Container starten im Test eine echte Datenbank oder einen echten Dienst — verbreiteter Kompromiss zwischen Realitätstreue und Reproduzierbarkeit.
Abgrenzung
Fehler innerhalb einer einzelnen Komponente bleibt Sache des Unit-Tests. Ob eine Änderung bereits behobene Fehler wieder einführte, deckt der Regressionstest auf; den kompletten Ablauf durch die Benutzeroberfläche prüft der End-to-End-Test.
Verwandte Grundlagen: Testen (Überblick), CI/CD, Pipeline, Bug.