Integrationstests sind dafür konzipiert, die Integrität des Systems zu gewährleisten, indem sie bestätigen, dass alle Komponenten harmonisch interagieren, ohne unerwartete oder fehlerhafte
Verhaltensweisen zu zeigen.
Durch das Überprüfen der Datenflüsse und Funktionalitäten zwischen den einzelnen Systemteilen lassen sich Probleme erkennen, die in isolierten Modultests möglicherweise nicht sichtbar waren.
Integrationstests stellen sicher, dass das Zusammenspiel der Komponenten nicht nur funktioniert, sondern dass dies auch unter Einhaltung aller Sicherheitsstandards und -protokolle geschieht.
Dies schließt die Sicherstellung der Integrität der Daten und der Systemkomponenten mit ein, um unbefugte Zugriffe und Manipulationen zu verhindern.
-
Definition und Abgrenzung der Testfälle
Basierend auf der Architektur und den Schnittstellen des Systems werden spezifische Testfälle entwickelt, die das Zusammenspiel der Komponenten simulieren. Diese Testfälle richten sich nach
den realen Anwendungsszenarien und den technischen Anforderungen der Schnittstellen.
-
Ausführung der Integrationstests
Die Tests werden systematisch durchgeführt, wobei besonders auf die Datenübergänge und die Handhabung von Schnittstellenparametern geachtet wird. Die Testszenarien decken typische und
atypische Betriebsbedingungen ab, um die Robustheit der Integration zu überprüfen.
-
Überwachung der Integrität
Integrität in diesem Kontext bedeutet, dass das System gegen unautorisierte oder unzulässige Änderungen geschützt ist. Es wird überprüft, ob Sicherheits- und Zugriffskontrollmechanismen
korrekt implementiert sind und effektiv funktionieren.
-
Dokumentation und Analyse
Alle Testergebnisse werden detailliert dokumentiert, einschließlich der identifizierten Fehler und Probleme. Diese Dokumentation unterstützt die Fehlerbehebung und dient als Referenz für
zukünftige Entwicklungsphasen.
Der Integrationstest ist Testen mit der Zielverfolgung, die Fehlerzustände in den
Schnittstellen und im Zusammenspiel zwischen integrierten Komponenten aufzudecken [= zweite Teststufe des V-Modells nach ISTQB (International Software Testing Qualifications
Board)].
|
Die im gemeinsamen Kontext zu testenden Komponenten sollten jeweils ihren separat durchzuführenden Komponententest erfolgreich bestanden haben und für sich isoliert fehlerfrei funktionsfähig sein.
Wesentliche Testaufgaben
|
» Prüfung der integrierten Schnittstellen mit richtigen und falschen Eingabedaten
|
» Relevante fachliche Kernfunktionalitäten prüfen
|
» Sicherstellen der Voraussetzungen für den Fachbereichstest
|
Die Ergebnisse des Integrationstests sind zu dokumentieren.
Einem System Test liegt ein aus mehreren Komponenten zusammengesetztes und vollständiges System zu Grunde. Ziel des System Tests ist es, sicher zu stellen, dass das integrierte System die
spezifizierten Anforderungen erfüllt.
Der Systemtest erfolgt in der Regel nach den Integrationstests, mit denen das Zusammenspiel der Komponenten untereinander, verifiziert wurde.
Der Systemtest ist das Testen eines integrierten Systems, um sicherzustellen, dass die
spezifizierten Anforderungen erfüllt werden [= dritte Teststufe des V-Modells nach ISTQB (International Software Testing Qualifications Board)].
|
-
Fokus auf Schnittstellen
Hauptaugenmerk liegt auf den Interaktionen und der Datenübertragung zwischen den verschiedenen Systemteilen.
-
Black-Box- und White-Box-Ansätze
Es werden sowohl funktionsbasierte als auch strukturbasierte Techniken eingesetzt.
-
Schrittweiser Prozess
Komponenten werden häufig in einer logischen Reihenfolge hinzugefügt und getestet, oft von den unteren Ebenen der Softwarearchitektur (Bottom-up) oder von den höchsten Ebenen hinunter
(Top-down).
-
Automatisierung und manuelle Tests
Integrationstests können automatisiert werden, insbesondere für Regressionstests, aber sie erfordern auch manuelle Überprüfungen.
-
Einsatz von Stubs und Treibern
Um noch nicht entwickelte oder getestete Module zu simulieren, werden häufig Stubs (für untergeordnete Module) und Treiber (für übergeordnete Module) eingesetzt.
Beim (technischen) Integrationstest werden die Software-Komponenten in der Testumgebung mit allen beteiligten Subsystemen auf Funktionalität getestet. Ziel dieser Tests ist es, Fehler in
Schnittstellen und im Zusammenspiel zwischen zu integrierenden Komponenten zu finden.
Treten Fehler oder Probleme auf, müssen diese analysiert und behoben werden, bevor die folgenden Fachbereichstests starten können. Neben den funktionalen und integrativen Aspekten werden eventuell
zeitgleich auch zusätzlich Sondertestarten (z.B. Zeit- und Lastaspekte bei der Anbindung an Fremdsysteme und Datenbank-Systeme) betrachtet.
Für all diese integrativen Aspekte findet der Test in einer Infrastruktur statt, die der Produktionsumgebung maximal ähnlich ist (Kompromisse bezüglich Mengengerüst, Leistung, externe Systeme, etc.
sind möglich).
Nur dann kann voraussichtlich das Risiko von Integrationsproblemen in der Fachbereichstestumgebung und der tatsächlichen Produktionsumgebung minimiert werden.
Beim technischen Integrationstest wird die Testumgebung mit der Bottom-Up- Methode aufgebaut. Anschließend kann daraus folgend die Reihenfolge der Test abgeleitet werden. Die Komponenten werden - dem
logischen Aufbau entsprechend - stückweise „von unten“ aufgebaut und getestet. In den nächsten Schritten werden die Subsysteme als getestete Komponenten betrachtet und es folgt ein Integrationstest –
sofern vorhanden - in der nächst höheren Ebene.
-
Interaktion zwischen Modulen prüfen
Überprüfung, ob die integrierten Komponenten wie erwartet zusammenarbeiten.
-
Schnittstellenfehler finden
Identifizierung und Behebung von Fehlern an den Berührungspunkten zwischen einzelnen Modulen.
-
Datenfluss testen
Sicherstellen, dass Daten korrekt zwischen den Modulen übergeben und verarbeitet werden.
-
Funktionsübergreifende Prozesse validieren
Testen von Funktionalitäten, die mehrere Module umspannen, um zu gewährleisten, dass die Prozessketten ohne Unterbrechung oder Fehler ablaufen.
-
Integration in das Gesamtsystem
Sicherstellung, dass die hinzugefügten Module sich nahtlos in die bestehende Systemumgebung einfügen.
Das Ziel des technischen Integrationstest
ist:
|
»
|
Integration der notwendigen Komponenten und Subsysteme zu einem lauf- und funktionsfähigem Gesamtsystem
|
»
|
Suchen und Finden von Fehlern, die vorher nicht gefunden werden konnten
|
»
|
Überprüfung der funktionalen Korrektheit der Kernprozesse (wesentliche Anforderungen)
|
»
|
Überprüfung von relevanten fachlichen Szenarien (Bedienbarkeit, Zuverlässigkeit)
|
»
|
Übergabe einer funktionsfähigen freigegebenen Software-Version in den Fachbereichstest
|
Im Bedarfsfall können alternativ auch Top-Down oder andere Methoden zum Einsatz kommen.
Die Testobjekte für den technischen Integrationstest bilden sich aus den wichtigen Teilkomponenten, die für die Bereitstellung der fachlichen Funktionalität integriert werden sollen.
Die einzelnen Teilkomponenten sollten hierbei als Blackbox behandelt werden, d.h. es werden nur die Aspekte der Interaktion und Integration zwischen diesen betrachtet. Die Korrektheit der genutzten
Schnittstellen wird hingegen im Schnittstellentest betrachtet.
Das Risiko kann generell methodisch, aber auch über Erfahrungswerte ermittelt werden. Das Gesamtrisiko setzt sich aus der Risikoklasse (fachlich) und Komplexität (technisch) zusammen.
Die Risikoanalyse identifizierte Risiken nach ihrer Auftrittswahrscheinlichkeit und
bewertet deren potenziellen Schadensausmaß.
|
Neben den Testobjekten aus dem Schnittstellentest sind hier wiederum auch die kritischen Objekte mit ihren Schnittstellen zu berücksichtigen. Es sind die Komplexität (z.B. Anzahl der Beziehungen der
Schnittstelle zu anderen Objekten) und die Kritikalität der zu integrierenden Schnittstellen zu bewerten. Es ist empfehlenswert zumindest die Testobjekte aus dem Funktionskettentest mit einer hohen
Kritikalität zu berücksichtigen.
Der technische Integrationstest soll den Funktionstest nur vorbereiten und nicht obsolet machen. Deshalb darf die Testmethodik deutlich einfacher ausgelegt werden, muss aber dennoch die
Funktionsfähigkeit sicherstellen.
Folgende Testmethoden lassen sich für den Integrationstest
sinnvoll verwenden:
|
» Ursache-Wirkungs-Analyse
|
» Zustandsübergangsanalyse
|
» Geschäftsprozesstest
|
» Äquivalenzklassenanalyse
|
» Grenzwertanalyse
|
» Schwachstellenorientiertes Testen
|
» Intuitives Testen (aufgrund von Erfahrungen, Error-Guessing)
|
Die Testfallermittlung basiert insbesondere auf Designdokumenten wie z.B. DV Konzepte, Kontext-Diagramme sowie Analysen der Kontroll- und Datenflüsse zwischen den Systemen.
Da der technische Integrationstest einen Fachbereichstest ermöglichen soll, sollten die Testobjekte und ihre Testkriterien mit dem Fachbereich abgestimmt und mit Blick auf die Testeingangskriterien
des Funktionstests definiert sein.
Es stehen hier also einerseits die integrativen Schnittstellen und deren Subsysteme und andererseits die fachlichen Funktionen im Blickpunkt.
Bei der Testdatendefinition ist nach Möglichkeit auf vorhandene Testdaten aus den IT- oder Fachbereich-Tests zurück zu greifen. Für zusätzliche Tests sind Standardwerte, Grenzwerte und Critical-Dates
in der Testmethodik zu berücksichtigen.
Beim Vorgehen ist es in der Regel sinnvoll zuerst logische Testdaten zu definieren, die sich aus den Testfällen ergeben. Diese logischen Testdaten werden dann mit passenden Daten konkretisiert, die
im gesamten integrierten System vorhanden und konsistent sein müssen.
Eine Testausführung wird in der Anfangsphase voraussichtlich zuerst manuell stattfinden, es sollte hier aber eine Automatisierung angestrebt werden, welche auch die Bereitstellung von Testdaten
umfasst.
Bevor der technische Integrationstest startet, müssen die zu integrierenden Testobjekte erfolgreich den Schnittstellentest durchlaufen haben. Ansonsten gelten die gleichen Kriterien wie für den
Schnittstellentest. Entsprechende Testnachweise müssen erstellt und abgelegt werden.
Die exakten Kriterien sind projektspezifisch festzulegen. Hierbei steht die Testfähigkeit für den Fachbereich im Fokus der Betrachtung.
Testende Kriterien für den Integrationstest
können sein:
|
» Mindestens mehrfaches Testen
der integrierten Schnittstellen (Positiv und Negativ)
|
» Relevante fachliche
Funktionalitäten erfolgreich getestet (nur Kernfunktionen)
|
» Alle gefundenen
schwerwiegenden und behindernden Fehler sind bereinigt
|
Beim Regressionstest sollten bevorzugt jene Anwendungsprozesse getestet werden, die die wichtigsten und kritischsten Verarbeitungen durchführen. Für eine technischen Integrationstest ist es
empfehlenswert die Ausführung von Regressionstests soweit wie möglich zu automatisieren.
Die Auswahl der Regressionstests ist von Release zu Release kritisch zu hinterfragen und bei Notwendigkeit anzupassen.