Der Integrationstest 

 1. November 2012

Von Entwurf und Architektur zur Komponenten- und Systemintegration

Der Integrationstest wird in der Literatur bisher immer stiefmütterlich behandelt. Dabei kommt ihm einerseits in der Praxis der Softwaretester eine große Bedeutung zu, andererseits ist aber dieses Verbindungsstück zwischen Komponententest und Systemtest für viele Entwickler und Tester unbekanntes Terrain.

In diesem Buch lernen Sie den Integrationstest und seine unterschiedlichen Zwischenstufen von Memberintegration, Klassen- bzw. Modulintegration über die Komponenten- und Teilsystemintegration bis hin zur Systemintegration fundiert kennen. Für jede dieser Integrationsstufen stellt das Buch praxiserprobte Testverfahren und Testwerkzeuge vor und erläutert sie an realen Praxisbeispielen. Jeweils ein Abschnitt des Buches ist den unterschiedlichen, in der Praxis verbreiteten Systemarchitekturen gewidmet, wie z.B. strikte und nicht-strikte Schichtenarchitekturen, Client/Server sowie SOA. Deren Vor- und Nachteile hinsichtlich des Integrationstests werden erläutert und die zugrundeliegenden Plattformen bzw. Technologien werden charakterisiert.

Autoren: Mario Winter, Mohsen Ekssir-Monfared, Harry M. Sneed, Richard Seidl, Lars Borner

Verlag: Carl Hanser Verlag

ISBN: 978-3-446-42564-4

Edition: 1. Auflage

Inhaltsverzeichnis

1 Einleitung

1.1 Worum geht es?
1.2 Integrationstest in der heutigen Praxis
1.3 Eine kleine Geschichte
1.4 Integrationstest und Software-Qualität
1.5 Für wen ist dieses Buch geschrieben?

2 Einführendes Fallbeispiel

2.1 Das alte Auftragsbearbeitungssystem
2.2 Das neue Auftragsbearbeitungssystem
2.3 Integrationstest der Auftragsbearbeitung
2.3.1 Klassenintegrationstest
2.3.2 Komponentenintegrationstest
2.3.3 Systemintegrationstest
2.4 Resümee

3 Grundlegendes zum Softwaretest

3.1 Was ist Testen?
3.2 Black-Box-Verfahren
3.2.1 Äquivalenzklassentest
3.2.2 Grenzwertanalyse
3.3 White-Box-Verfahren
3.3.1 Kontrollflussbasierter Test
3.3.2 Datenflussbasierter Test
3.3.3 Bedingungstest
3.4 Wie gut ist der Test?
3.4.1 Messung der Testüberdeckung
3.4.2 Mutationstests
3.5 Teststufen
3.5.1 Modul- bzw. Komponententest
3.5.2 Integrationstest
3.5.3 Systemtest
3.5.4 Abnahmetest
3.6 Testausführung und Testumgebung
3.7 Testprozess

4 Grundlagen des Integrationstests

4.1 Was ist Integration?
4.2 Bausteine der Integration
4.3 Abhängigkeiten
4.3.1 Elementare Bausteine
4.3.2 Zusammengesetzte Bausteine
4.3.3 Syntaktische und semantische Abhängigkeiten
4.4 Ziele, Fokus und pragmatische Definition des Integrationstests
4.5 Stufen der Integration
4.6 Vorgehen im Integrationstest

5 Modellierung im Integrationstest

5.1 Strukturmodellierung
5.1.1 Objekte
5.1.2 Klassen
5.1.3 Pakete und Komponenten
5.1.4 Physikalische Struktur und Deployment
5.2 Verhaltensmodellierung
5.2.1 Anwendungsfälle
5.2.2 Aktivitäten
5.2.3 Interaktionen
5.2.4 Zustände und reaktives Verhalten
5.3 Graphentheorie
5.3.1 Grundlegende Begriffe
5.3.2 Abhängigkeitsgraphen
5.3.3 Pfade und Graph-Matrizen
5.3.4 Gerichtete azyklische Graphen
5.3.5 Kontrollfluss- und Datenflussgraphen

6 Software-Abhängigkeiten

