Zum Inhalt springen
SDETRole
SDETRole

Glossar · Testgrundlagen

Integrationstest

Englisch: Integration test

Auch genannt: Integrationstests, Integrationstesten, Integration Testing

Definition

Ein Test, der prüft, ob zwei oder mehr Komponenten, etwa ein Service und seine Datenbank oder zwei APIs, über ihre echten Schnittstellen korrekt zusammenarbeiten.

Ein Integrationstest verifiziert die Verbindungen zwischen Komponenten statt der Logik innerhalb einer einzelnen. Er verwendet an mindestens einer Grenze echte Implementierungen: ein Repository gegen eine echte Datenbank, einen Service, der die API eines anderen Service aufruft, einen Message Producer und seinen Consumer. Genau diese Tests finden falsches SQL, fehlerhafte Serialisierung, fehlende Konfiguration und nicht passende Contracts – alles Dinge, die Unit-Tests mit Mocks übersehen würden.

Beispiel

Ein OrderRepository ist mit Mocks unit-getestet, und diese Tests bestehen. Der Integrationstest führt es gegen eine echte PostgreSQL-Instanz aus, die in einem Container gestartet wird:

  1. PostgreSQL mit Testcontainers starten und die Schema-Migrationen anwenden.
  2. Über das Repository eine Bestellung mit drei Positionen speichern.
  3. Sie per ID wieder laden und prüfen, ob Summen und Positionen übereinstimmen.
  4. Bestellungen nach Datumsbereich abfragen und prüfen, ob die Grenzen inklusive sind.

Gegen eine echte Datenbank kann dieser Test einen Tippfehler in einem Spaltennamen aufdecken, eine nie angewendete Migration, einen Fehler bei der Zeitzonenumrechnung oder eine Abfrage, die in einer In-Memory-Datenbank funktioniert, in PostgreSQL aber nicht.

Integrations- vs. Unit- vs. End-to-End-Test

Unit Integration End-to-End
Umfang Eine Funktion oder Klasse Einige Komponenten und ihre Schnittstellen Das gesamte System, aus Nutzersicht
Abhängigkeiten Durch Test-Doubles ersetzt Echt an der getesteten Grenze Alle echt
Geschwindigkeit Millisekunden Sekunden Sekunden bis Minuten
Ein Fehlschlag zeigt auf Ein bestimmtes Stück Logik Eine bestimmte Schnittstelle Irgendeine Stelle im System

Ansätze

  • Schmale Integrationstests prüfen jeweils eine Grenze (Service plus Datenbank), alles andere ist gestubbt. Sie sind schnell und präzise, und die meisten Teams wollen viele davon.
  • Breite Integrationstests starten mehrere echte Services gemeinsam. Sie geben mehr Sicherheit, sind aber langsamer und schwerer zu diagnostizieren.
  • Klassische Lehrbücher beschreiben außerdem Big-Bang-, Top-down- und Bottom-up-Integration, also die Reihenfolge, in der Module zusammengefügt werden. Im Interview hilft es, die Begriffe zu kennen, moderne Teams integrieren aber überwiegend kontinuierlich.

Häufige Fehler

  • Eine langlebige Datenbank teilen – zwischen Tests und Entwicklern –, wodurch Ergebnisse von übrig gebliebenen Daten abhängen. Geben Sie jedem Lauf eine saubere Wegwerf-Instanz.
  • Genau die Grenze mocken, die man testen wollte, wodurch aus dem Integrationstest wieder ein Unit-Test wird.

Tippen Sie, um SDETRole zu durchsuchen.

Volltextsuche mit Pagefind · läuft in Ihrem Browser Suchseite öffnen →