Software Entwicklung 2. Softwaretest



Ähnliche Dokumente
2 Funktionsorientierter Test

6 Produktqualität Systeme: Integrationstest [sehr stark gekürzt]

Whitebox-Tests: Allgemeines

Software-Test: Funktionstest

Technische Universität Berlin SS

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

PRÜFUNG FÜR ELEKTROINGENIEURE. Softwaretechnik I. Musterlösung SS Ohne Gewähr -

1 topologisches Sortieren

Testphase. Das Testen

Test-Strategien. Grundsätzliches Blackbox-Testen Whitebox-Testen Graybox-Testen Ablauf von Tests Zusammenfassung. HS Mannheim

Use Cases. Use Cases

Übungen zu C++ Kapitel 1

Professionelle Seminare im Bereich MS-Office

Testen - Konzepte und Techniken

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Internet Explorer Version 6

Hauptseminar Automotive Software Engineering Testen, Rapid Prototyping und x in the loop

Konzepte der Informatik

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Kurs 1613 Einführung in die imperative Programmierung

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version:

Programmierkurs Java

Softwaretechnik 1 Tutorium

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Lizenzierung von System Center 2012

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

SDD System Design Document

Eine Logikschaltung zur Addition zweier Zahlen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Artikel Schnittstelle über CSV

Hinweise zur Benutzung des Programms zur Berechnung der Abiturendnote

Über den Link auf der Homepage des HVW unter Phönix den Link anklicken oder über den Internetbrowser

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Dialognetze. Ziel : Beschreibung von Methoden und Beschreibungstechniken für den Entwurf und die Dokumentation von Dialogabläufen

Anwenderdokumentation Prüfung nach dem Heilmittelkatalog

1 Vom Problem zum Programm

Bitte geben Sie hier den Benutzer cubusadmin und das gleichnamige Passwort ein.

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

QM: Prüfen -1- KN

SEP 114. Design by Contract

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Leichte-Sprache-Bilder

Windows 10 activation errors & their fixes.

Zentraler Wertungsrichtereinsatz

Kurzanleitung /Kompalitätstest Barcode. Sie haben zwei Möglichkeiten unsere Barcode/Strichcodes für Ihren eigenen stationären Einzelhandel zu nutzen.

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Sicherer einkaufen im Internet. Ihre Registrierung für 3D Secure auf der HVB Website Schritt für Schritt.

Primzahlen und RSA-Verschlüsselung

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

SEPA Lastschriften. Ergänzung zur Dokumentation vom Workshop Software GmbH Siemensstr Kleve / /

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Mean Time Between Failures (MTBF)

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Quadratische Gleichungen

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Falten regelmäßiger Vielecke

Anleitung für Kunden zum Umgang mit verschlüsselten s von der LASA Brandenburg GmbH

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Häufig wiederkehrende Fragen zur mündlichen Ergänzungsprüfung im Einzelnen:

Anforderungen an die HIS

Anlegen eines DLRG Accounts

Dokumentation zum Spielserver der Software Challenge

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

desk.modul : Intercompany

Registrierung im Portal (Personenförderung)

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Anleitung zum Bestellformular für Visitenkarten UZH

Zeichen bei Zahlen entschlüsseln

3. LINEARE GLEICHUNGSSYSTEME

Standard Inhaltsverzeichnis für Testvorschrift

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

PC-Software für Verbundwaage

Installation und Inbetriebnahme von Microsoft Visual C Express

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Was meinen die Leute eigentlich mit: Grexit?

Teilnahme am Apple ios Developer Program

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Adventskalender Gewinnspiel

Programmiersprachen und Übersetzer

GEVITAS Farben-Reaktionstest

Es gilt das gesprochene Wort. Anrede

estos UCServer Multiline TAPI Driver

Java Kurs für Anfänger Einheit 5 Methoden

Handbuch USB Treiber-Installation

Some Software Engineering Principles

Erstellen einer PostScript-Datei unter Windows XP

Nach der Installation der Multi-User-Version von CUBUS können Sie mit dem Administrator- Tool Benutzergruppen und Benutzer einrichten.

Softwareentwicklung Schrittweise Verfeinerung, Programmieren üben: Tic-Tac-Toe in Raten

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Transkript:

Software Entwicklung 2 Softwaretest

Inhalt Testphasen Dynamischer Test Strukturelle, kontrollflussorientierte Verfahren Strukturelle, datenflussorientierte Verfahren Funktionsorientierter Test Literatur 2