6.1 Syntaktische Abhängigkeiten
6.1.1 Sichtbarkeiten und Schnittstellen
6.1.2 Bausteine als Typen
6.2 Interaktionsabhängigkeiten
6.2.1 Zugriffe auf Variablen
6.2.2 Operationsaufrufe
6.2.3 Nutzung von Operationsparametern
6.2.4 Verträge zwischen Bausteinen
6.2.5 Entfernte Prozeduraufrufe
6.2.6 Nachrichtenbasierte Kommunikation
6.2.7 Ereignisbasierte Kommunikation
6.3 Vererbungsabhängigkeiten
6.3.1 Generalisierung, Substituierbarkeit und Polymorphismus
6.3.2 Generalisierung und Schnittstellen
6.3.3 Horizontale und vertikale Abhängigkeiten
6.4 Indirekte Abhängigkeiten
6.4.1 Datenorientierte Abhängigkeiten
6.4.2 Dienstorientierte Abhängigkeiten
6.4.3 Natürlichsprachliche Kommunikation und REST-Abhängigkeiten

7 Integrationsfehlerarten

7.1 Fehler und Abhängigkeiten
7.1.1 Interaktionsfehler
7.1.2 Vererbungsfehler
7.1.3 Fehler bei indirekten Abhängigkeiten
7.2 Übersicht der Integrationsfehler
7.3 Fehler in der Integration innerhalb einer Anwendung
7.3.1 Member-Integrationsfehler
7.3.2 Modulintegrationsfehler
7.3.3 Klassenintegrationsfehler
7.3.4 Komponenten- und Teilsystemintegrationsfehler
7.4 Fehler in der Integration mehrerer Anwendungen
7.4.1 Anwendungsintegration
7.4.2 Fehler in der Unternehmensintegration
7.5 Fehlerursachen
7.5.1 Unterschiedliche Schnittstellenbeschreibungen
7.5.2 Unterschiedliche Schnittstellenversionen
7.5.3 Unterschiedliche Wertebereiche
7.5.4 Unterschiedliche Dateninterpretation
7.5.5 Fehlende Synchronisierung
7.5.6 Zeitliche Abhängigkeiten
7.6 Datenbankfehler
7.7 Integrationsfehlerverteilung

8 Fallstudien zum Integrationstest

8.1 Wertpapierabwicklungssystem
8.1.1 Aufteilung des Systems in Teilsysteme
8.1.2 Integration der Teilsysteme
8.1.3 Test der Batch-Prozesse
8.1.4 End-to-End-Test
8.1.5 Gesamtsystemtest
8.1.6 Zusammenfassung
8.2 Gebühreneinzugssystem
8.2.1 Risikobasierter Testansatz
8.2.2 Problem der Ergebnisprüfung
8.2.3 Selektiver Regressionstest
8.2.4 Integrationstest versus Teilsystemtest
8.2.5 Rückschlüsse
8.3 Verteilte Web-Anwendungen
8.3.1 Test der Teilsysteminteraktionen
8.3.2 Zweistufentest – Schnittstellen und Interaktionen
8.3.3 Erkenntnisse aus dem Integrationstest
8.4 Gekapselte Web Services
8.4.1 Test der Client-Prozesse
8.4.2 Test der Web Services
8.4.3 Test der Client-Prozesse mit den Web Services
8.4.4 Abgrenzung zwischen Integrations- und Systemtest
8.5 Integrationstest von Software-Messwerkzeugen
8.6 Zusammenfassung der Fallstudien

9 Integrationsstufen

9.1 Member-Integrationstest
9.1.1 Zielsetzung
9.1.2 Testbasis und Testobjekte
9.1.3 Durchführung
9.1.4 Überdeckungsmaße und Endekriterien
9.1.5 Ergebnis
9.1.6 Hinweise und Empfehlungen
9.2 Klassen- bzw. Modulintegrationstest
9.2.1 Zielsetzung
9.2.2 Testbasis und Testobjekte
9.2.3 Durchführung
9.2.4 Überdeckungsmaße und Endekriterien
9.2.5 Ergebnis
9.2.6 Hinweise und Empfehlungen
9.3 Komponenten- bzw. Teilsystem integrationstest
9.3.1 Zielsetzung
9.3.2 Testbasis und Testobjekte
9.3.3 Durchführung
9.3.4 Überdeckungsmaße und Endekriterien
9.3.5 Ergebnis
9.3.6 Hinweise und Empfehlungen
9.4 Systemintegrationstest
9.4.1 Zielsetzung
9.4.2 Testbasis und Testobjekte
9.4.3 Durchführung
9.4.4 Überdeckungsmaße und Endekriterien
9.4.5 Ergebnis
9.4.6 Hinweise und Empfehlungen
9.5 Erweitertes V-Modell für Anwendungslandschaften: Das V-Modell++
9.5.1 Anmerkungen zum Systemintegrationstest
9.5.2 Multisystemtest
9.5.3 Multisystemabnahmetest

