Äquivalenzklassentest

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

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

Zweck[Bearbeiten]

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. So sind beispielsweise in einem Programm zur Verwaltung eines Fuhrparks Fahrzeuge äquivalente Klassen („Ferrari“ und „BMW“ sind vergleichbar, „Ferrari“ und „Mitarbeiter“ nicht). 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 („Ferrari ENZO“ würde also dieselben Fehler ergeben wie „BMW M3“).

Vorgehen[Bearbeiten]

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 wird zwischen gültigen Äquivalenzklassen und ungültigen Äquivalenzklassen unterschieden. 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 (z. B. „LKW“ und „PKW“ als Kindklassen von „KFZ“) können für die Bildung von Äquivalenzklassen nicht geeignet sein (bspw. Methode: ermittleGueltigeAnzahlAchsen() → PKW 2; LKW: 3 (nur Zugmaschine)).

Beispiel[Bearbeiten]

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]