Teil 3: Testen mit Faktor-IPS

Konzeptionelle Grundlagen

In JUnit werden Testdaten i.d.R. unmittelbar im Java-Sourcecode erzeugt. Es gibt keine Trennung zwischen der Testlogik und den Testdaten. Das führt dazu, dass die gleiche Testlogik für unterschiedliche Testdaten nicht wiederverwendbar ist. Die Definition von Testfällen verlangt Java-Kenntnisse und ist dadurch auf Java-Entwickler beschränkt.

Für fachliche Funktionen wie die Beitragsberechnung ist die Trennung von Testdaten und Testlogik von erheblichem Vorteil, da es i.d.R. sehr viele Testfälle gibt, die sich nur bzgl. der Testdaten unterscheiden. Die folgende Tabelle verdeutlicht dies anhand von drei Testfällen für die Beitragsberechnung der Hausratversicherung.

Parameter Testfall 1 Testfall 2 Testfall 3

Produkt

HR-Kompakt 2019-07

HR-Optimal 2019-07

HR-Optimal 2019-07

Zusatzdeckungen

HRD-Fahrraddiebstahl 2019-07
HRD-Ueberspannung 2019-07

HRD-Fahrraddiebstahl 2019-07
HRD-Ueberspannung 2019-07

HRD-Ueberspannung 2019-07

Zahlweise

jährlich

jährlich

jährlich

Postleitzahl

81673

81673

81673

Versicherungssumme

60.000 EUR

60.000 EUR

100.000EUR

Erwartete Ergebnisse

NettobeitragZw

196,00 EUR

208,00 EUR

123,60 EUR

Der Ablauf dieser Testfälle ist der gleiche:

  1. Es wird ein Hausratvertrag auf Basis des angegebenen Produktes mit den angegebenen Zusatzdeckungen erzeugt und die Attribute Zahlweise, Postleitzahl und Versicherungssumme mit den Werten aus dem Testfall belegt.

  2. Es wird die Beitragsberechnung ausgeführt. Hierzu wird die entsprechende Methode am Hausratvertrag aufgerufen.

  3. Der NettobeitragZw des Hausratvertrags wird mit dem im Testfall hinterlegten erwarteten Wert verglichen.

In Faktor-IPS wird im Gegensatz zu JUnit die Testlogik von den Testdaten getrennt, indem man zwischen Testfalltypen und Testfällen unterscheidet. Ein Testfalltyp definiert den Ablauf und die Struktur der Testdaten, ein Testfall ist eine Ausprägung eines Testfalltyps mit konkreten Testdaten. Die Testdaten beschreiben alle notwendigen Eingangswerte für den Test und die erwarteten Ergebnisse.

testfaelle uml
Figure 1. Testfälle als Instanzen vom Testfalltyp BeitragsberechnungHausratTests

Im objektorientierten Sinn entspricht der Testfalltyp einer Klasse und der Testfall einer Instanz eines Testfalltypen. Diese Aufteilung unterstützt auf einfache Weise eine Rollenverteilung bei der Testentwicklung. Testfalltypen werden vom Softwareentwickler bereitgestellt. Sie erstellen die Struktur und programmieren die Testlogik. Anwender der Fachabteilungen können nun auf Basis der Testfalltypen konkrete Testfälle mit den Testdaten erfassen.