Äquivalenzklassentest

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Ein Äquivalenzklassentest dient der Qualitätsprüfung von Software.

Ziel der Äquivalenzklassenbildung ist es, Äquivalenzklassen zu bilden und so eine hohe Fehlerentdeckungsrate mit einer möglichst geringen Anzahl von Testfällen zu erreichen. Die Äquivalenzklassen sind also bezüglich Ein- und Ausgabedaten ähnliche Klassen bzw. Objekte, bei denen erwartet wird, dass sie sich gleichartig verhalten. Bspw. im Programm zur Verwaltung eines Fuhrparks sind äquivalente Klassen Fahrzeuge (Ferrari - BMW nicht jedoch Ferrari - Mitarbeiter). Das Wesen der Äquivalenzklassenbildung besteht darin, die gesamten Eingabedaten und Ausgabedaten eines Programms in Gruppen von Äquivalenzklassen zu unterteilen, so dass man annehmen kann, dass mit jedem beliebigen Objekt einer Klasse die gleichen Fehler wie mit jedem anderen Objekt dieser (Äquivalenz-)Klasse gefunden werden (Bspw. Ferrari ENZO - BMW M3). Die Bildung von Testfällen zu Äquivalenzklassen folgt dieser Abfolge:

  • Analyse und Spezifikation der Eingabedaten, der Ausgabedaten und der Bedingungen gemäß den Spezifikationen
  • Bildung der Äquivalenzklassen durch Klassifizierung der Wertebereiche für Ein- und Ausgabedaten
  • Bestimmung der Testfälle durch Werteauswahl für jede Äquivalenzklasse

Die erstellten Testfälle gelten somit für alle Objekte der erstellten Äquivalenzklasse, sodass nicht für jede Ausprägung ein eigener Testfall erstellt werden muss.

Es werden zwei Arten von Äquivalenzklassen unterschieden:

  • gültige Äquivalenzklassen
  • ungültige Äquivalenzklassen

Bei gültigen Äquivalenzklassen werden gültige Eingabedaten, bei ungültigen Äquivalenzklassen ungültige Eingabedaten verwendet.

Äquivalenzklassen werden allgemein unter logischen Gesichtspunkten erstellt, indem insbesondere auf die Gleichartigkeit der Klassen- bzw. Objekteigenschaften sowie deren Ermittlung geachtet wird. Kandidaten für die Bildung von Äquivalenzklassen sind in der Welt der objektorientierten Programmierung insbesondere Kind- und Superklassen. Bei abstrakten Klassen ist auf die unterschiedliche Ausimplementierung der vererbten Methoden/Prozeduren insbesondere bezüglich Ein- und Ausgabeparameter zu achten. Stark unterschiedliche Implementierungen bei Kindklassen einer abstrakten Klasse KFZ (z. B.: LKW; PKW) können für die Bildung von Äquivalenzklassen nicht geeignet sein (bspw. Methode: ermittleGueltigeAnzahlAchsen() → PKW 2; LKW: 3 (nur Zugmaschine)).

Ein Beispiel für eine Grenzwertanalyse nach gültigen und ungültigen Äquivalenzklassen:

Die gültigen Werte einer Ein/Ausgabe bei gebildeten Äquivalenzklassen liegen zwischen 100 und 1000. Es wird nun ein Testfall definiert, welcher verifiziert, dass:

  • die Ein/Ausgabe minus unendlich bis 99 als ungültig zurückgewiesen wird, (ungültige Äquivalenzklassen: - unendlich bis inklusive 99),
  • die Ein/Ausgabe von 100 bis 1000 als gültig akzeptiert (gültige Äquivalenzklassen: 100 bis inklusive 1000), und
  • die Ein/Ausgabe von 1001 bis unendlich als ungültig zurückgewiesen wird (ungültige Äquivalenzklassen: 1001 bis inklusive unendlich)

Siehe auch[Bearbeiten]