10 Integrationsstrategien

10.1 Integration der Bausteine einer Anwendung
10.1.1 Grundlagen
10.1.2 Schrittweise Integration mit Stubs und Treibern
10.1.3 Abhängigkeitszyklen
10.2 Strukturabhängige Strategien
10.2.1 Strategien für hierarchische Bausteinstrukturen
10.2.2 Top-Down-Strategie
10.2.3 Bottom-Up-Strategie
10.2.4 Sandwich-Strategie
10.3 Strukturunabhängige Strategien
10.3.1 Ad-hoc-Strategie
10.3.2 Strategie der kritischen Bausteine
10.3.3 Strategie der kritischen Abhängigkeiten
10.3.4 Anwendungsfallbasierte Strategie
10.3.5 Thread-basierte Integration
10.4 Individuelle Strategien
10.4.1 Strategie der Clusterbildung
10.4.2 Heuristische Ansätze
10.4.3 Graphenbasierte Ansätze mit Zyklenauflösung
10.5 Objektorientierte Strategien
10.5.1 Vererbungsbezogene Ansätze
10.5.2 Vererbungs- und interaktionsbezogene Ansätze
10.6 Einflussfaktoren für die Integrationsstrategie
10.6.1 Faktoren des Projektumfelds
10.6.2 Faktoren des Testumfeldes
10.6.3 Faktoren der Architektur und des Entwurfs
10.6.4 Allgemeine Faktoren
10.6.5 Auswahl der Strategie
10.7 Integration mehrerer Anwendungen
10.7.1 Interaktionsbasierte Systemintegration
10.7.2 Frontend-Integration
10.7.3 Backend-Integration
10.7.4 Dienstbasierte Integration

11 Integrationstestprozess

11.1 Der fundamentale Testprozess
11.1.1 Rollen
11.1.2 Testplanung und Steuerung
11.1.3 Testanalyse und Testentwurf
11.1.4 Testrealisierung und Testdurchführung
11.1.5 Bewertung von Ausgangskriterien und Bericht
11.1.6 Abschluss der Testaktivitäten
11.2 Rollen im Integrationstestprozess
11.2.1 Integrationstestmanager
11.2.2 Integrationstestdesigner
11.2.3 Integrationstester
11.3 Aktivitäten im Integrationstestprozess
11.3.1 Testplanung und Steuerung
11.3.2 Testanalyse und Testentwurf
11.3.3 Testrealisierung und Testdurchführung
11.3.4 Auswertung, Bericht und Abschluss
11.4 Integrationsteststufenspezifische Besonderheiten
11.4.1 Member-Integrationstest
11.4.2 Klassen- bzw. Modulintegrationstest
11.4.3 Komponentenintegrationstest
11.5 Einbindung in den Entwicklungsprozess
11.5.1 Wasserfallmodell
11.5.2 V-Modell
11.5.3 Inkrementelle/Iterative Entwicklung
11.5.4 Agile Vorgehensweisen
11.6 Besonderheiten im System integrationstest
11.6.1 Planung und Steuerung
11.6.2 Analyse und Entwurf
11.6.3 Realisierung und Durchführung
11.6.4 Durchführung und Protokollierung
11.6.5 Bewertung und Bericht
11.6.6 Abschluss
11.6.7 Systemabhängigkeiten und Einführung von Release-Management

12 Statische Analysen

