Erläutern Sie Spezifikationsbasiertes Testen?
• Testreferenz
• Bewertung
Einordnung:
• Testreferenz = Spezifikation des Prüfobjekts
• Bewertung der Vollständigkeit basiert auf der Spezifikation
• Bewertung der Korrektheit basiert ebenfalls auf der Spezifikation
Welche Techniken haben Spezifikationsbasiertes Testen?
Techniken (Auswahl):
• Äquivalenzklassentest
⇒ Spezifikation = Abbildungsfunktion: Eingabe →Ausgabe
• Ursache-Wirkungs-Analyse
⇒ Spezifikation = Ursache-Wirkungs-Graph
(logische Beziehungen zw. Ursachen und Wirkungen einer Komponente)
• Zustandsbasierter Test (Thema nächste Woche)
⇒ Spezifikation = Zustandsautomat
Erläutern Sie Äquivalenzklassentest ?
In der Regel unmöglich, alle Kombinationen von Eingabewerten zu testen
⇒ Unterteile Eingaben in "Gruppen ähnlicher Werte" (Äquivalenzklassen)
Äquivalenzklasse: Teilmenge A von Elementen einer Gesamtmenge, die untereinander in einer Äquivalenzrelation (∼) stehen
a ∈ A, b ∈ A ⇒ a ∼ b
Annahme: Alle Elemente der Äquivalenzklasse führen zum selben
Testergebnis (d.h., pass oder fail)
a ∈ A : Test(a) = pass ⇒ ∀b ∈ A : Test(b) = pass
a ∈ A : Test(a) = fail ⇒ ∀b ∈ A : Test(b) = fail
⇒ Test einen Repräsentanten a ∈ A einer Äquivalenzklasse reicht aus
Welche Annahme haben Die Äquivalenzklassentest ?
Annahme: Alle Elemente der Äquivalenzklasse führen zum selben
Testergebnis (d.h., pass oder fail)
a ∈ A : Test(a) = pass ⇒ ∀b ∈ A : Test(b) = pass
a ∈ A : Test(a) = fail ⇒ ∀b ∈ A : Test(b) = fail
⇒ Test einen Repräsentanten a ∈ A einer Äquivalenzklasse reicht aus
Wie ist die Bildung von Äquivalenzklassen ?
Zerlege alle möglichen Eingaben in gültige und ungültige Äquivalenzklassen
◦ Ungültige Klassen prüfen Fehlerbehandlung
Teste jede Äquivalenzklasse durch einen (oder mehrere) Repräsentanten
Äquivalenz ist hypothetisch, erklären Sie?
Äquivalenz ist hypothetisch, Klassenbildung nach Erfahrung/Intuition
◦ mit Hilfe von spezifizierten Gültigkeitsbereichen
◦ mit Hilfe von spezifizierten (oder vermuteten) Sonderbehandlungen
Bildung von Äquivalenzklassen
• Wenn die Eingabe in geordnetem Wertebereich sein muss:
• Wenn die Eingabe in geordnetem Wertebereich sein muss:
◦ eine gültige Äquivalenzklasse
◦ zwei ungültige Äquivalenzklassen
◦ Beispiel: Wertebereich: 1 <= Wert <= 42
gültige Klasse: 1 <= Wert <= 42
ungültige Klassen: Wert < 1, Wert > 42
Bildung von Äquivalenzklassen
• Wenn Eingabe Datenstruktur mit unteren und oberen Schranken ist:
• Wenn Eingabe Datenstruktur mit unteren und oberen Schranken ist:
◦ eine gültige Äquivalenzklasse
◦ zwei ungültige Äquivalenzklassen
◦ Beispiel: Eingabe: Liste mit 1 bis 42 Elementen
gültige Klasse: Listen mit 1 bis 42 Elementen
ungültige Klassen: leere Liste, Listen mit >42 Elementen
Bildung von Äquivalenzklassen
• Wenn die Eingabe Bedingungen unterliegt:
• Wenn die Eingabe Bedingungen unterliegt:
◦ eine gültige Äquivalenzklasse
◦ eine ungültige Äquivalenzklasse
◦ Beispiel: Eingabe: Natürliche Zahl
gültige Klasse: x ∈ N
ungültige Klasse: x /∈ N
Bildung von Äquivalenzklassen
• Wenn Eingabe Aufzählung / ungeordneter Wertebereich ist:
alle Elemente gleich behandelt
• Wenn Eingabe Aufzählung / ungeordneter Wertebereich ist:
◦ Wenn alle Elemente gleich behandelt werden
◦ eine gültige Äquivalenzklasse
◦ eine ungültige Äquivalenzklasse
◦ Beispiel: Eingabe: Aufzählung {rot, grün, blau}
gültige Klasse: {rot, grün, blau}
ungültige Klasse: Wert nicht in {rot, grün, blau}
Bildung von Äquivalenzklassen
• Wenn Eingabe Aufzählung / ungeordneter Wertebereich ist:
Elemente nicht gleich behandelt
• Wenn Eingabe Aufzählung / ungeordneter Wertebereich ist:
◦ Wenn die Elemente nicht gleich behandelt werden
◦ eine gültige Äquivalenzklasse pro Wert
◦ eine ungültige Äquivalenzklasse
◦ Beispiel: Eingabe: Aufzählung {rot, grün, blau}
gültige Klassen: {rot}, {grün}, {blau}
ungültige Klasse: Wert nicht in {rot, grün, blau}
Testfälle für gültige Äquivalenzklassen
Testfälle für ungültige Äquivalenzklassen
◦ vermeidet, dass Klassen nicht abgedeckt werden, weil Ausführung durch Fehler bei anderer Klasse abbricht
◦ Ermöglicht Zuordnung zwischen Eingabe und Fehlerbehandlung
Lücken ausfüllen:
Mehrere Eingabewerte
Mehr Testfälle denkbar: Kombination aller ...................
• Repräsentanten aller ............. ...................... kombinieren
• Jede Kombination bildet einen ...............
• Anzahl ............ = Produkt der Anzahl der gültigen Äquivalenzklassen
Mehrere Eingabewerte
Mehr Testfälle denkbar: Kombination aller Repräsentanten
• Repräsentanten aller gültigen Äquivalenzklassen kombinieren
• Jede Kombination bildet einen Testfall
• Anzahl Testfälle = Produkt der Anzahl der gültigen Äquivalenzklassen
Was ist Probleme des Äquivalenzklassentests und welche Lösungsansatz?
Güte der Testfälle abhängig von Aussagekraft der Spezifikation
◦ Eingabebedingungen müssen vorhanden oder ableitbar sein
Welche Werte sollen als Repräsentanten gewählt werden?
Welche Kombinationen von Repräsentaten sollen gewählt werden?
◦ trotz Äquivalenzklassenbildung evtl. viele Kombinationen/Testfälle
Lösungsansatz: Systematische Auswahl von Eingabekombinationen
⇒ Ursache-Wirkungs-Analyse
Erläutern Sie Ursache-Wirkungs-Analyse?
Testreferenz: Ursache-Wirkungs-Graph (UWG)
◦ formale, graphische Sprache zur Beschreibung von logischen Beziehungen zwischen Ursachen und Wirkungen in einer Komponente
◦ UWG wird aus (textueller) Spezifikation abgeleitet
◦ Testfälle werden aus UWG abgeleitet
Ursachen und Wirkungen der (Teil-)Spezifikation identifizieren
◦ Ursache: einzelne Eingangsbedingung oder Äquivalenzklasse mehrerer Bedingungen
◦ Wirkung: Ausgangsbedingung oder Änderung des Systemzustands
• Ursachen und Wirkungen entsprechend Spezifikation verbinden
• Graph in Entscheidungstabelle überführen
• Spalten der Entscheidungstabelle in Testfälle konvertieren
Probleme des Äquivalenzklassentests(Nachteile):
Annahme, dass alle Werte in einer Äquivalenzklasse gleich gut geeignet sind, um Fehler zu finden ist unrealistisch
Erfahrung: Fehler treten oft in Grenzbereichen der Äquivalenzklassen auf
Heuristik: Bei (gültigen) Klassen von Intervallen für jede Grenze je ein
Testfall für:
◦ den exakten Grenzwert
◦ die beiden benachbarten Werte (kleinstmögliches Inkrement)
◦ mittlere Werte aus Äquivalenzklasse können weggelassen werden
◦ wenn obere Grenze einer Klasse gleich unterer Grenze anderer Klasse fallen entspr. Testfälle zusammen
Weitere Heuristiken:
◦ besondere Werte, z.B. 0
◦ positive und negative Werte, weil oft unterschiedlich behandelt
Erläutern Sie Grenzwertanalyse mit Beispiel?
Numerisches Eingabefeld, 16-bit Integer Variable
Aus Äquivalenzklassenanalyse:
◦ gültige Äquivalenzklasse: [-32768, 32767]
◦ ungültige Äquivalenzklassen: < -32768, > 32767
Testfälle:
◦ aus Äquivalenzklassen, z.B. 13566, -170000, 180000
◦ Grenzwerte:
· untere Grenze: -32769, -32768, -32767
· obere Grenze: 32766, 32767, 32768
◦ besondere Werte, z.B. 0, -1, 1