Lernziele Die Testphasen kennen und erläutern können Die Eigenschaften des dynamischen Tests erklären können Die strukturellen, kontrollflussorientierten Testtechniken kennen, erläutern und anwenden können Die funktionsorientierten Testtechniken kennen, erläutern und anwenden können 3

Testphasen Voraussetzung für eine Prüfung umfangreicher Softwaresysteme in Phasen ist deren modularer Aufbau. Der Vorteil des Prüfens in unterschiedlichen Phasen ist die Reduktion der jeweiligen Komplexität auf ein überschaubares Niveau Modultest (Überprüfung der Module) Prüfung des korrekten Funktionierens eines Moduls bezogen auf seine Modulspezifikation Integrationstest (Überprüfung des Zusammenwirkens der Module) Schrittweises Zusammenfügen der Module zum Gesamtsystem. Prüfung des korrekten Zusammenwirkens über Schnittstellen System-/Abnahmetest Überprüfung der Funktionalität, Leistung und Qualität einer Software gegen die festgelegten Anforderungen Es können weitere Testphasen hinzutreten (z. B. Hardware-/Software- Integrationstest) und Testphasen aufgeteilt werden (z. B. Integrationstest in Subsystemintegrationstest und Systemintegrationstest) 4 SE 2 Softwaretest

Modultest, Klassentest Test eines einzelnen Moduls (oft eine Klasse) Treiber bzw. Dummies erforderlich Testumgebung, Testbett Akzeptierte Minimalkriterien Funktionstest: Test gegen die in der Spezifikation festgelegte Funktionalität Strukturtest: Test gegen die Codestruktur minimal: Zweigüberdeckungstest 5 SE 2 Softwaretest

Integrationstest Die Prüfverfahren des Integrationstests dienen zur Überprüfung der Schnittstellen und des Interagierens über Schnittstellen (Schnittstelle: Aufruf von Operationen, Funktionen mit und ohne Parameterübergabe, Verwendung von globalen Variablen oder Dateien) Integrationsstrategien Bottom-Up-Integrationstest Top-Down-Integrationstest Outside-In-Integrationstest 6 SE 2 Softwaretest

Integrationstest Bottom-Up-Integrationstest Modul 0 Modul 1 Modul 2 Zeit Modul 3 Modul 4 Modul 5 Treiber für die Dienste in Modul 1 Treiber für die Dienste in Modul 2 Modul 1 Modul 2 Modul 3 Modul 4 Modul 5 Treiber für die Dienste in Modul 3 Treiber für die Dienste in Modul 4 Treiber für die Dienste in Modul 5 Modul 3 Modul 4 Modul 5 7

Integrationstest Bottom-Up-Integrationstest Vorteile Zusammenwirken zwischen zu prüfender Software, Systemsoftware und Hardware wird früh geprüft Da Testdateneingaben über Treiber erfolgen, ist keine komplexe Zurückrechnung der Eingaben erforderlich Bewusste Fehleingaben zur Prüfung von Fehlerbehandlungen sind leicht möglich Nachteile Treiber erforderlich Gezielte Prüfung der Fehlerbehandlung bei fehlerhaften Rückgabe-werten unterlagerter Routinen ist kaum möglich, da die realen Routinen benutzt werden Ein vorzeigbares Produkt entsteht erst ganz zuletzt, da die koordi-nierenden Module erst dann hinzugefügt werden Abnehmender Personalbedarf mit fortschreitendem Test 8 SE 2 Softwaretest

Integrationstest Top-Down-Integrationstest Modul 0 Dummies der Dienste in Modul 1 Dummies der Dienste in Modul 2 Zeit Modul 0 Modul 1 Modul 2 Dummies der Dienste in Modul 3 Dummies der Dienste in Modul 4 Dummies der Dienste in Modul 5 Modul 0 Modul 1 Modul 2 Modul 3 Modul 4 Modul 5 9

Integrationstest Top-Down-Integrationstest Vorteile Wichtige Steuerungsfunktionalität wird zuerst geprüft Bereits zu Beginn entsteht ein Produkt, das die groben Abläufe erkennen lässt Gezielte Prüfung der Fehlerbehandlung bei fehlerhaften Rückgabe-werten unterlagerter Routinen ist möglich, da Rückgabewerte durch dummies eingegeben werden Nachteile Dummies erforderlich Mit zunehmender Integrationstiefe wird die Erzeugung bestimmter Testsituationen in tiefer angeordneten Modulen schwieriger Zusammenwirken zwischen zu prüfender Software, Systemsoftware und Hardware wird spät geprüft Zunehmender Personalbedarf während des Tests 10 SE 2 Softwaretest

