Was sind Äquivalenzklassen und Grenzwertanalyse?
Äquivalenzklassenbildung und Grenzwertanalyse sind zwei eng verzahnte Black-Box-Testverfahren: Die Äquivalenzklassenbildung zerlegt den Eingabewertebereich in Klassen, die das System gleich behandeln soll, und die Grenzwertanalyse prüft gezielt die Übergänge zwischen diesen Klassen. Zusammen bilden sie das wohl meistgenutzte Gespann unter den Testentwurfsverfahren.
Die Idee dahinter ist ökonomisch. Niemand kann ein Eingabefeld mit allen denkbaren Werten testen. Muss auch niemand: Wenn das System die Werte 12 und 19 nachweislich gleich behandelt, reicht einer von beiden als Repräsentant. Interessant wird es an den Rändern. Ob im Code ein Kleiner-Zeichen oder ein Kleiner-gleich steht, entscheidet sich genau am Grenzwert, nirgendwo sonst. Deshalb sitzen die berüchtigten Off-by-one-Fehler fast immer an Klassengrenzen.
Wertebereichstest heißt die Weiterentwicklung dieser beiden Techniken auf Advanced-Niveau: dieselbe Grundidee, ergänzt um ein benanntes Punktart-Vokabular (ON, OFF, IN, OUT) und um explizite Überdeckungskriterien. Die Grundtechniken selbst gehören seit jeher zum Foundation Level.
Eine Abgrenzung vorab, weil die Suchergebnisse zu diesem Begriff gerne in eine andere Disziplin führen: Äquivalenzklassen gibt es auch in der Mathematik. Dort zerlegt eine Äquivalenzrelation (reflexiv, symmetrisch, transitiv) eine Menge in disjunkte Teilmengen. Der Softwaretest hat sich die Grundidee geborgt, betreibt aber keine Beweisführung. Werte gelten als äquivalent, wenn die Spezifikation sagt, dass das System sie gleich behandeln soll. Wer die mathematische Äquivalenzrelation sucht, ist hier falsch; wer wissen will, wie man mit neun Testfällen ein Eingabefeld absichert, richtig.
Wann ist das Verfahren geeignet?
Der Wertebereichstest bietet sich an, sobald ein Eingabeparameter einen klar definierten Wertebereich hat: numerische Beträge, Mengen, Datumswerte, Auswahllisten, Längen von Zeichenketten. Auch fachliche Regeln mit Schwellwerten gehören dazu, etwa “Stornierung kostenlos bis 48 Stunden vor Anreise” oder “Frühbucherrabatt ab 60 Tagen Vorlauf”.
Seine Stärke liegt bei Eingabevalidierungen und Berechnungslogiken, deren Entscheidungen an einzelnen Werten hängen. Wo dagegen mehrere separate Parameter zusammenwirken, reicht das Verfahren allein nicht aus; dort übernimmt der kombinatorische Test das Zusammenspiel der Parameter. Und wenn Schwellwerte in verknüpfte Geschäftsregeln eingebettet sind, lohnt der Blick auf den Entscheidungstabellentest.
Vorgehen in sechs Schritten
Zum vollständigen Anzeigen nach rechts wischen oder mit den Pfeiltasten scrollen.
Der Ablauf ist immer derselbe, nur Klassen, Grenzen und Werte ändern sich. Als Beispiel dient das Buchungsformular eines Hotels, in dem die Aufenthaltsdauer als ganze Zahl von 1 bis 28 Nächten zulässig ist.
- Eingabeparameter identifizieren. Welche Parameter beeinflussen das zu testende Verhalten? Im Beispiel: das Feld für die Anzahl der Nächte.
- Wertebereich bestimmen. Welche Werte sind laut Spezifikation zulässig? Im Beispiel: ganze Zahlen von 1 bis 28, beide einschließlich.
- Äquivalenzklassen bilden. Gültige und ungültige Klassen trennen. Im Beispiel vier Klassen: gültig (1 bis 28), ungültig zu klein, ungültig zu groß, ungültig nicht-ganzzahlig (Buchstaben, Kommazahlen, leeres Feld).
- Grenzen bestimmen. Pro Klasse die Grenzwerte markieren und festhalten, ob die Grenze zur Klasse gehört (geschlossen, etwa bei kleiner-gleich) oder nicht (offen, etwa bei kleiner). Im Beispiel sind beide Grenzen geschlossen: 1 und 28 sind gültige Werte.
- Punkte je Grenze festlegen. Welcher Punkt wo liegt, hängt davon ab, ob die Grenze geschlossen oder offen ist. Bei geschlossener Grenze (die Grenze gehört zur Klasse) sitzt der ON-Punkt auf der Grenze und der OFF-Punkt direkt daneben außerhalb. Bei offener Grenze ist es umgekehrt: Der ON-Punkt ist der letzte Wert innerhalb der Klasse, der OFF-Punkt sitzt auf der Grenze. Der IN-Punkt ist ein typischer Wert mitten in der Klasse, der OUT-Punkt ein Wert außerhalb, der kein OFF-Punkt ist. Im Beispiel sind beide Grenzen geschlossen: ON-Punkte 1 und 28, OFF-Punkte 0 und 29, IN-Punkt 14, OUT-Punkte -3 und 90.
- Testfälle ableiten. Aus den Punkten der gewählten Überdeckung entstehen die Testfälle, im Beispiel neun.
Ein kompaktes Beispiel
Zum vollständigen Anzeigen nach rechts wischen oder mit den Pfeiltasten scrollen.
Das Hotel-Buchungsformular aus dem Vorgehen, komplett durchgespielt. Aufenthaltsdauer 1 bis 28 Nächte, alles andere soll eine verständliche Fehlermeldung auslösen:
| Testfall | Eingabe | Punktart | Erwartetes Verhalten |
|---|---|---|---|
| TF-1 | 1 | ON-Punkt der unteren Grenze | Buchung möglich, 1 Nacht |
| TF-2 | 0 | OFF-Punkt der unteren Grenze | Fehlermeldung “Mindestens 1 Nacht” |
| TF-3 | 14 | IN-Punkt | Buchung möglich, 14 Nächte |
| TF-4 | -3 | OUT-Punkt | Fehlermeldung “Mindestens 1 Nacht” |
| TF-5 | 28 | ON-Punkt der oberen Grenze | Buchung möglich, 28 Nächte |
| TF-6 | 29 | OFF-Punkt der oberen Grenze | Fehlermeldung “Maximal 28 Nächte” |
| TF-7 | 90 | OUT-Punkt | Fehlermeldung “Maximal 28 Nächte” |
| TF-8 | ”xx” | Vertreter der ungültigen Klasse “nicht-ganzzahlig” | Fehlermeldung “Bitte ganze Zahl eingeben” |
| TF-9 | (leer) | Vertreter der ungültigen Klasse “nicht-ganzzahlig” | Fehlermeldung “Pflichtfeld” |
Die Eingaben “xx” und das leere Feld fallen aus dem Punkte-Raster heraus. Sie gehören zur ungültigen Klasse “nicht-ganzzahlig”, und die hat keine Ordnung, also auch keine Grenze, auf die sich ON und OFF beziehen könnten. Getestet werden sie trotzdem, als Vertreter ihrer Äquivalenzklasse. Nur eben nicht als Grenzwerte.
Angenommen, im Testlauf liefert TF-2 statt der Validierungsmeldung einen technischen Serverfehler: Die 0 rutscht durch die Oberflächen-Prüfung und erst die Datenbank verweigert den Datensatz. Fachlich “nur” eine falsche Fehlermeldung, technisch ein Hinweis darauf, dass die Eingabevalidierung lückenhaft ist. Ein Test mit einem bequemen Wert aus der Mitte hätte davon nichts gezeigt.
Überdeckung: vereinfacht oder zuverlässig
Zum vollständigen Anzeigen nach rechts wischen oder mit den Pfeiltasten scrollen.
Zwei Überdeckungskriterien sind beim Wertebereichstest gebräuchlich. Die vereinfachte Wertebereichsüberdeckung verlangt pro Grenze einen ON- und einen OFF-Punkt; das deckt sich mit dem 2-Wert-Schema der Grenzwertanalyse aus dem Foundation Level. Die zuverlässige Wertebereichsüberdeckung fordert pro Grenze zusätzlich einen IN- und einen OUT-Punkt; sie kostet ein paar Testfälle mehr und findet dafür auch Fehler, die nicht direkt an der Grenze sitzen.
Gerechnet wird jeweils als Anteil der getesteten an den geforderten Überdeckungselementen. Im Hotel-Beispiel: Die vier Grenzwert-Tests (TF-1, 2, 5, 6) bringen die vereinfachte Überdeckung auf 100 Prozent; für die zuverlässige braucht es zusätzlich IN- und OUT-Punkte, also TF-3, 4 und 7. Derselbe Wert darf dabei mehrere Rollen übernehmen: Die 14 zählt als IN-Punkt für beide Grenzen gleichzeitig, das spart einen Testfall. Für risikoarme Felder genügt die vereinfachte Variante, für geld- oder sicherheitsnahe Validierungen lohnt die zuverlässige.
Stärken und Grenzen
Die Stärke des Verfahrens: Es liefert mit wenigen Testfällen eine begründbare Abdeckung und zielt auf die häufigste Fehlerklasse bei Eingabevalidierungen, die verrutschte Grenze. Jede Eingabe hat eine benennbare Rolle, die Auswahl lässt sich dokumentieren und im Review verteidigen.
Die Grenzen sind genauso klar. Das Verfahren steht und fällt mit der Annahme, dass alle Werte einer Klasse wirklich gleich behandelt werden. Die Implementierung hält sich aber nicht immer an diese Annahme: Ein unauffälliger Wert mitten in der gültigen Klasse kann trotzdem Sondereffekte auslösen, etwa weil er mit einer intern reservierten Konstante kollidiert. Für solche versteckten Sonderfälle braucht es ergänzend Zufallstests oder exploratives Testen. Und bei mehreren zusammenwirkenden Parametern prüft der Wertebereichstest zwar jede Grenze sauber, die Wechselwirkungen zwischen den Parametern aber nicht.
Verwandte Verfahren
Der kombinatorische Test setzt direkt auf der Äquivalenzklassenbildung auf: Pro Parameter werden erst die Klassen gebildet, dann deren Repräsentanten über Parameter hinweg kombiniert. Der Entscheidungstabellentest übernimmt, wenn Schwellwerte Teil verknüpfter Geschäftsregeln sind. Einen Überblick über alle elf Verfahren und ihre Auswahl gibt die Seite Testentwurfsverfahren.