Unit-Testing

Einleitung

Wenn nachstehend die Rede von Unit-Testing ist, dann ist damit das von Kent Beck in eXtreme Programming aufgebrachte Unit-Testing gemeint.
Normalerweise testen Entwickler nicht sehr gern und wenn dann nicht wirklich strukturiert. Ein Entwickler will Code schreiben (eben entwickeln) und er betrachtet das Testen, das normalerweise einen eher manuelle Akt darstellt unter dem Blickwinkel "wenn's denn sein muss" bzw. "so wenig wie möglich aber so viel wie's jetzt halt unbedingt braucht". Das ist teilweise auch verständlich: Der Entwickler schreibt Code um Abläufe möglichst zu automatisieren und zu vereinheitlichen - und jetzt soll gerade er nur halbautomatisch arbeiten, und dies erst noch mit verschiedenen Mitteln (z.B Oberfläche, Reports, etc.).

Akzeptanz der Entwickler

Ganz anderes sieht die Akzeptanz des Unit-Testings bei den Entwicklern aus. OK; nicht unbedingt am ersten Tag - doch die Erfolge stellen sich sehr rasch ein. Weshalb? Der Entwickler schreibt die Unit-Tests in seiner gewohnten Arbeitsumgebung, in derjenigen Programmiersprache in welcher er auch den Code schreibt (... er schreibt einfach Code und das macht er ja gern ...) und kann die Tests zudem jederzeit automatisiert ablaufen lassen und auch wiederverwenden.

Unit-Testing und Refactoring

Unit-Testing ist zwar kein Allheilmittel, aber erhöht das Sicherheitsgefühl jedes Programmierers enorm. Dank Unit-Testing können umfangreiche Refactorings vorgenommen werden, ohne abends mit der Unsicherheit nach Hause gehen zu müssen ob wohl alles noch funktioniert was vor dem Refactoring" funktioniert hat? Unit-Testing beantwortet Ihnen diese Fragen sofort; sobald sie den nächsten Testdurchlauf gestartet haben.

Kosten des Unit-Testing

Ich höre immer wieder, dass mit dem Unit-Testing hohe Kosten verbunden seien. Ja, der Programmierer erzeugt im Durchschnitt doppelt soviel Code wie bisher (d.h. er schreibt soviel Code für die Testfälle, wie er auch für die Applikation selbst schreibt). Was aber immer wieder vergessen wird, ist das der Programmierer (und ich glaube dass das jeder Programmierer macht) seinen Code irgendwie testet.
Normalerweise sieht das so im besten Fall so aus, dass der Programmierer separate Formulare von welchen aus er einzelne Funktionen mit Daten "füttert" und das Ergebnis dann halbautomatisch auswertet. Aber auch das braucht ja Zeit, und diese Zeit entspricht nach meiner Erfahrung ungefähr der Zeit, welche für die zusätzliche Menge an Code für das Unit-Testing investiert werden muss.