Äquivalenzklassenbildung

Die Äquivalenzklassenbildung im Buch Basiswissen Softwaretest (Kapitel 5.1.1) wird anhand der Berechnung einer Rabattstaffelung beim Kauf eines neuen Autos erklärt. In Abhängigkeit zum Kaufpreis erhält der Käufer unterschiedliche Preisnachlässe.

Als Testobjekt zur Abbildung des beschriebenen Sachverhaltes wurde die Klasse DiscountCalculator erstellt. Die Methode calculate(double price) berechnet den rabattierten Preis. Als Parameter wird der nicht-rabattierte Preis übergeben.

Der Äquivalenzklassentest erfolgt durch den Unittest EquivalencePartitioningTest. Für jede Äquivalenzklasse existiert eine eigene Testmethode. Wird ein ungültiger Wert als Preisparameter übergeben, so erfolgt eine Ausnahmebehandlung durch das Werfen einer IllegalPriceException. Die folgende Tabelle zeigt die Zurodnung zwischen Testmethode, Äquivalenzklasse und Repräsentant. Als maximal zulässiger Preis MAX_PRICE wurden 1.000.000 gesetzt.

TestmethodeÄquivalenzklasse Repräsentant 
testNoDiscount() vEC-1: 0 <= price < 15000  14.500
testDiscount5Percent() vEC-2: 15000 <= price <= 20000  16.500
testDiscount7Percent() vEC-3: 20000 < price < 25000  24.750
testDiscount8Dot5Percent() vEC-4: price >= 25000  31.800
testNegativePrice() iEC-1: price < 0 -4.000
testPriceTooBig() iEC-2: price > MAX_PRICE 1.500.800
testPriceIsNaN() iEC-3: price is NaN (not a number) NaN

Exkurs: Specification by Example

Die oben dargestellte Tabelle eignet sich sehr gut, um diese mit der Methode "Specification by Example" umzusetzen. Dahinter verbirgt sich die Beschreibung der Testfälle in Prosa, welche dann direkt interpretiert und ausgeführt werden.