Was sind Integrationstests? 

Der in der Softwareentwicklung sehr verbreitete Begriff „Integrationstests“ kann intuitiv interpretiert werden. Er bezeichnet solche Tests, die überprüfen, ob mehrere (oft getrennt entwickelte) Bestandteile des Gesamtsystems reibungslos und fehlerfrei miteinander zusammenspielen. Es wird dabei das Ziel verfolgt, die Schnittstellenfehler bei der Zusammenarbeit von mehreren Subsystemen bzw. Applikationsbereichen untereinander rechtzeitig zu erkennenAußerdem wird geprüft, ob die unterschiedlichen Module eines Systems so funktionierten wie erwartet. Diese Art des Testens wird nach dem Unittest, der zuerst die Komponente einzeln und unabhängig voneinander testet, durchgeführt. Auf diese Weise werden Fehler entdeckt, die die Unittests nicht finden konnten. Nach den Integrationstests werden üblicherweise End-to-End Tests durchgeführt. 

 

Einsatzfelder  

Integrationstests werden dann eingesetzt, wenn das reibungslose Zusammenspiel zwischen den einzelnen Bestandteilen des Systems garantiert werden soll. Fehler bei der Integration können aufgrund mehrerer Faktoren auftreten, wie z.B. die Verwendung eines externen Systems, die abweichende Kommunikationsformate verwendet. In der Praxis finden sich sehr viele Sub-Arten von solchen Tests, die dann je nach Zielsetzung auf verschiedenen Granularitätsebenen angewendet werden können. Diese sind:  

  • (Inner-Module) Integration Tests 
  • (Cross-Module) Integration Tests
  • (Cross-Tier) Integration Tests 
  • (Sub-System) Integration Tests 
  • (System) Integration Tests 

Eine detaillierte Beschreibung der einzelnen Sub-Arten finden Sie in unserem „Integration Tests Tutorial“

 

Strategien für Integrationstests 

Auch gibt es mehrere Strategien bei der Umsetzung der Integrationstests, wie z.B. Top-Down und Bottom-Up VorgehensweiseNachfolgend finden Sie einen kurzen Überblick:    

1. Top-Down-Testing 

Bei diesem Ansatz fängt man mit der Integration der Module auf den oberen Stufen, die hochgranulare Geschäftsmodule abbilden, und erweitert diese Tests Schritt für Schritt bis hin zu Modulen auf niedrigsten Stufen, die feingranulare Aspekte einer Applikation implementieren. Solange die Module auf untersten Ebenen nicht existieren, können Sie durch die Verwendung von “Stubs” simuliert werden.  

 

Top Down Methode

Quelle: https://www.guru99.com/integration-testing.html

Vorteile 

  • Fokus auf die Integration der Kerngeschäftsabläufe statt auf die Details 
  • Ein Tester kann die Module nach Priorität testen und so größere Fehler in der Konstruktion schneller finden und melden 
  • Frühe Bereitstellung eines Prototypmöglich

Nachteile 

  • Die Module auf der niedrigen Stufe werden unzureichend getestet und möglicherweise werden die spezifischen Fehler dort zu spät entdeckt

 

2. Bottom-Up-Testing 

Bei diesem Ansatz werden zuerst die Module aus den niedrigsten Stufen bis hin zu den obersten Stufen getestet werden. Diese Methode ist empfehlenswert, wenn als Erstes sichergestellt werden sollte, dass die Basismodule möglichst reibungslos untereinander funktionieren. Die Ansteuerungslogik im Test ersetzt dabei die eventuell noch nicht fertiggestellte Geschäftslogik auf den höheren Stufen, weshalb der Testfall dann als ”Driver” für Module auf unteren Stufen fungiert.  

Bottom-Up-Methode

Quelle: https://www.guru99.com/integration-testing.html

Vorteile 

  • Kleinere Code-Einheiten auf unteren Stufen können frühzeitig und unabhängig von der Fertigstellung der “großen” Module umfangreich integrativ getestet werden 
  • Effizientere Aufteilung der Tests auf verschiedene Teams 
  • Schnelle Fehlerfindung 

Nachteile 

  • Die Module auf der obersten Stufe werden unzureichend bzw. zu spät getestet, so dass trotz guter Integration auf niedrigen Stufen die wichtigen Schnittstellen auf den höheren Ebenen ungetestet bleiben

 

3. Hybrid-Integrationstest 

Neben diesen zwei Strategien existiert auch eine Mischung aus beiden – das Hybrid-Integrationstest. Hier werden obere und untere Module gleichzeitig integriert getestet. Dazu werden sowohl Stubs als auch Drivers eingesetzt.

Hybrid-Integrationstests

Quelle: https://www.guru99.com/integration-testing.html

 

Integrationstests vs. Unittests und funktionale End-To-End Tests 

In jeder Testumgebung sind alle drei Arten des Testens sehr wichtig und schließen sich nicht gegenseitig aus. Der grundlegende Unterschied liegt in der hierarchischen Reihenfolge, nach der diese erfolgen sollten. Das bedeutet, dass wenn Integrationstests durchgeführt werden, müssen davor alle Unittests erfolgreich ausgeführt worden sein bzw. für die funktionalen End-to-End Tests ist das erfolgreiche Bestehen der Integrationstests notwendigDer Hintergrund dieser Sequenz ist, dass bei Unittests der Code einzelner Komponenten sehr effektiv und zielgenau isoliert auf seine Richtigkeit und Anwendbarkeit geprüft wird. Damit wird die Basisfunktionalität dieser Komponenten sichergestellt. Im zweiten Schritt werden die unterschiedlichen Module miteinander vernetzt und somit wird die reibungslose Kommunikation zwischen diesen überprüftErst am Ende werden funktionale End-To-End Tests durchgeführt, die als eine Art von kundennahen Interaktionstests interpretiert werden können, die die übergreifenden Geschäftsabläufe gemäß den fachlichen Anforderungen funktional überprüfen und deshalb erst ausgeführt werden sollen, wenn die einzelnen Systembestandteil richtig integriert sind. Auch die Komplexität der Tests und deren Ausführungsdauer steigt rapide in der dargestellten Reihenfolge. Zu einem erfolgreichen Testprozess gehören alles 3 Teststufen dazu, da sie miteinander korrelieren und sich beim sorgfältigen Design optimal ergänzen 

 

Verwandte Themen

  • Test Pyramide 
  • Unit Tests 
  • Funktionstests / End-to-End Tests