12.1 Schnittstellenarten
12.1.1 Unstrukturierte Datenübergabe
12.1.2 Gemeinsame globale Datenbereiche
12.1.3 Operationsaufrufe und Parameter
12.1.4 Dateien
12.1.5 Datenbanken
12.1.6 Nachrichten in verteilten Systemen
12.1.7 Schnittstellendefinitionssprachen
12.1.8 Extended Markup Language (XML)
12.1.9 Web Service Definition Language (WSDL)
12.1.10 Structured Query Language (SQL)
12.2 Ansätze zur statischen Analyse der Schnittstellen
12.2.1 Reviews der Schnittstellen
12.2.2 Inspektionen der Schnittstellen
12.2.3 Automatisierte Schnittstellenprüfung
12.2.4 Automatisierter Abgleich der Schnittstellen
12.3 Voraussetzungen für eine statische Schnittstellenanalyse
12.3.1 Prüfbarkeit der Schnittstellendefinitionen
12.3.2 Lesbarkeit der Schnittstellendefinitionen
12.3.3 Verifizierbarkeit der Schnittstellen
12.4 Werkzeuge für die statische Analyse von Schnittstellen
12.4.1 Schnittstellenprüfer
12.4.2 Schnittstellenvermesser
12.4.3 Schnittstellengenerator
12.4.4 Schnittstellenvalidator
12.5 Erfahrung mit der statischen Analyse von Schnittstellen
12.5.1 IDL-Analyse
12.5.2 XML-Analyse
12.5.3 WSDL-Analyse

13 Funktions- und wertebezogene Testentwurfsverfahren

13.1 Anwendungsfallbasiertes Testen
13.1.1 Testziele
13.1.2 Voraussetzungen
13.1.3 Vorgehen
13.1.4 Aufdeckbare Fehler
13.1.5 Integrationsteststufen
13.1.6 Bekannte Einschränkungen und Probleme
13.2 End-to-End-Testen
13.2.1 Testziele
13.2.2 Voraussetzungen
13.2.3 Vorgehen
13.2.4 Aufdeckbare Fehler
13.2.5 Integrationsteststufen
13.2.6 Bekannte Einschränkungen und Probleme
13.3 Parameterbasiertes Testen
13.3.1 Testziele
13.3.2 Voraussetzungen
13.3.3 Vorgehen
13.3.4 Aufdeckbare Fehler
13.3.5 Integrationsteststufen
13.3.6 Bekannte Einschränkungen und Probleme
13.4 Zustandsbasiertes Testen
13.4.1 Testziele
13.4.2 Voraussetzungen
13.4.3 Vorgehen
13.4.4 Aufdeckbare Fehler und Überdeckungskriterien
13.4.5 Anwendbare Teststufen
13.4.6 Einschränkungen und Probleme
13.5 Assoziationsbasiertes Testen
13.5.1 Testziele
13.5.2 Voraussetzungen
13.5.3 Vorgehen
13.5.4 Aufdeckbare Fehler und Überdeckungskriterien
13.5.5 Anwendbare Teststufen
13.5.6 Einschränkungen und Probleme
13.6 Generalisierungsbasiertes und paarweises Testen
13.6.1 Testziele
13.6.2 Voraussetzungen
13.6.3 Vorgehen
13.6.4 Aufdeckbare Fehler und Überdeckungskriterien
13.6.5 Anwendbare Teststufen
13.6.6 Einschränkungen und Probleme

14 Ablaufbezogene Testentwurfsverfahren

14.1 Überblick
14.2 Kontrollflussbasiertes Testen
14.2.1 Testziele
14.2.2 Voraussetzungen
14.2.3 Vorgehen
14.2.4 Aufdeckbare Fehler und Überdeckungskriterien
14.2.5 Anwendbare Teststufen
14.2.6 Einschränkungen und Probleme
14.3 Datenflussbasiertes Testen
14.3.1 Testziele
14.3.2 Voraussetzungen
14.3.3 Vorgehen
14.3.4 Aufdeckbare Fehler und Überdeckungskriterien
14.3.5 Anwendbare Teststufen
14.3.6 Einschränkungen und Probleme
14.4 Interaktionsbasiertes Testen
14.4.1 Testziele
14.4.2 Voraussetzungen
14.4.3 Vorgehen
14.4.4 Aufdeckbare Fehler und Überdeckungskriterien
14.4.5 Anwendbare Teststufen

15 Fehlerbezogene, erfahrungsbasierte und weitere Testentwurfsverfahren

