Äquivalenzklassen
R 2.0.0
Beschreibung
Ein Testobjekt besitzt üblicherweise mehr als nur einen Eingabeparameter, wodurch der mögliche Testaufwand schnell sehr umfangreich werden kann. Vor dem Hintergrund, dass sich die denkbaren Testfälle und -varianten leicht zu einigen hunderten oder tausenden Tests addieren, spricht man in diesen Fällen von einer Testfallexplosion. Der Test mit allen Eingabewerten und deren Kombination wäre ein vollständiger Test, der allerdings aufgrund der Vielzahl aller Möglichkeiten unrealistisch und i.d.R. unmöglich ist.
Eine Reduktion und sinnvolle Auswahl der Testfälle ist gefordert und kann u.a. durch Methoden wie z.B. Paarweiser Test und Äquivalenzklassenbildung erfolgen.
Bei der Verwendung von Äquivalenzklassen werden Eingabewertebereiche gebildet. „Zu einer Äquivalenzklasse gehören alle Eingabewerte, bei denen der Tester davon ausgeht, dass sich das Testobjekt bei Eingabe eines beliebigen aus der Äquivalenzklasse gleich verhält“.
Aus diesem Grund ist der Test jeweils eines Repräsentanten einer Äquivalenzklasse ausreichend. Die Annahme ist, dass das Testobjekt bei weiteren Werten aus dieser Äquivalenzklasse dieselbe Reaktion zeigen wird.
Der Äquivalenzklassentest wird allgemein zu den Black-Box-Testmethoden gerechnet.
Beispiel für Äquivalenzklassen
Schritte zur Bildung von Testfällen mittels Äquivalenzklassen:
-
Analyse der Ein- und Ausgabedaten
-
Äquivalenzklassen der Wertebereiche bilden (gleiches Ergebnis erwartet)
-
Repräsentanten finden
-
Testfälle erstellen (abstrakt – konkret)
Beispiel: In einem Online Bestellformular für Schiffsausflüge sind im ersten Schritt die Felder Name, Vorname und Alter als Pflichtelemente zu füllen. In Abhängigkeit vom Alter gibt es Rabatte für die Passagiere. Kinder und Jugendliche bis zu einem Alter von 0- einschließlich 12 Jahren zahlen 10% des Reisepreises, Jugendliche von 13- einschließlich 17 Jahren zahlen 25% und Erwachsene ab 18- einschließlich 69 Jahren zahlen den vollen Preis. Senioren ab 70 Jahren fahren kostenlos mit.
Für die Werte innerhalb dieser Klassen werden dieselben Ergebnisse erwartet. Bezogen auf das Alter des Reisenden ergeben sich folgende Äquivalenzklassen:
Es wird bei unserem Altersbeispiel zwischen gültigen und ungültigen Äquivalenzklassen unterschieden:
-
uÄK1 [-∞,…,-1] Eingabe von minus unendlich bis -1 ist ungültig
-
gÄK2 [0,…,12] Eingabe von 0 bis einschließlich 12 Jahren ist gültig (Preis 10%)
-
gÄK3 [13,…,17] Eingabe von 13 bis einschließlich 17 Jahren ist gültig (Preis 25%)
-
gÄK4 [18,…,69] Eingabe von 18 bis einschließlich 69 Jahren ist gültig (Preis 100%)
-
gÄK5 [≥ 70] Eingabe von ≥ 70 Jahren ist gültig (kostenlose Fahrt)
Da Tests mit mehreren Werten aus einer Äquivalenzklasse unnötig sind, muss nur mit einem Wert aus der Klasse getestet werden. Dafür bestimmen wir per Zufall einen Repräsentanten aus jeder Klasse:
Bei der Bildung der Testfälle ist darauf zu achten, dass sie alle festgelegten Äquivalenzklassen abdecken (auch ungültige), indem sie mindestens einen Wert aus jeder Klasse nutzen.
Wir identifizieren nun mögliche Testfälle für dieses stark vereinfachte Beispiel, vorausgesetzt alle Felder sind Pflichteingaben und die Felder Name und Vorname dürfen nur Buchstaben, das Feld Alter nur Ganzzahlen enthalten.
Die Liste der Äquivalenzklassen unseres Beispiels erweitert sich entsprechend:
-
gÄK6 Name ist nicht leer
-
uÄK7 Name ist leer
-
gÄK8 Vorname ist nicht leer
-
uÄK9 Vorname ist leer
-
gÄK10 Alter ist nicht leer
-
uÄK11 Alter ist leer
-
gÄK12 Name ist gefüllt und enthält ausschließlich Buchstaben
-
uÄK13 Name ist gefüllt und enthält Zeichen, die keine Buchstaben sind
-
gÄK14 Vorname ist gefüllt und enthält ausschließlich Buchstaben
-
uÄK15 Vorname ist gefüllt und enthält Zeichen, die keine Buchstaben sind
-
gÄK16 Alter ist gefüllt und enthält ausschließlich Ganzzahlen
-
uÄK17 Alter ist gefüllt und enthält Zeichen, die keine Ganzzahlen sind
Folgende Testfälle inkl. erwartetem Ergebnis können unter Berücksichtigung der Äquivalenzklassen und der ermittelten Repräsentanten gebildet werden:
Hinweis: Ungültige Werte einer Äquivalenzklasse sollten nur mit gültigen Werten aus anderen Klassen kombiniert werden. Durch dieses Vorgehen soll das Maskieren von Fehlern verhindert werden.
Mehrwert
Die Testdatenauswahl durch die Bildung von Äquivalenzklassen ist insbesondere in Kombination mit fehlerorientierten Verfahren wie der Grenzwertanalyse sehr wirkungsvoll. Ziel ist es, eine hohe Fehlerentdeckungsrate bei möglichst geringer Anzahl von Testfällen zu erreichen. Es wird eine geringere Anzahl von Testfällen entstehen verglichen mit einer unsystematischen Fehlersuche oder dem Versuch, einen vollständigen Test durchzuführen. Geeignet ist das Verfahren insbesondere bei einer hohen Zahl von Ein- und Ausgabeparametern.
Tests unter Einsatz von Äquivalenzklassen sind für alle Teststufen geeignet.
Herausforderungen bei Äquivalenzklassen
Der Erfolg der Äquivalenzklassentests ist von der korrekten Identifizierung der Klassen abhängig.
Daher ist für diesen Schritt gerade bei komplexen Anwendungen die enge Einbeziehung des Fachbereichs hilfreich und empfehlenswert.
Falsch identifizierte Äquivalenzklassen können zu einer geringeren Testabdeckung führen.
Äquivalenzklassen-Überdeckung
Äquivalenzklassen-Überdeckung an unserem Beispiel:
-
Wir haben insgesamt 17 Äquivalenzklassen identifiziert.
-
In den 11 Testfällen der Tabelle 2 sind alle 17 Äquivalenzklassen mit mindestens einem Repräsentanten vertreten.
-
Ungültige Werte aus den geprüften Klassen werden jeweils mit ausschließlich gültigen Werten aus den übrigen Klassen kombiniert.
-
Bei der Ausführung der 11 Testfälle wird somit eine 100%ige Äquivalenzklassen-Überdeckung erreicht:
Überdeckung im Beispiel = (17 : 17) x 100 = 100%
Quellen
-
ISTQB Glossary Äquivalenzklassen, abgerufen am 06.02.2024
-
Dr. Oliver Kortendick, Kombinatorik II Äquivalenzklassenbildung und Grenzwertanalyse - Vortrag im Forum für Test und Qualitätssicherung (ForTeQ - BVA) vom 25.02.2021
-
A. Spillner, T. Linz - Basiswissen Softwaretest, 7. Auflage, 2024