Integrationstest Outside-In-Integrationstest Modul 0 Dummies der Dienste in Modul 1 Dummies der Dienste in Modul 2 Modul 0 Zeit Modul 1 Modul 2 Modul 3 Modul 4 Modul 5 Zeit Treiber für die Dienste in Modul 3 Treiber für die Dienste in Modul 4 Treiber für die Dienste in Modul 5 Modul 3 Modul 4 Modul 5 11

Integrationstest Outside-In-Integrationstest Vorteile Wichtige Steuerungsfunktionalität wird zuerst geprüft Bereits zu Beginn entsteht ein Produkt, das die groben Abläufe erkennen lässt Gezielte Prüfung der Fehlerbehandlung bei fehlerhaften Rückgabewerten unterlagerter Routinen ist bei den Schichten, die von oben nach unten integriert werden, möglich, da Rückgabewerte durch dummies eingegeben werden. Diese Testvariante ist bei steuernden Modulen besonders wichtig, da diese umfang-reiche Fehlerbehandlungen durchführen Zusammenwirken zwischen zu prüfender Software, Systemsoftware und Hardware wird früh geprüft Da Testdateneingaben bei jenen Modulen, die von unten nach oben integriert werden, über Treiber erfolgen, ist keine komplexe Zurückrechnung der Eingaben erforderlich Bewusste Fehleingaben zur Prüfung von Fehlerbehandlungen sind im unteren Bereich des Modulsystems leicht möglich Der Personalbedarf ist während des Integrationstests konstanter Nachteil Dummies und Treiber erforderlich 12 SE 2 Softwaretest

System- / Abnahmetest Test des fertigen Systems gegen die in der Anforderungsdefinition festgelegten Funktions-, Leistungs- und Qualitätsanforderungen Testfälle aus der Anforderungsdefinition, echte oder typische Daten mit denen das System im laufenden Betrieb versorgt wird, Erfahrungswerte, kritische Daten Test unter den realen Einsatzbedingungen mit der realen Systemkonfiguration Neben der QS-Abteilung sollen Benutzer des Systems oder andere Spezialisten für das System im Abnahmetest involviert sein 13

Dynamischer Test Eigenschaften und Ziele Eigenschaften des dynamischen Tests Übersetztes, ausführbares Programm wird mit konkreten Eingabewerten versehen und ausgeführt Programm wird in der realen Umgebung getestet Stichprobenverfahren Korrektheit des getesteten Programms kann nicht bewiesen werden Merkmale des Einsatzes dynamischer Testverfahren in der Praxis In einfacher Form weit verbreitet Häufig unsystematisch angewendet Tests oft nicht reproduzierbar Diffuse Aktivität (Managementschwierigkeiten) 14 SE 2 Softwaretest

Dynamischer Test Eigenschaften und Ziele Das Ziel der dynamischen Testverfahren ist die Erzeugung von Testfällen (Stichprobe der möglichen Eingaben), die Repräsentativ Fehlersensitiv Redundanzarm Ökonomisch sind 15 SE 2 Softwaretest

Dynamische Testtechniken: Überblick Strukturelle, kontrollflussorientierte Testtechniken Strukturelle, datenflussorientierte Testtechniken Funktionsorientierte Testtechniken 16

Strukturorientierte Verfahren Arbeitsweise Spezifikation n start n 1 Interpretieren Vollständigkeit n 2 Bild der Spezifikation n 3 n 4 n 5 Tester Ausgaben beurteilen n final 17

Strukturorientierte Verfahren Arbeitsweise: Beurteilung der Adäquanz und der Vollständigkeit des Tests und evtl. Herleitung der Testdaten anhand der Modulstruktur. Beurteilung der Ausgaben anhand der Modulspezifikation Vorteil: Implementationsstruktur wird beachtet (Anweisungen, Zweige, Datenzugriffe, etc.) Nachteil: Nicht realisierte, aber spezifizierte Funktionen können nicht erkannt werden Kontrollflussorientierte Verfahren Datenflussorientierte Verfahren 18 SE 2 Softwaretest

Strukturorientierte, kontrollflussorientierte Testverfahren Anweisungsüberdeckungstest Zweigüberdeckungstest Bedingungsüberdeckungstest Einfacher Minimaler mehrfacher Mehrfacher LCSAJ-basierter Test boundary interior-pfadtest Strukturierter Pfadtest Pfadtest Die kontrollflussorientierten Testverfahren basieren auf der Kontrollstruktur bzw. dem Kontrollfluss. Die Basis bildet der Kontrollflussgraph. 19

