Der Integrationstest - 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

Erhältlich im Buchhandel und bei Amazon

Inhaltsverzeichnis

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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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

Autor

Datum

ISBN

Auflage