Test und Testdokumentation ALLG. METHODEN DES SOFTWAREENGINEERING
Agenda Maßnahmen zur Qualitätssicherung und Steigerung Tests, Testkategorien und Fehlerarten Teststufen und Testplanung Testdokumentation Testautomation und Continuous Integration 2
Maßnahmen zur Qualitätssicherung Konsequente Methodenanwendung in allen Phasen Einsatz adäquater Entwicklungswerkzeuge Konsequente Fortschreibung der Entwicklungsdokumentation Einsatz von Vorgehensmodellen Institutionalisierung der Qualitätssicherung Kontinuierliche Weiterbildung der Produktentwickler Statische Programmanalyse Syntax, Datentypen, -fluss) Dynamische Programmanalyse (Blackbox, Whitebox) Systematische Auswahl geeigneter Testfälle Konsequente Protokollierung der Ergebnisse 3
Softwaretests als analytische Maßnahme der QS Unter Testen versteht man den Prozess des Planens, der Vorbereitung und der Messung, mit dem Ziel, die Eigenschaften eines IT-Systems festzustellen und den Unterschied zwischen dem tatsächlichen und dem erforderlichen Zustand aufzuzeigen Pol, M., Koomen, T., Spillner, A. 4
Softwaretests als analytische Maßnahme der QS mit den Zielen Verifikation der geforderten Funktionalitäten und Sicherung der angeforderten Qualität Schätzung, Vorhersage und Reduktion von Fehlerfolgenkosten im Software-Betrieb. Merke: Softwaretest kann keine Aussage darüber machen, dass es keine Fehler in dem Software-Produkt mehr vorhanden sind! Erkennung von Fehlern vor der Produktionssetzung und nachweisliche Dokumentation der Anwesenheit von Fehlern als Arbeitsgrundlage für die weitere (Projekt)-Entwicklung Möglichst fehlerfreie Inbetriebnahme eines Software-Produkts 5
Fehler sind reproduzierbare Fehleigenschaften eines Software-Produkts Software-Fehler = reproduzierbare Fehleigenschaften eines Software-Systems 6
Mögliche Fehlerursachen Das (Er)-Kennen von möglichen Ursachen erleichtert das Einleiten von effektiven Maßnahmen 7
Grundsätze des Testens nach ISTQB Grundsatz 1: Testen zeigt die Anwesenheit von Fehlerzuständen Grundsatz 2: Vollständiges Testen ist nicht möglich Grundsatz 3: Mit dem Testen frühzeitig beginnen Grundsatz 4: Häufung von Fehlern Grundsatz 5: Wiederholungen haben keine Wirksamkeit Grundsatz 6: Testen ist abhängig vom Umfeld Grundsatz 7: Trugschluss: Keine Fehler bedeutet ein brauchbares System 8
Das Testen ist eine Dienstleistung bestehend aus einzelnen Aktivitäten Testplanung und Modellierung der Testvorgehensweise Testmanagement Testfallerstellung Testfalldurchführung (manuell und/oder automatisiert) Risikoanalyse Unterstützung des Projektmanagements 9
Der Softwaretest als Prozess Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss 10
Der Softwaretest als Prozess Testplanung Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Beginnt mit dem Projekt und legt die Testgrundlagen fest, wie: Teststrategie und Testtaktiken Testziele und Kriterien für Testbeginn, Testende und Testabbruch Vorgehensweise - orientiert sich i.d.r. nach dem eingesetzten Vorgehensmodell in der Entwicklung, verwendete Standarde Testorganisation Rollen und Terminen Testinfrastruktur 11
Der Softwaretest als Prozess Testvorbereitung Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Bereitet die in der Testplanung definierten Punkte vor, wie: Strukturierung und Paketierung von Testfällen Erstellung einer Abhängigkeitsmatrix bzw. netzes Vorbereitung der Testinfrastruktur Vorbereitung der Dokumentationsinfrastruktur Einweisung des Personal Quellen für die adäquaten Testdaten 12
Der Softwaretest als Prozess Testspezifikation Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Spezifiziert pro Testfall die Testfallmodalitäten: Beschreibung des Testfalls (s.a. Beispiel aus dem V-Modell TX) Spezifikation der Testprozedur Festlegen bzw. Generierung von Eingabedaten Festlegen des Soll-Ergebnisse, Schwellenwerte, etc. 13
Der Softwaretest als Prozess Testdurchführung Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Ausführung der in der Testspezifikation beschriebenen Punkte, wie: Schritt-für-Schritt-Vorgehen beim manuellen Vorgehen Starten der Prüfsequenz beim automatisierten Vorgehen Bereitstellen der Testdaten Beobachtung des Systems implizite Test wie Performance, Bedienbarkeit, Adäquatheit etc. 14
Der Softwaretest als Prozess Testauswertung Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Abschließende Aktivität jedes Tests: Protokollierung der Testergebnisse, Zwischenergebnisse Entscheidung über den Testerfolg Dokumentation der Testergebnisse in der Testübersicht, Testmatrix Archivierung der für die Reproduktion notwendigen Daten und Informationen -> evtl. Aktualisierung der Testspezifikation 15
Der Softwaretest als Prozess Testabschluss Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Abschließende Aktivität jedes Testvorhabens auf jeder Teststufe Evaluieren aller Testergebnisse einer Stufe Aufbereitung eines globalen Stands der Dinge Entscheidung über die weitere Vorgehensweise 16
Dokumente im Testprozess Testplanung Auswertung Auswertung Vorbereitung Spezifikation Spezifikation Durchführung Durchführung Abschluss Testgegenstände Testobjekt übertragungsbericht Testproto koll Testprotokoll koll Testplan Testdesignspezifikation Testablauf Testablauf spezifikationen spezifika- Testablauf spezifikationetion Testergebnisbericht Testfallspezifikati Testfall- Testfallspezifikatspezifikati onen onen on Testvorfall Testvorfall bericht bericht 17
Dokumentationsobjekte nach IEEE 829 Übersicht Testplan 1 x Beschreibung des Umfangs, Vorgehensweise, Testplan und Testgegenstände Testdesignspezifikation 1 x Detaillierte Spezifikation der definierten Testvorgehensweise Testfallspezifikationen n x Beschreibung der Umgebungsbedingungen, Eingaben und Ausgaben eines jeden Testfalls Testablaufspezifikationen n x Detaillierte Beschreibung aller für den Tests notwendigen Einzelschritte 18
Dokumentationsobjekte nach IEEE 829 Übersicht Testobjektübertragungsbericht 1 x Protokoll der Zuweisung von einzelnen Tests und Testpakete an die Tester Testprotokolle n x Chronologische Dokumentation aller Testvorgänge bei der Testdurchführung Testvorfallberichte 1 x Liste aller Ereignisse, die eine weitere Untersuchung erforderlich machen Testergebnisbericht 1 x Bewertungsliste aller Tests 19
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Testplans 20
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Testdesing-Dokuments 21
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Testfalls u.a. siehe das Beispiel aus dem Kapitel 2 22
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Testberichts 23
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Testprotokolls 24
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Abschlussberichts 25
Dokumentationsobjekte nach IEEE 829 Beispielweise Aufbau eines Abschlussberichts 26
Teststufen (hier sehr verfeinert) Performance- und Lasttests in produktionsäquivalenter Umgebung Betreibbarkeits Test Test der Gesamtapplikation (alle funktionalen und nicht-funktionalen Anforderungen) System Test Wiederholte Durchführung von Funktionstests Regressions Test Funktions Test Integrations Test Test der Integration einzelner Schnittstellen und Komponenten Strukturierte Tests der angeforderten Funktionalität Code & Unit Test Entwicklungsseitiger Test einzelner Funktionen und Modulen 27
Teststufen Code/Unit Test oder Komponententest Entwicklertest (WhiteBox-Test) auf Komponentenebene mit dem Ziel der Validierung des Entwicklungstandes mit einzelnen Funktionen-, Schnittstellen- und Modulen-Spezifikationen Verifikation der Korrektheit von Funktionen-, Schnittstellen- und Modulen Vorsicht: Der Entwickler testet die reine funktionale, technische Anforderung Der Entwickler testet meistens Positivtest-orientiert Der Entwickler testet meistens mit einem Eingeschränkten Datensatz-Spektrum (sei denn die Ein- und Übergabeparameter wurden in Testvorgaben definiert) 28
Teststufen Code/Unit Test oder Komponententest Ausführbares Codefragment, dass das sichtbare Verhalten einer Komponente (hier einer Klassenfunktion) verifiziert Unmittelbare Rückmeldung an den Programmierer über die Korrektheit der entwickelten Komponenten (Wiedergabe des geforderten Verhaltens) 29 Vorführung eines automatisierten Unit-Tests ->
Teststufen Funktionstest Entwicklertest (BlackBox-Test) auf der Komponentenebene, mit dem Ziel das geforderte Schnittstellenverhalten zu verifizieren Ein BlackBox-Test übergibt (konstante oder variable) Inputdaten an die Komponente, Funktion, Modul, API und verifiziert die produzierten Outputdaten Es werden neben dem Sollverhalten auch die Negativtests durchgeführt. 30
Teststufen Integrationstest Integrationstest ist eine aufeinander abgestimmte Reihe von Funktionstest, mit dem Ziel die verschiedenen zum Teil voneinander abhängigen Komponenten eines Softwaresystem im Zusammenspiel miteinander zu testen. Bei der Integration von mehrerer Module, Komponenten oder Applikationen wird geprüft: Das Workflow-Verhalten einer Modulkette Überprüfung von einzelnen Komponenten-Schnittstellen Konsolidierung oder Spezialisierung von Datenstrukturen und Komponenten Verträglichkeit und Nebenläufigkeit von Komponenten in einem System 31
Teststufen Regressionstest Automatisierte Durchführung von ausgewählten Testfällen aus dem Funktionstestfallset Test des System mit dynamischen, großen Wertebereichen Konzentration auf Performance und Stabilität des Systems und der einzelnen Systemkomponenten Wird mit jeder Minor- und Major-Version des Systems durchgeführt 32
Teststufen Acceptansetest Teil des Systemtests, welcher sich auf die Anwenderakzeptanz orientiert Testen der wichtigsten Funktionsbereiche mit dem Fachanwender bzw. Anwendergruppe (zb. Einkauf, Vertrieb, FiBu, ) Funktionale und v.a. nicht-funktionale Anforderungen im Fokus Kann als Grundlage für die Entscheidung für einen Systemtest genutzt werden 33
Teststufen Systemtest Ausführung der (globalen)tests in produktionsäquivalenter Umgebung Anbindung aller in der Produktionsumgebung vorhandenen Applikationen inkl. der flankierenden Applikationen/Teilsysteme Testen von durchgängigen Geschäftsprozessen 34
Teststufen Betreibbarkeitstest Test aller während der Inbetriebnahme vorkommenden Aktivitäten Ausführung von Laufzeit-, Performance und Belastungstests auf den produktionsnahen Maschinen Testen der Koexistenz mit weiteren Produkten (zb. Portreservierung, Speicherauslastung, Blockierung des Dateisystems) 35
36
Testautomation Übersicht Automatisierte Testdurchführung anhand zuvor erstellten maschineninterpretierbaren Abfolge von Testanweisungen Ableitung von Testaktivitäten aus Systemanforderungen Ermöglicht breite Abdeckung von funktionalen Anforderungen Vorhandene Testfälle können in jeder neuen Version wiederholt und werden 37
Testautomation Vorteile Wiederholbarkeit von einzelnen Tests und ganzen Testsequenzen Wiederverwendbarkeit von Testszenarien Mehr und umfangreichere Testläufe inkl. Testdokumentation Besserer Einsatz von Ressourcen Simulation von extremen und möglichen Gegebenheiten (Last- und Performancetests, Peak-Zeiten-Tests) Reduktion der Testzeiten 38
Testautomation Nachteile Erhöhter (initialer) Aufwand bei der Testkonzeption, weil die fachlichen Testszenarien in ein bestimmtes maschinenlesbares Format überführt werden müssen Erhöhter Pflegeaufwand durch vielseitige Abhängigkeit zwischen den einzelnen Testfällen Längerfristige Bindung von qualifizierten Testressourcen, evtl. zusätzliche Lizenzkosten Wenige bis keine systemübergreifende Formate und Standards auf dem Markt vorhanden 39
Testautomation Grenzen der Testautomation Keine vollständige Abdeckung aller Qualitätskriterien möglich Verstärkte Konzentration auf die funktionalen Anforderungen Nicht-funktionale Anforderungen wie Benutzerfreundlichkeit, Layout, Adäquatheit können nur bedingt validiert werden Manuelle Tests werden dadurch nicht unnötig 40
Testautomation Grenzen der Testautomation Die Zahlen bestätigen die Vermutungen 41
Testautomation Beispiel JUnit - Taschenrechner - CSVFile 42
Testautomation Continuous Integration -> s. Übung 43
Paar interessante Zahlen 44
Testwerkzeuge 45
46
47
48
Literaturempfehlung German Testing Board: Allg. Informationen verfügbar im Internet unter http://www.german-testing-board.info International Software Testing Qualifications Board : "Certified Tester. Foundation Level Syllabus International Software Testing Qualifications Board: Allg. Informationen verfügbar im Internet unter http://www.istqb.org/downloads Ludewig, J., Lichter, H.: Software Engineering. Grundlagen, Menschen, Prozesse, Techniken Pol, M., Koomen, T., Spillner, A.: Management und Optimierung des Testprozesses Softwaretest-Umfrage 2011: Softwaretest in der Praxis HS Bremen, HS Bremerhaven, FH Köln, ANECON, GTB und STB 49
Übung/Aufgabe Lesen Sie den heise-artikel Continuous Integration in Zeiten agiler Programmierung [http://www.heise.de/developer/artikel/continuous- Integration-in-Zeiten-agiler-Programmierung-1427092.html?view=print] durch und beantworten Sie die folgenden Fragen: Was versteht man unter dem Begriff Continuous Integration (CI)? Welche Ziele werden mit dem CI verfolgt? Welche Vorteile erzielen Sie als Entwickler, Projektleiter, Auftraggeber, Tester beim effizienten Einsatz von CI? 50