15.1 Fehlerbezogenes Testen
15.1.1 Testziele
15.1.2 Voraussetzungen
15.1.3 Vorgehen
15.1.4 Aufdeckbare Fehler
15.1.5 Integrationsteststufen
15.1.6 Einschränkungen und Probleme
15.2 Exploratives Testen
15.2.1 Testziele
15.2.2 Voraussetzungen
15.2.3 Vorgehen
15.2.4 Aufdeckbare Fehler
15.2.5 Integrationsteststufen
15.2.6 Einschränkungen und Probleme
15.3 Weitere Testentwurfsverfahren

16 Nicht-funktionale Integrationstests

16.1 Test gegen die Qualitätsmerkmale
16.2 Innere und äußere Qualitätsmerkmale
16.3 Sicherheitstest
16.3.1 Funktionaler Sicherheitstest
16.3.2 Technischer Sicherheitstest
16.3.3 Vorgehensweise
16.4 Zeit- und Verbrauchsverhalten
16.4.1 Last- und Performanztest
16.4.2 Vorgehensweise
16.4.3 Lasterzeugung und Toolauswahl
16.4.4 Ziele des Last- und Performanztests
16.5 Integrationstest verteilter Systeme
16.5.1 Validierungspunkte in verteilten Systemen
16.5.2 Nebenläufigkeits- und Synchronisierungstests

17 Integrationstestumgebung

17.1 Definition der Testumgebung
17.2 Zweck der Testumgebung
17.3 Bedeutung der Testumgebung für den Integrationstest
17.4 Managementprozesse für die Testumgebung
17.5 Planung und Management der Testumgebung
17.6 Aufwandschätzung für die Testumgebung
17.7 Big Picture = Systemstadtplan
17.8 Testinfrastrukturplan
17.9 Beschaffung von Hardware
17.10 Systeminstallations- und -konfigurationsplan
17.11 Simulatoren und Emulatoren
17.12 Stubs und Mock-Objekte
17.13 Testtreiber und Monitore
17.13.1 Beobachtungs- und Steuerungspunkte
17.14 Testwerkzeuge
17.15 Testdaten
17.16 Verantwortlichkeiten
17.17 Release-Management
17.18 Testumgebung für Maintenance und Support
17.19 Abbau der Testumgebung
17.20 Dokumentation

18 Integrationstestautomation und dynamische Analysen

18.1 Überblick
18.2 Automatisierung der Schnittstellenanalyse
18.2.1 Zweck eines Schnittstellenanalysators
18.2.2 Funktionalität eines Schnittstellenanalysators
18.2.3 Voraussetzungen für einen Schnittstellenanalysator
18.2.4 Ergebnisse eines Schnittstellenanalysators
18.3 Automatisierte Ermittlung von Integrationstestfällen
18.3.1 Zweck eines Testfallgenerators
18.3.2 Funktionalität eines Testfallgenerators
18.3.3 Voraussetzungen für die Testfallerstellung
18.3.4 Ergebnisse eines Testfallgenerators
18.4 Automatisierte Generierung von Schnittstellendaten
18.4.1 Zweck eines Schnittstellengenerators
18.4.2 Funktionalität eines Schnittstellengenerators
18.4.3 Voraussetzungen für die Schnittstellengenerierung
18.4.4 Ergebnisse eines Schnittstellengenerators
18.5 Testtreiber für die Steuerung des Integrationstests
18.5.1 Zweck eines Testtreibers
18.5.2 Funktionalität eines Testtreibers
18.5.3 Voraussetzungen für die Integrationstestausführung
18.5.4 Ergebnisse der Integrationstestausführung
18.6 Dynamische Analyse der Schnittstellennutzung
18.6.1 Zweck eines Schnittstellenvalidators
18.6.2 Funktionalität eines Schnittstellenvalidators
18.6.3 Voraussetzungen für die Schnittstellenvalidation
18.6.4 Ergebnisse der Schnittstellenvalidation
18.7 Dynamische Analyse der Integrationstestabläufe
18.7.1 Zweck eines Ablaufverfolgungswerkzeugs
18.7.2 Funktionalität eines Ablaufverfolgungswerkzeugs
18.7.3 Voraussetzungen für die Testablaufverfolgung
18.7.4 Ergebnisse der Testablaufverfolgung
18.8 Werkzeuge für das Integrations testmanagement
18.8.1 Zweck eines Teststeuerungspults
18.8.2 Funktionalität des Teststeuerungspults
18.8.3 Voraussetzungen für das Teststeuerungspult
18.8.4 Ergebnisse eines Teststeuerungspults

19 Ausblick