Strukturorientierte, kontrollflussorientierte Testverfahren Beispiel: void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl) // Vorbedingung: VokalAnzahl <= Gesamtzahl { char Zchn; cin >> Zchn; while ((Zchn >= 'A')&&(Zchn <= 'Z')&& (Gesamtzahl < INT_MAX)) { Gesamtzahl = Gesamtzahl+1; if((zchn == 'A') (Zchn == 'E') (Zchn == 'I') (Zchn == 'O') (Zchn == 'U')) { VokalAnzahl = VokalAnzahl + 1; } cin >> Zchn; } //end while } 20

Strukturorientierte, kontrollflussorientierte Testverfahren Kontrollflussdiagramm zur Operation ZaehleZchn Pfad Segment n 1 n Start void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl) { char Zchn; Zweig, Kante n 2 cin >> Zchn; Anweisung, Knoten n 3 n 4 while ((Zchn >= A ) && (Zchn <= Z ) && (Gesamtzahl < INT_MAX)) { Gesamtzahl = Gesamtzahl + 1; n 5 n 6 n 7 n Final } } if ((Zchn == A ) (Zchn == E ) (Zchn == I ) (Zchn == O ) { (Zchn == U )) VokalAnzahl = VokalAnzahl + 1; } cin >> Zchn; 21

Strukturorientierte, kontrollflussorientierte Testverfahren Kontrollflussdiagramm zur Operation ZaehleZchn Pfad Zweig, Kante Anweisung, Knoten n 1 n 2 n start void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl) { char Zchn; cin >> Zchn; while ((Zchn >= 'A') && (Zchn <= 'Z') && (Gesamtzahl < INT_MAX)) { n 3 n 4 Gesamtzahl = Gesamtzahl+1; if ((Zchn == 'A') (Zchn == 'E') (Zchn == 'I') (Zchn == 'O') (Zchn == 'U')) { VokalAnzahl = VokalAnzahl + 1; } n 5 n final } } cin >> Zchn; 22

Strukturorientierte, kontrollflussorientierte Testverfahren Anweisungsüberdeckungstest Der Anweisungsüberdeckungstest ist die einfachste kontrollflussorientierte Testtechnik. Man bezeichnet ihn abkürzend auch als C 0 -Test. Im Englischen heißt er statement coverage test Das Ziel der Anweisungsüberdeckung ist die mindestens einmalige Ausführung aller Anweisungen des zu testenden Programms, also die Ausführung aller Knoten (Kreise) des Kontrollflussgraphen Als Testmaß wird der erreichte Anweisungsüberdeckungsgrad definiert. Er ist das Verhältnis der ausgeführten Anweisungen zu der Gesamtzahl der im Prüfling vorhandenen Anweisungen Anzahl der ausgeführten Anweisungen C Anweisung Anzahl der Anweisungen Sind alle Anweisungen des zu testenden Moduls durch die eingegebenen Testdaten mindestens einmal ausgeführt worden, so ist eine vollständige Anweisungsüberdeckung erreicht 23

Strukturorientierte, kontrollflussorientierte Testverfahren Anweisungsüberdeckungstest Der Anweisungsüberdeckungstest verlangt die Ausführung aller Knoten des Kontrollflussgraphen. Von den Testfällen wird verlangt, dass die entsprechenden Programmpfade alle Knoten des Kontrollflussgraphen enthalten Testfall Aufruf von ZaehleZchn mit: Gesamtzahl = 0 Eingelesene Zeichen: A, 1 Durchlaufener Pfad: (n start, n 1, n 2, n 3, n 4, n 5, n 2, n final ) Der Testpfad enthält alle Knoten. Er enthält aber nicht alle Kanten des Kontrollflussgraphen. Die Kante (n 3, n 5 ) ist nicht enthalten 24

Strukturorientierte, kontrollflussorientierte Testverfahren Anweisungsüberdeckungstest n 1 n 2 n start void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl) { char Zchn; cin >> Zchn; while ((Zchn >= 'A') && (Zchn <= 'Z') && (Gesamtzahl < INT_MAX)) { n 3 n 4 n 5 n final } } Gesamtzahl = Gesamtzahl+1; if ((Zchn == 'A') (Zchn == 'E') (Zchn == 'I') (Zchn == 'O') (Zchn == 'U')) { VokalAnzahl = VokalAnzahl + 1; } cin >> Zchn; Zweig (n 3,n 5 ) wird nicht notwendig ausgeführt 25

