Komponententests

Startseite - Einführung in XP


Innerhalb von XP hat das Testen eine herausragende Bedeutung. Neben den Akzeptanztests, die vom Kunden spezifiert werden, gibt es Komponententests, die von den Programmierern geschrieben werden.

Komponententests werden für verschiedene Zwecke eingesetzt. Spezifiziert werden die Komponententests von den Programmierern im Rahmen des paarweisen Programmierens. Nachdem ein Komponententest implementiert wurde, wird der Quelltext des Systems so lange modifiziert (ergänzt oder verändert), bis der Komponententest erfolgreich abläuft.

Komponententests können einzelne Funktionen testen, aber auch ganze Klassen oder auch Systemmodule (in sich abgeschlossener Teil, meist Objektcode, des Systems). Typischerweise werden Komponententest wie oben beschrieben erstellt. Es gibt aber noch ein anderes Szenario, wo die Komponententests hilfreich sind.

Rahmenwerke für das Testen

Beim Schreiben von Komponententests stellt man sehr schnell fest, dass es ein paar Dinge gibt, die sich immer wiederholen. Es müssen für jeden Test ein paar Testobjekte erzeugt werden, dann müssen die zu testenden Methoden aufgerufen werden und schließlich müssen die Testobjekte restlos aufgeräumt (gelöscht) werden. Letzteres wird zwar von vielen Programmiersprachen wie z.B. Java, Smalltalk und C# automatisch gemacht. Wenn jedoch Datensätze in eine Tabelle eingetragen wurden, werden diese auch von diesen Sprachen nicht automatisch gelöscht.

Eine weitere Gemeinsamkeit, die man sehr schnell herausfindet ist, daß es mehrere Komponententests geben kann, die gegen dieselbe Menge von Testobjekten arbeiten können. In diesem Falle würde es natürlich wenig Sinn machen, nach jedem einzelnen Tests alle Testobjekte aufzuräumen, und für den nächsten Test die gleichen Testobjekte wieder zu erzeugen.

Weiterhin ist es sehr günstig, wenn man sowohl einzelne Tests als auch Gruppen von Tests ausführen kann. Und noch schöner wäre es, wenn man dies sowohl von einer grafischen Benutzerschnittstelle als auch von der Kommandozeile (Shell) aus aufrufen könnte.

Für alle diese Fragen gibt es eine preiswerte Antwort: das xUnit Rahmenwerk, wobei das "x" für verschiedene Sprachen steht. JUnit ist in das Rahmenwerk in Java geschrieben, SUnit das für Smalltalk, NUnit für Microsoft .NET-Anwendungen, HTTPUnit für HTML-Anwendungen und so weiter. Ein Rahmenwerk für C# (englisch!) kann von dieser Website heruntergeladen werden.

Wenn man also Komponententests schreibt, sollte man also in jedem Fall die Verwendung eines dieser Rahmenwerke in Betracht ziehen.

Komponententests als Regressionstest

Hin und wieder kommt es vor, daß ein Fehler vom Anwender entdeckt wird (auch XP ist hier nicht perfekt!). In diesem Falle wird die Behebung dieses Fehlers als separate Aufgabe für die nächste Iteration eingeplant.

Wichtig ist dann, daß dann zunächst ein Komponententest implementiert wird, der den Fehler reproduziert. Dieser Komponententest hätte eigentlich vom Programmierpaar implementiert werden müssen, aber wer von uns ist schon perfekt.

Nachdem der Komponententest implementiert ist - der dann natürlich fehlschlägt - wird wieder beim normalen Vorgehen der Quelltext solange modifiziert, bis der Komponententest funktioniert. Der veränderte Quelltext wird dann wieder normal integriert und steht dann sofort zur Verfügung.

Tipps

  • Auch Komponententests werden refaktoriert
  • Komponententests haben auch die Funktion als Regressionstest
  • Es gibt niemals zuviele Komponententests (sofern sauber refaktoriert wird!). Mit anderen Worten: Lieber einen Komponententest zu viel als einen Komponententest zu wenig.

Komponenten-tests als Regressions-tests
Tipps
Startseite
Suchen
Index
Links
Über diese Site
English version
© Copyright 2001-2002 Manfred Lange, Alle Rechte vorbehalten. Nutzungsbedingungen.
Letzte Änderung dieser Seite: Montag, 14. Januar 2002