Unit Testing ist das Prüfen einzelner Funktionen für sich, ohne Datenbank und ohne Netz. Ein solcher Test ruft ein Stück Code mit festen Werten auf und vergleicht das Ergebnis mit dem erwarteten.
- Unit Testing
Das Prüfen einzelner Funktionen für sich, ohne Datenbank und ohne Netz.
Beispiel: „Das Unit Testing der Preisberechnung deckte den Fehler bei Rabatten über hundert Prozent auf.“Auf Deutsch Modultest oder Komponententest. Unit meint die kleinste prüfbare Einheit, also meist eine Methode oder eine Klasse.
Abgrenzung zum Integrationstest: Dieser prüft mehrere Teile im Zusammenspiel. Ein Unit Test ersetzt alles Äußere durch Platzhalter.
Was einen guten Unit Test ausmacht
Drei Eigenschaften. Er läuft in Millisekunden, er liefert bei derselben Eingabe immer dasselbe Ergebnis, und wenn er fehlschlägt, steht im Namen schon, was nicht stimmt.
Dazu gehört, dass er genau eine Sache prüft. Ein Test mit zwölf Behauptungen sagt im Fehlerfall, dass irgendetwas an der Rechnung falsch ist, und nicht, was.
Wo die Grenze des Unit Testing liegt
An allem, was außerhalb der Funktion passiert. Dass eine Abfrage die richtigen Zeilen findet, dass eine E-Mail versandt wird, dass ein Formular im Browser abschickt: Das prüfen Unit Tests nicht, auch nicht in großer Zahl.
Deshalb ist eine Anwendung mit tausend Unit Tests nicht automatisch geprüft. Die Fehler, die Nutzer treffen, sitzen meist in den Übergängen, siehe End-to-End-Test.
Wie viele Unit Tests sinnvoll sind
So viele, wie Logik vorhanden ist. Berechnungen, Umwandlungen, Entscheidungen mit mehreren Verzweigungen verdienen je einen Test pro Fall; eine Methode, die einen Wert weitergibt, verdient keinen.
Als Form hat sich die Pyramide durchgesetzt: viele schnelle Tests einzelner Funktionen, einige im Zusammenspiel, wenige durch die Oberfläche. Von unten nach oben steigen Laufzeit und Aufwand.