Strukturorientierte, kontrollflussorientierte Testverfahren Anweisungsüberdeckungstest Der Anweisungsüberdeckungstest gilt als zu schwaches Kriterium für eine sinnvolle Testdurchführung. Er besitzt eine untergeordnete praktische Bedeutung Der Standard RTCA DO-178B für Softwareanwendungen in der Luftfahrt fordert den Anweisungsüberdeckungstest für Software ab Stufe C (dritthöchste Stufe). Derartige Software kann im Falle eines Fehlverhaltens einen bedeutenden Ausfall (major failure condition) verursachen 26

Strukturorientierte, kontrollflussorientierte Testverfahren Zweigüberdeckungstest Das Ziel des Zweigüberdeckungstests ist die Ausführung aller Zweige des zu testenden Programms. Das verlangt den Durchlauf durch alle Kanten des Kontrollflussgraphen. Man bezeichnet ihn auch abkürzend als C 1 -Test. Im Englischen sagt man branch coverage test Der Zweigüberdeckungstest ist eine strengere Testtechnik als der Anweisungsüberdeckungstest. Der Anweisungsüberdeckungstest ist im Zweigüberdeckungstest vollständig enthalten. Man sagt auch: Der Zweigüberdeckungstest subsumiert den Anweisungsüberdeckungstest Der Zweigüberdeckungstest gilt allgemein als das Minimalkriterium im Bereich des kontrollflussorientierten Testens Der Standard RTCA DO-178B für Softwareanwendungen im Bereich der Luftfahrt schreibt einen Zweigüberdeckungstest für Software ab Stufe B (zweithöchste Stufe) vor 27

Strukturorientierte, kontrollflussorientierte Testverfahren Zweigüberdeckungstest Beispiel Der Zweigüberdeckungstest fordert die Überdeckung aller Zweige eines Kontrollflussgraphen. Dies wird erreicht, falls jede Entscheidung des zu testenden Moduls mindestens einmal den Wahrheitswert falsch und wahr besessen hat Testfall Aufruf von ZaehleZchn mit: Gesamtzahl = 0 Eingelesene Zeichen: A, B, 1 Durchlaufener Pfad: (n start, n 1, n 2, n 3, n 4, n 5, n 2, n 3, n 5, n 2, n final ) Der Testpfad enthält alle Kanten. Er enthält insbesondere die Kante (n 3,n 5 ), die durch den Anweisungsüberdeckungstest nicht notwendig ausgeführt wird. Der Zweigüberdeckungstest subsumiert den Anweisungsüberdeckungstest 28

Strukturorientierte, kontrollflussorientierte Testverfahren Pfadüberdeckungstest Eine Programmausführung verursacht einen Durchlauf durch einen Programmpfad, der mehrere Zweige und Anweisungen enthält Frage: Wie kann dies in ein Testverfahren eingebracht werden? n 1 n 2 n start void ZaehleZchn (int& VokalAnzahl, int& Gesamtzahl) { char Zchn; cin >> Zchn; while ((Zchn >= 'A') && (Zchn <= 'Z') && (Gesamtzahl < INT_MAX)) { n 3 n 4 n 5 n final } } Gesamtzahl = Gesamtzahl+1; if ((Zchn == 'A') (Zchn == 'E') (Zchn == 'I') (Zchn == 'O') (Zchn == 'U')) { VokalAnzahl = VokalAnzahl + 1; } cin >> Zchn; 29

Strukturorientierte, kontrollflussorientierte Testverfahren Pfadüberdeckungstest Eine vollständige Pfadüberdeckung fordert die Ausführung aller unterschiedlichen Pfade des zu testenden Programms Ein Pfad p ist eine Sequenz von Knoten (i, n 1,.., n m, j) des Kontrollflussgraphen mit dem Startknoten i und dem Endknoten j Nachteile Der Pfadüberdeckungstest ist für reale Programme in der Regel nicht durchführbar, da sie eine unendlich hohe Anzahl von Pfaden besitzen können. Unter der Annahme, dass der größte Wert einer Variablen vom Typ INTEGER 32767 beträgt, erhält man für die Operation ZaehleZchn die unvorstellbar hohe Anzahl von 2 32768-1 Testpfaden (etwa 1,41 10 9864 Pfade). Die erforderliche Testdauer bei einem Tag und Nacht pausenlos durchlaufenden Test und einer zugrundegelegten Testintensität von 1000 Pfaden pro Sekunde würde 4,5 10 9853 Jahre dauern. Zum Vergleich: Das Alter der Erde wird mit etwas mehr als 4,5 10 9 Jahren angegeben. Ein vollständiger Pfadüberdeckungstest der Operation ZaehleZchn ist daher absolut ausgeschlossen Oft ist ein Bruchteil der anhand des Kontrollflussgraphen konstruierbaren Pfade nicht ausführbar 30

