© DrHitch/Shutterstock.com
jQuery Mobile

1 Unit Test und testgetriebene Entwicklung


1.1 Unit Tests

Grundlegendes

Auch wenn jeder schon einmal von Unit Tests gehört hat und mittlerweile beinahe für jede Programmiersprache die Möglichkeit besteht, auf mehr oder weniger einfache Weise Unit Tests zu erstellen, so gibt es doch die unterschiedlichsten Auffassungen, was Unit Tests sind und wie man sie strukturiert.

Für die Verwendung in diesem Buch möchte ich, wie in Abbildung 1.1 gezeigt, die immer wieder auftauchenden Begriffe Paket, Klasse und Unit definieren und beschreiben, was darunter zu verstehen ist.

Paket

Ein Paket ist als logische Klammer um Klassen mit dem gleichen Aufgabenbereich zu verstehen, in Abbildung 1.1 sind u. a. die Pakete Userinterface, Business und Persistence zu sehen, die die Aufgaben für Darstellung, Businesslogik und Datenhaltung beinhalten.

Klasse

Eine Klasse ist eine Funktion, die einen Container für weitere Funktionen zur Erfüllung von Aufgaben im Kontext des beinhaltenden Pakets darstellt. Mir ist bewusst, dass es das Konstrukt einer Klasse in JavaScript nicht gibt, allerdings ermöglicht uns diese Metapher eine begriffliche Unterscheidung zu den Funktionen, die sie beinhalten.

Unit

Eine Unit oder auch ein Modul ist die kleinste sinnvoll testbare Einheit. In den meisten Fällen werden es die Funktionen der Klassen sein.

Dies im Hinterkopf behaltend, möchte ich für einen Unit Test folgende Definition einführen:

„Ein Unit Test testet einen kleinen Teil einer Anwendung, indem eine Annahme des Ergebnisses einer Funktion mit dem tatsächlichen Ergebnis verglichen wird.“

Abb_1_1.png

Abbildung 1.1: Begriffsdefinition Unit Testing

Wie klein dieser getestete Teil der Anwendung ist, wird unterschiedlich gesehen. In der Regel ist es so, dass pro Unit Test eine Funktion/Funktionalität getestet wird. Wichtig ist es, hierbei nicht nur den Gut-Fall (Happy Case) zu testen, sondern nach Möglichkeit auch das Verhalten des Quellcodes bei Fehlbedienung.

Wenn wir z. B. eine Funktion haben, die einen Parameter anzahl erwartet, sollte auch getestet werden, was passiert, wenn anzahl eine Zeichenkette ist, die nicht in eine Zahl umgewandelt werden kann. Auch zu testen ist, was passiert, wenn ein undefined als Parameter übergeben wird.

Genauso wichtig ist es, Randbereiche abzudecken. Nehmen wir an, der Parameter aus dem vorherigen Beispiel darf zwischen 0 und 100 liegen, dann benötigen wir Tests für den validen Wertebereich, aber auch Tests für Werte außerhalb dieses Bereichs.

Wie oben schon erwähnt, ist es sinnvoll, die Unit Tests zu strukturieren. Dies kann innerhalb d...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang