Strukturorientierte, kontrollflussorientierte Testverfahren ...
Strukturorientierte, kontrollflussorientierte Testverfahren ...
Strukturorientierte, kontrollflussorientierte Testverfahren ...
- Keine Tags gefunden...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Software Entwicklung 2Softwaretest
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerInhalt• Testphasen• Dynamischer Test• Strukturelle, <strong>kontrollflussorientierte</strong> Verfahren• Strukturelle, datenflussorientierte Verfahren• Funktionsorientierter Test• Literatur2
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerLernziele• Die Testphasen kennen und erläutern können• Die Eigenschaften des dynamischen Tests erklären können• Die strukturellen, <strong>kontrollflussorientierte</strong>n Testtechniken kennen, erläutern undanwenden können• Die funktionsorientierten Testtechniken kennen, erläutern und anwenden können3
Testphasen• Voraussetzung für eine Prüfung umfangreicher Softwaresysteme in Phasen istderen modularer Aufbau. Der Vorteil des Prüfens in unterschiedlichen Phasen istdie 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 korrektenZusammenwirkens über Schnittstellen• System-/Abnahmetest• Überprüfung der Funktionalität, Leistung und Qualität einer Software gegen die festgelegtenAnforderungen• Es können weitere Testphasen hinzutreten (z. B. Hardware-/Software-Integrationstest) und Testphasen aufgeteilt werden (z. B. Integrationstest inSubsystemintegrationstest und Systemintegrationstest)4SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
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überdeckungstest5SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Integrationstest• Die Prüfverfahren des Integrationstests dienen zur Überprüfung der Schnittstellenund des Interagierens über Schnittstellen (Schnittstelle: Aufruf von Operationen,Funktionen mit und ohne Parameterübergabe, Verwendung von globalenVariablen oder Dateien)• Integrationsstrategien• Bottom-Up-Integrationstest• Top-Down-Integrationstest• Outside-In-Integrationstest6SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerIntegrationstestBottom-Up-IntegrationstestModul 0Modul 1 Modul 2ZeitModul 3 Modul 4 Modul 5Treiber für dieDienste in Modul 1Treiber für dieDienste in Modul 2Modul 1 Modul 2Modul 3 Modul 4 Modul 5Treiber für dieDienste in Modul 3Treiber für dieDienste in Modul 4Treiber für dieDienste in Modul 5Modul 3 Modul 4 Modul 57
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerIntegrationstestTop-Down-IntegrationstestModul 0Dummies derDienste in Modul 1Dummies derDienste in Modul 2ZeitModul 0Modul 1 Modul 2Dummies derDienste in Modul 3Dummies derDienste in Modul 4Dummies derDienste in Modul 5Modul 0Modul 1 Modul 2Modul 3 Modul 4 Modul 59
IntegrationstestTop-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 istmöglich, da Rückgabewerte durch dummies eingegeben werden• Nachteile• Dummies erforderlich• Mit zunehmender Integrationstiefe wird die Erzeugung bestimmter Testsituationen in tieferangeordneten Modulen schwieriger• Zusammenwirken zwischen zu prüfender Software, Systemsoftware und Hardware wird spät geprüft• Zunehmender Personalbedarf während des Tests10SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerIntegrationstestOutside-In-IntegrationstestModul 0Dummies derDienste in Modul 1Dummies derDienste in Modul 2Modul 0ZeitModul 1 Modul 2Modul 3 Modul 4 Modul 5ZeitTreiber für dieDienste in Modul 3Treiber für dieDienste in Modul 4Treiber für dieDienste in Modul 5Modul 3 Modul 4 Modul 511
IntegrationstestOutside-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 istbei den Schichten, die von oben nach unten integriert werden, möglich, da Rückgabewerte durchdummies eingegeben werden. Diese Testvariante ist bei steuernden Modulen besonders wichtig, dadiese 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 Treibererfolgen, ist keine komplexe Zurückrechnung der Eingaben erforderlich• Bewusste Fehleingaben zur Prüfung von Fehlerbehandlungen sind im unteren Bereich desModulsystems leicht möglich• Der Personalbedarf ist während des Integrationstests konstanter• Nachteil• Dummies und Treiber erforderlich12SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerSystem- / Abnahmetest• Test des fertigen Systems gegen die in der Anforderungsdefinition festgelegtenFunktions-, Leistungs- und Qualitätsanforderungen• Testfälle aus der Anforderungsdefinition, echte oder typische Daten mit denen dasSystem 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 Spezialistenfür das System im Abnahmetest involviert sein13
Dynamischer TestEigenschaften 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 <strong>Testverfahren</strong> in der Praxis• In einfacher Form weit verbreitet• Häufig unsystematisch angewendet• Tests oft nicht reproduzierbar• Diffuse Aktivität (Managementschwierigkeiten)14SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Dynamischer TestEigenschaften und Ziele• Das Ziel der dynamischen <strong>Testverfahren</strong> ist die Erzeugung von Testfällen(Stichprobe der möglichen Eingaben), die• Repräsentativ• Fehlersensitiv• Redundanzarm• Ökonomischsind15SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerDynamische Testtechniken: Überblick• Strukturelle, <strong>kontrollflussorientierte</strong> Testtechniken• Strukturelle, datenflussorientierte Testtechniken• Funktionsorientierte Testtechniken16
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong> VerfahrenArbeitsweiseSpezifikationn startn 1InterpretierenVollständigkeitn 2Bild derSpezifikationn 3n 4n 5TesterAusgabenbeurteilenn final17
<strong>Strukturorientierte</strong> Verfahren• Arbeitsweise: Beurteilung der Adäquanz und der Vollständigkeit des Tests undevtl. Herleitung der Testdaten anhand der Modulstruktur. Beurteilung derAusgaben 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 Verfahren18SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong><strong>Testverfahren</strong>• Anweisungsüberdeckungstest• Zweigüberdeckungstest• Bedingungsüberdeckungstest• Einfacher• Minimaler mehrfacher• Mehrfacher• LCSAJ-basierter Test• boundary interior-Pfadtest• Strukturierter Pfadtest• PfadtestDie <strong>kontrollflussorientierte</strong>n <strong>Testverfahren</strong> basieren auf der Kontrollstruktur bzw.dem Kontrollfluss. Die Basis bildet der Kontrollflussgraph.19
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong><strong>Testverfahren</strong>Beispiel:void ZaehleZchn(int& VokalAnzahl, int& Gesamtzahl)// Vorbedingung: VokalAnzahl > Zchn;while ((Zchn >= 'A')&&(Zchn > Zchn;} //end while}20
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Kontrollflussdiagramm zur Operation ZaehleZchnPfadSegmentn 1n Startvoid ZaehleZchn(int& VokalAnzahl,int& Gesamtzahl){char Zchn;Zweig, Kanten 2cin >> Zchn;Anweisung, Knotenn 3n 4while ((Zchn >= ‘A’) && (Zchn > Zchn;21
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Kontrollflussdiagramm zur Operation ZaehleZchnPfadZweig, KanteAnweisung, Knotenn 1n 2n startvoid ZaehleZchn (int& VokalAnzahl,int& Gesamtzahl){char Zchn;cin >> Zchn;while ((Zchn >= 'A') && (Zchn > Zchn;22
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Anweisungsüberdeckungstest• Der Anweisungsüberdeckungstest ist die einfachste <strong>kontrollflussorientierte</strong>Testtechnik. Man bezeichnet ihn abkürzend auch als C 0 -Test. Im Englischen heißter statement coverage test• Das Ziel der Anweisungsüberdeckung ist die mindestens einmalige Ausführungaller Anweisungen des zu testenden Programms, also die Ausführung aller Knoten(Kreise) des Kontrollflussgraphen• Als Testmaß wird der erreichte Anweisungsüberdeckungsgrad definiert. Er ist dasVerhältnis der ausgeführten Anweisungen zu der Gesamtzahl der im Prüflingvorhandenen AnweisungenAnzahl der ausgeführten AnweisungenC AnweisungAnzahl der Anweisungen• Sind alle Anweisungen des zu testenden Moduls durch die eingegebenenTestdaten mindestens einmal ausgeführt worden, so ist eine vollständigeAnweisungsüberdeckung erreicht23
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Anweisungsüberdeckungstest• Der Anweisungsüberdeckungstest verlangt die Ausführung aller Knoten desKontrollflussgraphen. Von den Testfällen wird verlangt, dass die entsprechendenProgrammpfade alle Knoten des Kontrollflussgraphen enthalten• TestfallAufruf von ZaehleZchn mit: Gesamtzahl = 0Eingelesene 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 desKontrollflussgraphen. Die Kante (n 3 , n 5 ) ist nicht enthalten24
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Anweisungsüberdeckungstestn startvoid ZaehleZchn (int& VokalAnzahl,int& Gesamtzahl){char Zchn;n 1n 2n 3n 4}n 5n final}}cin >> Zchn;while ((Zchn >= 'A') && (Zchn > Zchn;Zweig (n 3 ,n 5 ) wird nicht notwendig ausgeführt25
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Anweisungsüberdeckungstest• Der Anweisungsüberdeckungstest gilt als zu schwaches Kriterium für einesinnvolle Testdurchführung. Er besitzt eine untergeordnete praktische Bedeutung• Der Standard RTCA DO-178B für Softwareanwendungen in der Luftfahrt fordertden Anweisungsüberdeckungstest für Software ab Stufe C (dritthöchste Stufe).Derartige Software kann im Falle eines Fehlverhaltens einen bedeutenden Ausfall(major failure condition) verursachen26
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Zweigüberdeckungstest• Das Ziel des Zweigüberdeckungstests ist die Ausführung aller Zweige des zutestenden Programms. Das verlangt den Durchlauf durch alle Kanten desKontrollflussgraphen. Man bezeichnet ihn auch abkürzend als C 1 -Test. ImEnglischen sagt man branch coverage test• Der Zweigüberdeckungstest ist eine strengere Testtechnik als derAnweisungsüberdeckungstest. Der Anweisungsüberdeckungstest ist imZweigüberdeckungstest vollständig enthalten. Man sagt auch: DerZweigüberdeckungstest subsumiert den Anweisungsüberdeckungstest• Der Zweigüberdeckungstest gilt allgemein als das Minimalkriterium im Bereich des<strong>kontrollflussorientierte</strong>n Testens• Der Standard RTCA DO-178B für Softwareanwendungen im Bereich der Luftfahrtschreibt einen Zweigüberdeckungstest für Software ab Stufe B (zweithöchsteStufe) vor27
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Zweigüberdeckungstest• BeispielDer Zweigüberdeckungstest fordert die Überdeckung aller Zweige einesKontrollflussgraphen. Dies wird erreicht, falls jede Entscheidung des zu testendenModuls mindestens einmal den Wahrheitswert falsch und wahr besessen hat• TestfallAufruf von ZaehleZchn mit: Gesamtzahl = 0Eingelesene 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 ), diedurch den Anweisungsüberdeckungstest nicht notwendig ausgeführt wird. DerZweigüberdeckungstest subsumiert den Anweisungsüberdeckungstest28
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Pfadüberdeckungstest• Eine Programmausführungverursacht einen Durchlaufdurch einen Programmpfad,der mehrere Zweige undAnweisungen enthält• Frage: Wie kann dies in ein<strong>Testverfahren</strong> eingebrachtwerden?n startvoid ZaehleZchn (int& VokalAnzahl,int& Gesamtzahl){char Zchn;n 1n 2n 3n 4}n 5n final}}cin >> Zchn;while ((Zchn >= 'A') && (Zchn > Zchn;29
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Pfadüberdeckungstest• Eine vollständige Pfadüberdeckung fordert die Ausführung aller unterschiedlichenPfade des zu testenden Programms• Ein Pfad p ist eine Sequenz von Knoten (i, n 1 ,.., n m , j) des Kontrollflussgraphen mit dem Startknoten iund dem Endknoten j• Nachteile• Der Pfadüberdeckungstest ist für reale Programme in der Regel nicht durchführbar, da sie eineunendlich hohe Anzahl von Pfaden besitzen können. Unter der Annahme, dass der größte Wert einerVariablen vom Typ INTEGER 32767 beträgt, erhält man für die Operation ZaehleZchn dieunvorstellbar hohe Anzahl von 2 32768 -1 Testpfaden (etwa 1,41 · 10 9864 Pfade). Die erforderlicheTestdauer bei einem Tag und Nacht pausenlos durchlaufenden Test und einer zugrundegelegtenTestintensität von 1000 Pfaden pro Sekunde würde 4,5 · 10 9853 Jahre dauern. Zum Vergleich: DasAlter der Erde wird mit etwas mehr als 4,5 · 10 9 Jahren angegeben. Ein vollständigerPfadüberdeckungstest der Operation ZaehleZchn ist daher absolut ausgeschlossen• Oft ist ein Bruchteil der anhand des Kontrollflussgraphen konstruierbaren Pfade nicht ausführbar30
SE 2 – Softwaretest© Prof. Dr. Liggesmeyer<strong>Strukturorientierte</strong>, <strong>kontrollflussorientierte</strong> <strong>Testverfahren</strong>Subsumptionsrelationen der <strong>kontrollflussorientierte</strong>n TestsPfadüberdeckungstestMehrfach-BedingungsüberdeckungsteststrukturierterPfadtest (k≥2)boundaryinterior-TestLCSAJ-Testmodifizierterboundaryinterior-TestZweigüberdeckungstestAnweisungsüberdeckungstestModifizierterBedingungs-/EntscheidungsüberdeckungstestMinimaler Mehrfach-BedingungsüberdeckungstestBedingungs-/EntscheidungsüberdeckungstestEinfacherBedingungsüberdeckungstest31
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerFunktionsorientierter TestArbeitsweiseTestfälleSpezifikationInterpretierenVollständigkeitBild derSpezifikationSoftwareTesterReaktionenbeurteilen32
Funktionsorientierter Test• Beurteilung der Adäquanz und der Vollständigkeit des Tests, sowie Herleitung derTestdaten 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äumen33SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Funktionsorientierter TestFunktionale Äquivalenzklassenanalyse• Bildung von Äquivalenzklassen der Eingabewerte auf der Basis der funktionalenEigenschaften 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 allespezifizierten Programmfunktionen mit Werten aus der ihnen zugeordnetenÄquivalenzklasse getestet werden• Aus den Ausgabewertebereichen können ebenfalls Äquivalenz-klassen erstelltwerden34SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Funktionsorientierter TestFunktionale Ä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 Äquivalenzklasseneingerahmt wird• Eingabebereich: 1 Wert 99• Eine gültige Äquivalenzklasse: 1 Wert 99• Zwei ungültige Äquivalenzklassen: Wert < 1, Wert > 9935SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Funktionsorientierter TestFunktionale Äquivalenzklassenanalyse:Bildung von ungültigen und gültigen Äquivalenzklassen• Die Äquivalenzklassen sind eindeutig zu nummerieren. Für die Erzeugung vonTestfä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 vielengültigen Äquivalenzklassen gebildet• Die Testfälle für ungültige Äquivalenzklassen werden durch Auswahl eines Testdatums aus einerungü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 nachunterschiedlichen Kriterien• Oft verwendet: Test der Äquivalenzklassengrenzen (Grenzwertanalyse)36SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Funktionsorientierter TestFunktionale Äquivalenzklassenanalyse:Bildung von ungültigen und gültigen Äquivalenzklassen• Beispiel• Ein Programm zur Lagerverwaltung einer Baustoffhandlung besitzt eine Eingabemöglichkeit für dieRegistrierung 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 H37SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Funktionsorientierter TestFunktionale Äquivalenzklassenanalyse:Bildung von ungültigen und gültigen Äquivalenzklassen• ÄquivalenzklassenaufstellungEingabe gültige Äquivalenzklassen ungültige ÄquivalenzklassenHolzart1) Eiche2) Buche3) Kiefer4) Alles andere, z.B. StahlLänge 5) 100 ≤ Länge ≤ 500 6) Länge < 1007) Länge > 500Anzahl 8) 1 ≤ Anzahl ≤ 9999 9) Anzahl < 110) Anzahl > 9999Auftragsnummer11) Erstes Zeichen ist H 12) Erstes Zeichen ist nicht H38SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerFunktionsorientierter TestFunktionale Äquivalenzklassenanalyse:Bildung von ungültigen und gültigen Äquivalenzklassen• Testfälle nach Äquivalenzklassenbildung mit GrenzwertanalyseTestfall 1 2 3 4 5 6 7 8 9(zusätzlich)getesteteÄquivalenzklassenHolzart1)5) U8) U11)2)5) O8) O3) 4) 6) O 7) U 9) O 10) U 12)Eiche Buche Kiefer Stahl Buche Buche Buche Buche BucheLänge 100 500 300 300 99 501 200 200 200Anzahl 1 9999 100 100 100 100 0 10000 100AuftragsnummerH1 H1 H1 H1 H1 H1 H1 H1 J239
Funktionsorientierter TestFunktionale Ä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 Dreiecksartauf 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. einungleichseitiges Dreieck rechtwinklig ist, so wird nicht Ungleichseitig, sondernRechtwinklig ausgegeben40SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
Funktionsorientierter TestZustandsbasierter Test• Anwendungsgebiet: Software, die einen Zustandsautomaten realisiert• Beispiel: Ausschnitt einer Modul-Spezifikation• Es ist ein Verbindungsaufbau und –abbau zwischen einem rufenden Teilnehmeranschluss und einemgerufenen Teilnehmeranschluss zu realisieren. Initial befindet sich die Verbindung im ZustandGetrennt. Bei aufgelegtem Hörer befindet sich die Software stets in diesem Zustand. Falls derGesprächsaufbau begonnen wurde aber noch nicht beendet ist, so befindet sich die Software imZustand Wählend. Falls der Gesprächsaufbau erfolgreich war, so befindet sich die Software imZustand Verbunden• Ein erfolgreicher Gesprächsaufbau beginnt stets mit dem Abnehmen des Telefonhörers, gefolgt vonder Wahl einer Ziffernfolge, die eine gültige Rufnummer darstellt. Ein Auflegen des Hörers führt stetszum vollständigen Abbruch des Gesprächs. Falls im Zustand Wählend ein Timeout auftritt, so kannnur durch Auflegen des Hörers in den Initialzustand zurückgekehrt werden41SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerFunktionsorientierter TestZustandsbasierter TestZiffer 0, Ziffer 1,…, Ziffer 9/Ziffer zurRufnummerhinzufügen,Rufnummer prüfenRufnummerungültigTimeout/RufnummerzurücksetzenWählendRufnummer gültig/VerbindungaufbauenTimeoutaufgetretenAuflegen/RufnummerzurücksetzenAbheben/RufnummerzurücksetzenAuflegenAuflegen/Rufnummerzurücksetzen,VerbindungabbauenGetrenntTimeout/RufnummerzurücksetzenNummerungültigAuflegen/RufnummerzurücksetzenVerbunden42
Funktionsorientierter TestZustandsbasierter Test• Eine minimale Teststrategie ist die mindestens einmalige Abdeckung allerZustände durch Testfälle. Besser ist das mindestens einmalige Durchlaufen allerZustandsü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, Ziffer0 ... 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, Ziffer0 ... 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, fallsZustandsübergänge durch mehrere Events ausgelöst werden können. Dies ergibteine Hierarchie von TesttechnikenAlle Zustände Alle Zustandsübergänge Alle Events• Wichtig: Test der Fehlerbehandlung nicht vergessen!43SE 2 – Softwaretest© Prof. Dr. Liggesmeyer
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerFunktionsorientierter TestZustandsbasierter TestEreignisAbhebenAuflegen• ZustandsübergangstabelleZustandWählendGetrennt Wählend Verbunden NummerungültigRufnr.zurücksetzenGetrenntWählendRufnr.zurücksetzenGetrenntRufnr.zurücksetzenVerbind. abbauenGetrenntRufnr.zurücksetzenTimeoutaufgetretenGetrennt--Ziffer 0Ziffer z.Rufnr. hinzuf.,Rufnr. prüfenZiffer 9WählendZiffer z.Rufnr. hinzuf.,Rufnr. prüfenTimeoutTimeoutaufgetretenRufnr.zurücksetzenTimeoutaufgetretenRufnr.zurücksetzenRufnummer gültigRufnummer ungültigVerbundenNummerUngültig --Verbind.aufbauenLegende:EreignisAusgangszustandFolgezustandAktion(en)44
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerFunktionsorientierter TestZustandsbasierter Test• Zustandsübergangstabelle mit FehlerzustandEreignisAbhebenAuflegenZiffer 0ZustandWählendFehlverhaltenGetrenntGetrennt Wählend Verbunden NummerungültigRufnr.zurücksetzen----FehlverhaltenGetrenntWählend--Rufnr.zurücksetzenZiffer z.Rufnr. hinzuf.,Rufnr. prüfenFehlverhaltenGetrenntVerbunden--Rufnr.zurücksetzenVerbind. abbauen--Fehlverhalten--GetrenntNummerungültigRufnr.zurücksetzen--TimeoutaufgetretenFehlverhalten--GetrenntTimeoutaufgetreten----Ziffer 9Getrennt--WählendZiffer z.Rufnr. hinzuf.,Rufnr. prüfenVerbunden--Nummerungültig--Timeoutaufgetreten--TimeoutFehlverhalten--TimeoutaufgetretenRufnr.zurücksetzenFehlverhalten--TimeoutaufgetretenRufnr.zurücksetzenTimeoutaufgetreten--Rufnummer gültigRufnummer ungültigFehlverhaltenFehlverhalten----VerbundenNummerUngültig --Verbind.aufbauenFehlverhaltenFehlverhalten----Fehlverhalten--Fehlverhalten--FehlverhaltenFehlverhalten----45
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerFunktionsorientierter TestZustandsbasierter Test• Zustandsautomat mit FehlerzustandZiffer 0, Ziffer 1, …,Ziffer 9/Ziffer zur Rufnummerhinzufügen, RufnummerprüfenWählendTimeout/RufnummerzurücksetzenTimeoutaufgetretenAuflegen/Rufnummer zurücksetzenAbheben/Rufnummer zurücksetzenAuflegenGetrenntTimeout/RufnummerzurücksetzenAbheben,Rufnummer gültig,Rufnummer ungültigAbheben,Rufnummer gültig,Rufnummer ungültigRufnummerungültigNummerungültigFehlverhaltenAbhebenRufnr.gültig/VerbindungaufbauenAbheben, Timeout,Rufnummer gültig,Rufnummer ungültigAuflegen/RufnummerzurücksetzenAuflegen/Rufnummerzurücksetzen,VerbindungabbauenVerbundenAuflegen,Timeout,Rufnummergültig,Rufnummerungültig46
SE 2 – Softwaretest© Prof. Dr. LiggesmeyerDynamischer TestLiteratur• Liggesmeyer P., Software-Qualität, Heidelberg: Spektrum-Verlag (2. Auflage) 200947