Strukturorientierte, kontrollflussorientierte Testverfahren Subsumptionsrelationen der kontrollflussorientierten Tests Pfadüberdeckungstest Mehrfach- Bedingungsüberdeckungstest strukturierter Pfadtest (k 2) boundary interior-test LCSAJ-Test modifizierter boundary interior-test Zweigüberdeckungstest Anweisungsüberdeckungstest Modifizierter Bedingungs-/ Entscheidungsüberdeckungstest Minimaler Mehrfach- Bedingungsüberdeckungstest Bedingungs-/ Entscheidungsüberdeckungstest Einfacher Bedingungsüberdeckungstest 31

Funktionsorientierter Test Arbeitsweise Testfälle Spezifikation Interpretieren Vollständigkeit Bild der Spezifikation Software Tester Reaktionen beurteilen 32

Funktionsorientierter Test Beurteilung der Adäquanz und der Vollständigkeit des Tests, sowie Herleitung der Testdaten und Beurteilung der Ausgaben anhand der Modulspezifikation Vorteil: Vollständigkeit der Umsetzung der Spezifikation wird geprüft und Testfälle sind an der Soll- Funktionalität orientiert Nachteil: Struktur der Implementation wird nicht berücksichtigt Hier vorgestellte Techniken Funktionale Äquivalenzklassenbildung Zustandsautomatenorientierter Test Syntaxtest Transaktionsflussbasierter Test Test auf Basis von Entscheidungstabellen und Entscheidungsbäumen 33 SE 2 Softwaretest

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse Bildung von Äquivalenzklassen der Eingabewerte auf der Basis der funktionalen Eigenschaften des Programms oder besser seiner funktionalen Spezifikation Werte aus einer Äquivalenzklasse Verursachen ein identisches funktionales Verhalten und Testen eine identische spezifizierte Programmfunktion Die Bildung der Äquivalenzklassen anhand der Spezifikation stellt sicher, dass alle spezifizierten Programmfunktionen mit Werten aus der ihnen zugeordneten Äquivalenzklasse getestet werden Aus den Ausgabewertebereichen können ebenfalls Äquivalenz-klassen erstellt werden 34 SE 2 Softwaretest

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse: Bildung von ungültigen und gültigen Äquivalenzklassen Beispiel Ist für eine Eingabe ein Wertebereich vorgesehen, so stellt dieser Bereich eine gültige Äquivalenzklasse dar, die an ihrer unteren und oberen Grenze durch ungültige Äquivalenzklassen eingerahmt wird Eingabebereich: 1 Wert 99 Eine gültige Äquivalenzklasse: 1 Wert 99 Zwei ungültige Äquivalenzklassen: Wert < 1, Wert > 99 35 SE 2 Softwaretest

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse: Bildung von ungültigen und gültigen Äquivalenzklassen Die Äquivalenzklassen sind eindeutig zu nummerieren. Für die Erzeugung von Testfällen aus den Äquivalenzklassen sind zwei Regeln zu beachten Die Testfälle für gültige Äquivalenzklassen werden durch Auswahl von Testdaten aus möglichst vielen gültigen Äquivalenzklassen gebildet Die Testfälle für ungültige Äquivalenzklassen werden durch Auswahl eines Testdatums aus einer ungültigen Äquivalenzklasse gebildet. Es wird mit Werten kombiniert, die ausschließlich aus gültigen Äquivalenz-klassen entnommen sind Auswahl der konkreten Testdaten aus einer Äquivalenzklasse nach unterschiedlichen Kriterien Oft verwendet: Test der Äquivalenzklassengrenzen (Grenzwertanalyse) 36 SE 2 Softwaretest

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse: Bildung von ungültigen und gültigen Äquivalenzklassen Beispiel Ein Programm zur Lagerverwaltung einer Baustoffhandlung besitzt eine Eingabemöglichkeit für die Registrierung von Anlieferungen Werden Holzbretter angeliefert, so wird die Holzart eingegeben Das Programm kennt die Holzarten Eiche, Buche und Kiefer Ferner wird die Länge in Zentimetern angegeben, die stets zwischen 100 und 500 liegt Als gelieferte Anzahl kann ein Wert zwischen 1 und 9999 angegeben werden Außerdem erhält die Lieferung eine Auftragsnummer Jede Auftragsnummer für Holzlieferungen beginnt mit dem Buchstaben H 37 SE 2 Softwaretest

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse: Bildung von ungültigen und gültigen Äquivalenzklassen Äquivalenzklassenaufstellung Eingabe gültige Äquivalenzklassen ungültige Äquivalenzklassen Holzart 1) Eiche 2) Buche 3) Kiefer 4) Alles andere, z.b. Stahl Länge 5) 100 Länge 500 6) Länge < 100 7) Länge > 500 Anzahl 8) 1 Anzahl 9999 9) Anzahl < 1 10) Anzahl > 9999 Auftragsnummer 11) Erstes Zeichen ist H 12) Erstes Zeichen ist nicht H 38 SE 2 Softwaretest

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse: Bildung von ungültigen und gültigen Äquivalenzklassen Testfälle nach Äquivalenzklassenbildung mit Grenzwertanalyse Testfall 1 2 3 4 5 6 7 8 9 (zusätzlich) getestete Äquivalenzkl assen Holzart 1) 5) U 8) U 11) 2) 5) O 8) O 3) 4) 6) O 7) U 9) O 10) U 12) Eiche Buche Kiefer Stahl Buche Buche Buche Buche Buche Länge 100 500 300 300 99 501 200 200 200 Anzahl 1 9999 100 100 100 100 0 10000 100 Auftragsnummer H1 H1 H1 H1 H1 H1 H1 H1 J2 39

