Beim Integrationstest geht es darum, Einheiten oder Module zu nehmen und zu testen, wie sie funktionieren, sobald sie in die anderen Einheiten eines Systems integriert sind. Ein Modul kann etwas so Einfaches wie eine Fehlerbehebung, eine Story oder etwas Umfangreicheres wie das Hinzufügen einer neuen Funktion oder Option eines Drittanbieters zu einem System sein.
Wann und wie Integrationstests durchgeführt werden
Es gibt vier Ebenen des Softwaretests: Unit-Tests, Integrationstests, Systemtests und Abnahmetests. Ein Entwickler schreibt während des Unit-Tests kurze Testskripte, um zu überprüfen, ob die einzelne Komponente oder das einzelne Modul die spezifizierten Anforderungen erfüllt. Danach ist das Gerät bereit für die Integration mit anderen Modulen. Integrationstests können damit beginnen, zu überprüfen, wie die Komponenten interagieren, sich gegenseitig aufrufen oder ausschließlich auf der Grundlage der Systemanforderungen funktionieren. Der Prozess wird vor dem Systemtest durchgeführt, obwohl der Integrationstest während der gesamten Projektlaufzeit fortgesetzt wird, indem andere Module oder Systeme von Drittanbietern integriert werden.
Testfälle
Der erste Schritt für Integrationstests besteht darin, einen Testplan, Anzüge und Fälle zu erstellen. Das Erstellen von Testfällen zur Abdeckung aller möglichen Szenarien erfordert sorgfältige Überlegungen. Der Tester sollte verstehen, wie Daten in das System ein- und ausgehen und die Hauptfunktion und den Ablauf des Systems als Ganzes kennen. Der Tester muss auch die mögliche Verwendung von Nachahmungsprogrammen, sogenannten Stubs und Treibern, in Betracht ziehen.
Stubs und Treiber
Beim Durchführen von Integrationstests müssen einige Module möglicherweise andere Module aufrufen, die noch nicht erstellt wurden. In diesem Fall kann ein Tester Nachahmungsprogramme namens Stubs und Treiber verwenden, um Verhaltensweisen der fehlenden Module durchzuführen. Beispielsweise kann der Tester einen Stub verwenden, wenn ein Modul der oberen Ebene ein Modul der unteren Ebene aufrufen muss, das noch nicht integriert ist. Ein Stub ist ein Codeteil, der die vom oberen Modul gesendeten Daten empfangen und eine Antwort zurückgeben kann. Wenn ein Modul auf niedrigerer Ebene Informationen von einem Modul auf höherer Ebene benötigt, ist ein Treiber ein Codestück, das die Antwort nachahmen kann. Nachfolgend finden Sie Beispiele mit jeweils entsprechenden Erläuterungen.
Tipps für den Erfolg
Die Kommunikation mit dem Entwicklungsteam ist entscheidend für den Erfolg.
- Manchmal werden Module von mehreren Entwicklern geschrieben, die möglicherweise nicht wissen, wie ihre Beiträge mit den von anderen geschriebenen Modulen interagieren. Es ist die Aufgabe des Testers, etwaige Unstimmigkeiten mit den Entwicklern zu kommunizieren, und je früher, desto besser.
- Der Tester sollte sowohl funktionale als auch nichtfunktionale Tests berücksichtigen. Wenn beispielsweise ein neues Zahlungsgateway hinzugefügt wird, umfasst der Testplan höchstwahrscheinlich API-Tests. Wenn erwartet wird, dass die neue Funktion viel neuen Datenverkehr liefert, sind möglicherweise Leistungstests erforderlich.
- Berücksichtigen Sie bei der Testplanung frühzeitig etwaige Integrationen von Drittanbietern. Es kann einige Zeit dauern, bis Sie den richtigen Zugriff oder die zum Testen erforderlichen Informationen erhalten.
Nach der Erstellung der Testfälle muss der Tester entscheiden, wie er beim Integrationstest vorgeht. Die Projektgröße, -art und die häufig verwendete Methodik bestimmen oft den Ansatz.
Ansätze für Integrationstests
Es gibt zwei Arten von Ansätzen für Integrationstests. Iterativ wird oft als agile Methode eingesetzt und ist die beliebteste. Andere Methoden, wie zum Beispiel der Big-Bang-Ansatz, kommen zwar nicht so oft zum Einsatz, können aber je nach Projekt sehr hilfreich sein.
Iterative Ansätze
- Top-Down-Ansatz – Der Tester beginnt den Integrationstest mit dem Modul der höchsten Ebene ganz oben und arbeitet sich dann nach unten zum Modul der niedrigsten Ebene vor. Diese Option ist hilfreich, da Sie wichtige Module zunächst testen können. Wenn das untergeordnete Modul nicht zum Testen verfügbar ist, können Sie als Ersatz einen Stub verwenden.
- Bottom-Up-Ansatz – Der Tester beginnt bei diesem Ansatz im Gegensatz zum vorherigen mit dem untersten Modul und fährt nach oben fort. Diese Option ist nützlich, wenn mehrere Schichten von Modulen auf niedrigerer Ebene vorhanden sind. Möglicherweise beginnen Sie ganz oben und finden sofort ein Problem. Es wäre schwierig, die Ursache des Problems einzugrenzen, wenn so viele Module dafür verantwortlich sein könnten. Der Tester kann sicherstellen, dass jede Ebene wie vorgesehen funktioniert, bevor er unten beginnt und sich nach oben vorarbeitet. Wenn kein übergeordnetes Modul zum Testen verfügbar ist, kann ein Tester einen Treiber als Ersatz verwenden.
- Hybrider Ansatz – Diese Methode kombiniert die beiden oben genannten Integrationstestansätze. Die Module der obersten und unteren Ebene werden oft gleichzeitig getestet, bis sie sich nach dem Test schließlich in der Mitte treffen. Bei diesem Ansatz werden sowohl Stubs als auch Treiber verwendet. Dies ist am nützlichsten, wenn umfangreiche Projekte wie ganze Betriebssysteme getestet werden oder wenn dem Team viele Tester zur Verfügung stehen, um Tests von beiden Seiten durchzuführen.
Andere Ansätze
- Big-Bang-Testing – Dieser Ansatz wartet bis zur Fertigstellung aller Komponenten, um sie dann gleichzeitig zu testen. Wasserfallprojekte verwenden diese Methode.
- Von Fall zu Fall – Wenn bereits ein stabiles System vorhanden ist und ein neues Modul, beispielsweise ein System eines Drittanbieters, als zusätzliche Funktion eingeführt wird, kann von Fall zu Fall entschieden werden, wie viel Test erforderlich ist.
Beispiel
Lassen Sie uns dies alles anhand eines vereinfachten, realen Beispiels zusammenfassen. Denken Sie darüber nach, eine E-Commerce-Website zu testen, die es einem Benutzer ermöglicht, mit einem Konto oder als Gastbenutzer zur Kasse zu gehen. Die Module könnten etwa so aussehen:
Sobald die Site erstellt ist, kann Level 1 getestet werden. Da die anderen Module der Stufe 2 abgeschlossen sind, können diese mit der Stufe 1 und einzeln integriert und getestet werden.
Stellen Sie sich nun vor, Sie würden der Website neue Funktionen hinzufügen. Die Module könnten etwa so aussehen:
Die Aktionscode-Funktion muss sowohl als Benutzer mit Konto als auch mit Gast-Checkout getestet werden. Auch das Treueprogramm steht zum Testen bereit. Es muss von einem Benutzer mit einem Konto getestet werden, sowohl mit als auch ohne Aktionscode.
Dieses einfache Beispiel zeigt, wie Integrationstests für ein neues oder bestehendes Projekt durchgeführt werden. Immer wenn eine neue Funktion hinzugefügt wird, sind fortlaufende Integrationstests erforderlich. Nach Abschluss der Integrationstests kann mit dem Systemtest begonnen werden, der sicherstellt, dass das System als Gesamtprojekt funktioniert.
Vorteile
Integrationstests bieten mehrere Vorteile.
- Systemtests können schneller und effizienter durchgeführt werden. Die Bestätigung, dass einzelne Module funktionieren, erhöht das Vertrauen des Testers beim Testen des gesamten Systems.
- Der Tester spart Zeit, indem er bei der Durchführung von Integrationstests Probleme früher im SDLC findet, was deren Behebung kostengünstiger macht.
- Integrationstests können dem Tester ein tiefergehendes Verständnis des Projekts vermitteln. Wenn der Tester über mehr Wissen verfügt, kann er auf einer tieferen Ebene testen und mehr Vertrauen in das System aufbauen.
Abschluss
Durch Integrationstests kann der Tester bestätigen, dass ein neues Modul wie vorgesehen funktioniert. Darüber hinaus wird durch Tests überprüft, ob alle Komponenten zusammenarbeiten, um das Projekt nach der Integration des neuen Moduls in das System zu verbessern. Integrationstests erfolgen nach Unit-Tests, aber vor Systemtests und sind eine fortlaufende Praxis, die immer dann durchgeführt wird, wenn einem System neue Funktionen oder Module hinzugefügt werden.
Für erfolgreiche Integrationstests sind fundierte Systemkenntnisse und detaillierte Anforderungen des Projektteams unerlässlich. Erfahrene Tester berücksichtigen beim Schreiben von Testfällen und Testplänen den Endbenutzer und seine erwarteten Aktionen. Testpläne für Integrationstests unterscheiden sich immer je nach Art des Systems und seinem Verwendungszweck. Die Methodik des Projekts wird den Tester zu einem iterativen Ansatz für agile Produkte oder einem alternativen Ansatz für Wasserfallmethoden führen.