Richard Seidl Logo

Der Integrationstest - Von Entwurf und Architektur zur Komponenten- und Systemintegration

Der Integrationstest - Von Entwurf und Architektur zur Komponenten- und Systemintegration
November 2012
Carl Hanser Verlag

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

Erhältlich im Buchhandel und bei Amazon

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