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