# Integrationstest

Der Begriff Integrationstest bezeichnet in der Softwareentwicklung eine aufeinander abgestimmte Reihe von Einzeltests, die dazu dienen, verschiedene voneinander abhängige Komponenten eines komplexen Systems im Zusammenspiel miteinander zu testen. Die erstmals im gemeinsamen Kontext zu testenden Komponenten haben im Idealfall jeweilige Modultests erfolgreich bestanden und sind für sich isoliert fehlerfrei funktionsfähig.

## Integrationsstrategien

Der Integrationstest wird in zwei unterschiedliche Strategien unterschieden: Die testzielorientierte Strategie benötigt nur die zum Testen notwendigen System-Komponenten. Dort werden die Testfälle entsprechend definierter Testziele erstellt und ausgeführt. Die vorgehensorientierte Strategie ist abhängig von der Integrationsreihenfolge aus der Systemarchitektur.
Eine weitere Unterscheidung ist die Art, wie die Komponenten integriert werden: Die inkrementelle Integration fügt die Module schrittweise zusammen. Hierzu müssen fehlende Module simuliert werden. Die nicht-inkrementelle Integration fügt alle Komponenten gleichzeitig zusammen und integriert sie in das [zu testende] System. Dazu müssen alle Module bereits vor dem Integrationstest vorhanden sein. Diese Variante hat sich in der Praxis als nicht tauglich erwiesen.
Zusammengefasst stellt der Integrationstest sicher, dass die unterschiedlichen Module, welche zusammen arrangiert wurden, auch wie ein funktionsfähiges System agieren. Er untersucht also die Kooperation von selbstständigen Programmbestandteilen.
   „Der Integrationstest erfordert eine Teststrategie (z. B. Top-Down, Bottom-Up) zur Zusammensetzung der einzelnen Komponenten, eine Testorganisation (Auswahl und Zusammensetzung einzelner Testfälle) und die technische Unterstützung, z. B. durch Testtreiber.“

## Systematik

Für jede Abhängigkeit zwischen zwei Komponenten eines Systems wird ein Testszenario definiert, welches in der Lage ist nachzuweisen, dass nach der Zusammenführung sowohl beide Komponenten für sich wie auch der Datenaustausch über die gemeinsame(n) Schnittstelle(n) spezifikationsgemäß funktionieren. Als Methoden werden sowohl Funktionstests als auch Schnittstellentests angewendet. Da die Funktionstests meistens im Rahmen der Komponententests bereits durchgeführt wurden, dienen sie an dieser Stelle dazu festzustellen, ob die richtige Komponente verwendet wird. Die Schnittstellentests dienen zur Überprüfung der Daten, die zwischen den Komponenten ausgetauscht werden.

## Umfang

Der Umfang von Integrationstests ist nicht auf ein Gesamtsystem festgelegt. Da der zeitliche Aufwand für Integrationstests mit wachsender Komponentenanzahl überproportional ansteigt, ist es üblich, Integrationstests für einzelne, abgegrenzte Subsysteme durchzuführen und diese dann im weiteren Verlauf als eine Komponente zu betrachten (Bottom-Up-Methode). Bei dieser Methode enden die Integrationstests erst mit den erfolgreichen Testläufen in einer mit dem späteren Produktivsystem identischen Testumgebung.
In kleineren Softwareprojekten finden Integrationstests häufig während der Programmierung durch den oder die Programmierer statt. Unmittelbar im Anschluss an die Programmierung eines Moduls wird das Modul selbst und das Zusammenspiel mit dem bisher erstellten Programmcode getestet. Bei großen, umfangreichen Software-Entwicklungen, die meist im Rahmen eines Projekts durchgeführt werden, erhöht sich der Aufwand für Tests generell so stark, dass diese zur Steigerung der Effizienz automatisiert durchgeführt werden.