Funktionsorientierter Test Funktionale Äquivalenzklassenanalyse Beispiel zur Äquivalenzklassenbildung Die Klasse "Dreieck" enthält als Attribute die Längen der Dreiecksseiten Seite1, Seite2 und Seite3 als ganze Zahlen. Die Operation "Art ()" ermittelt die Dreiecksart auf Basis dieser Seitenlängen. Es werden folgende Fälle unterschieden Kein Dreieck: Datenfehler der Seitenlängen Gleichseitig Rechtwinklig Gleichschenklig Ungleichseitig Die Art Rechtwinklig wird mit Vorrang ausgegeben, d.h. falls z.b. ein ungleichseitiges Dreieck rechtwinklig ist, so wird nicht Ungleichseitig, sondern Rechtwinklig ausgegeben 40 SE 2 Softwaretest

Funktionsorientierter Test Zustandsbasierter Test Anwendungsgebiet: Software, die einen Zustandsautomaten realisiert Beispiel: Ausschnitt einer Modul-Spezifikation Es ist ein Verbindungsaufbau und abbau zwischen einem rufenden Teilnehmeranschluss und einem gerufenen Teilnehmeranschluss zu realisieren. Initial befindet sich die Verbindung im Zustand Getrennt. Bei aufgelegtem Hörer befindet sich die Software stets in diesem Zustand. Falls der Gesprächsaufbau begonnen wurde aber noch nicht beendet ist, so befindet sich die Software im Zustand Wählend. Falls der Gesprächsaufbau erfolgreich war, so befindet sich die Software im Zustand Verbunden Ein erfolgreicher Gesprächsaufbau beginnt stets mit dem Abnehmen des Telefonhörers, gefolgt von der Wahl einer Ziffernfolge, die eine gültige Rufnummer darstellt. Ein Auflegen des Hörers führt stets zum vollständigen Abbruch des Gesprächs. Falls im Zustand Wählend ein Timeout auftritt, so kann nur durch Auflegen des Hörers in den Initialzustand zurückgekehrt werden 41 SE 2 Softwaretest

Funktionsorientierter Test Zustandsbasierter Test Ziffer 0, Ziffer 1,, Ziffer 9/ Ziffer zur Rufnummer hinzufügen, Rufnummer prüfen Rufnummer ungültig Timeout/ Rufnummer zurücksetzen Wählend Rufnummer gültig/ Verbindung aufbauen Timeout aufgetreten Auflegen/ Rufnummer zurücksetzen Abheben/ Rufnummer zurücksetzen Auflegen Auflegen/ Rufnummer zurücksetzen, Verbindung abbauen Getrennt Timeout/ Rufnummer zurücksetzen Nummer ungültig Auflegen/ Rufnummer zurücksetzen Verbunden 42

