In diesem Artikelserie wird beschrieben, wie ein Äquivalenzklassentest zur Durchführung des Formular- und Oberflächentests verwendet werden kann. Es wird die grundsätzliche Methodik des Äquivalenzklassentests und dessen praktische Anwendung beim Formulartest beschrieben. Weiterhin wird eine Verfeinerung des Äquivalenzklassentest, nämlich die Grenzwertanalyse beschrieben.
sponsored by smartwebapps.de
1.Wie entwerfe ich einen Äquivalenzklassentest
1.1 Was sind Äquivalenzklassen?
Beispiel: Unser System ist ein Tabakautomat. Erst ab 16 Jahren dürfen Benutzer Tabak von Tabakautomaten beziehen.
Man könnte nun bei einem Test anfangen und jedes Alter zu prüfen, um zu sehen, ob der Tabakautomat Zigaretten ausgibt. Dies ist jedoch sehr umständlich und zeitaufwändig. Daher wurde der Äquivalenzklassentest entwickelt und im ISTQB-Lehrplan unterrichtet.
Eine Äquivalenzklasse ist eine Menge von möglichen Eingaben. Die Idee ist nun, dass sich das Testobjekt bei allen Elementen (Repräsentanten), die derselben Äquivalenzklasse angehören, gleich verhält. Es ist daher bei einem Test ausreichend einen Repräsentanten pro Äquivalenzklasse zu verwenden.
Beispiel: In unserem Beispiel gibt es 2 Äquivalenzklassen:
1. Alter von 0 bis unter 16 (0<=Alter<16) also maximal 15 Jahre 11 Monate und 30 Tage
2. Alter 16 und höher (Alter>=16)
Es hat nun beispielsweise den gleichen Effekt, wenn ich das Alter 1 statt der Alterswerte 1 bis 15 (inkl. Berücksichtigung der Monate) teste. Für die 2. Äquivalenzklasse kann ich beispielsweise 17 als Repräsentanten verwenden. Wenn ich jedes Alter getestet hätte, wäre die für den Test benötigte Zeit erheblich größer.
Übersicht der Äquivalenzklassen:
Äquivalenzklasse | 1 | 2 |
Wertebereich | 0<=Alter<16 | Alter>=16 |
Repräsentant im konkreten Testfall | 1 | 17 |
1.2 Wie bilde ich Äquivalenzklassen?
Im Beispiel unter 1.1 wurden bereits die Äquivalenzklassen gebildet. Folgende Schritte zur Bildung von Äquivalenzklassen (gerade bei umfangreichen Klassensystemen) haben sich als allgemein bewährt erwiesen.
Hierbei verwende ich folgendes Beispiel zur konkreten Anwendung beim Test eines Formulars:
Nummer | Feldname | Vorbelegung / Default | Datentyp / Einheit / Format | Feldart | Werte-bereich |
12345 | Name | Freitextfeld;Bis zu 180 Zeichen;Buchstaben, Ziffern und Sonderzeichen | Verpflichtend |
1.2.1 Vorgehensweise
Die folgende Tabelle zeigt Schritt für Schritt das Vorgehen bei der Ableitung von Äquivalenzklassen. Daraus wurde auch bereits eine Testfrage abgeleitet.
Beschreibung | Beispiel | |||||||||||||||||
Schritt 1 | Basisklasse ermitteln
|
alle Basisklassen des Beispiels:
|
||||||||||||||||
Schritt 2 | Klassen verfeinern (wenn möglich) | Hier kann die Klasse Nr. 1 verfeinert werden.
|
||||||||||||||||
Schritt 3 | Repräsentant auswählen | Hier wird je Äquivalenzklasse ein Wert ermittelt.
|
1.2.2 Äquivalenzklassenbaum
Er ergibt sich folgender Äquivalenzklassenbaum:
1.2.3 Konsolidierung der Äquivalenzklassen
Man stellt jedoch fest, dass man in der Praxis die Äquivalenzklassen 1.1, 1.2 und 1.3 zusammenfassen kann, indem man Testfälle erstellt, die sowohl Buchstaben, Zahlen und Sonderzeichen enthalten.
Daher können folgende beispielhaften Testfälle abgeleitet werden
Testfall | Wert für Feld | gültige/ungültige ÄK |
1 | (leer) | ungültig |
9 | 100 Buchstaben, Sonderzeichen und Zahlen | gültig |
10 | 181 Zeichen | ungültig |
Im nächsten Teil der Serie wird die Grenzwertanalyse genauer betrachtet.
Hallo Stefan,
erst mal Danke für die ausführlichen und verständlichen Beispiele.
Kann es jedoch sein, dass du bei deiner Klasse 1 di eBdeingung falsch angegeben hast?
Dort heißt es unter „Wertebereich“: 0<=Anzahl Zeichen<=180, schließt also als unteren Rand die 0 mit ein.
Müsste das nicht richtig "0<Anzahl Zeichen<=180" heißen?
Gruß,
Thomas
Hallo Thomas,
Danke für die Rückmeldung! Ich habe jeweils das „=“ entfernt, welches sich eingeschlichen hatte.
Viele Grüße,
Stefan