Funktionsorientierter Test Zustandsbasierter Test Eine minimale Teststrategie ist die mindestens einmalige Abdeckung aller Zustände durch Testfälle. Besser ist das mindestens einmalige Durchlaufen aller Zustandsübergänge, das z. B. zu folgenden Testfällen führt Getrennt, Abnehmen Wählend, Auflegen Getrennt Getrennt, Abnehmen Wählend, Timeout Timeout aufgetreten, Auflegen Getrennt Getrennt, Abnehmen Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Rufnummer gültig Verbunden, Auflegen Getrennt Getrennt, Abnehmen Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Rufnummer ungültig Nummer ungültig, Auflegen Getrennt Getrennt, Abnehmen Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Ziffer 0... Ziffer 9 Wählend, Rufnummer ungültig Nummer ungültig, Timeout Timeout aufgetreten, Auflegen Getrennt Darüber hinaus ist es sinnvoll alle Ereignisse (Events) zu testen, falls Zustandsübergänge durch mehrere Events ausgelöst werden können. Dies ergibt eine Hierarchie von Testtechniken Alle Zustände Alle Zustandsübergänge Alle Events Wichtig: Test der Fehlerbehandlung nicht vergessen! 43 SE 2 Softwaretest

Funktionsorientierter Test Zustandsbasierter Test Ereignis Abheben Auflegen Zustandsübergangstabelle Zustand Wählend Getrennt Wählend Verbunden Nummer ungültig Rufnr. zurücksetzen Getrennt Wählend Rufnr. zurücksetzen Getrennt Rufnr. zurücksetzen Verbind. abbauen Getrennt Rufnr. zurücksetzen Timeout aufgetreten Getrennt Ziffer 0 Ziffer z. Rufnr. hinzuf., Rufnr. prüfen Ziffer 9 Wählend Ziffer z. Rufnr. hinzuf., Rufnr. prüfen Timeout Timeout aufgetreten Rufnr. zurücksetzen Timeout aufgetreten Rufnr. zurücksetzen Rufnummer gültig Rufnummer ungültig Verbunden Nummer Ungültig Verbind. aufbauen Legende: Ereignis Ausgangszustand Folgezustand Aktion(en) 44

Funktionsorientierter Test Zustandsbasierter Test Zustandsübergangstabelle mit Fehlerzustand Ereignis Abheben Auflegen Ziffer 0 Zustand Wählend Fehlverhalten Getrennt Getrennt Wählend Verbunden Nummer ungültig Rufnr. zurücksetzen Fehlverhalten Getrennt Wählend Rufnr. zurücksetzen Ziffer z. Rufnr. hinzuf., Rufnr. prüfen Fehlverhalten Getrennt Verbunden Rufnr. zurücksetzen Verbind. abbauen Fehlverhalten Getrennt Nummer ungültig Rufnr. zurücksetzen Timeout aufgetreten Fehlverhalten Getrennt Timeout aufgetreten Ziffer 9 Getrennt Wählend Ziffer z. Rufnr. hinzuf., Rufnr. prüfen Verbunden Nummer ungültig Timeout aufgetreten Timeout Fehlverhalten Timeout aufgetreten Rufnr. zurücksetzen Fehlverhalten Timeout aufgetreten Rufnr. zurücksetzen Timeout aufgetreten Rufnummer gültig Rufnummer ungültig Fehlverhalten Fehlverhalten Verbunden Nummer Ungültig Verbind. aufbauen Fehlverhalten Fehlverhalten Fehlverhalten Fehlverhalten Fehlverhalten Fehlverhalten 45

Funktionsorientierter Test Zustandsbasierter Test Zustandsautomat mit Fehlerzustand Ziffer 0, Ziffer 1,, Ziffer 9/ Ziffer zur Rufnummer hinzufügen, Rufnummer prüfen Wählend Timeout/ Rufnummer zurücksetzen Timeout aufgetreten Auflegen/ Rufnummer zurücksetzen Abheben/ Rufnummer zurücksetzen Auflegen Getrennt Timeout/ Rufnummer zurücksetzen Abheben, Rufnummer gültig, Rufnummer ungültig Abheben, Rufnummer gültig, Rufnummer ungültig Rufnummer ungültig Nummer ungültig Fehlverhalten Abheben Rufnr. gültig/ Verbindung aufbauen Abheben, Timeout, Rufnummer gültig, Rufnummer ungültig Auflegen/ Rufnummer zurücksetzen Auflegen/ Rufnummer zurücksetzen, Verbindung abbauen Verbunden Auflegen, Timeout, Rufnummer gültig, Rufnummer ungültig 46

Dynamischer Test Literatur Liggesmeyer P., Software-Qualität, Heidelberg: Spektrum-Verlag (2. Auflage) 2009 47