empros gmbh - process & information management services
1009-chat Simplicity is the most difficult thing to secure in this world; it is the last limit of experience and the last effort of genius.

- George Sand

Testgewohnheit

von Sascha Frick (Oktober 02)

Bitte keine schlechten Nachrichten

Wie bereits in einem früheren denkmal! Beitrag festgestellt wurde, ist das systematisches Testen eine wichtige Tätigkeit bei der Anwendungsentwicklung. Egal, welches Vorgehensmodell für ein Projekt gewählt wird, taucht in jedem Projektplan irgendwo der Punkt Tests ganz selbstverständlich auf.

Unbestritten ist aber auch die Tatsache, dass systematisches Testen in den meisten Projekten dennoch ein Mauerblümchendasein fristet. Tests werden als etwas mühsames empfunden und nicht selten mit Hinweisen wie „Wir testen, wenn wir Zeit dazu haben“ beiseite gewischt. Der Test als Überbringer der schlechten Nachrichten ist unbeliebt und es scheint, dass die Entwickler ihn ebenso fürchten, wie der Teufel das Weihwasser.

Grau ist alle Theorie...

Die Literatur zum Thema „Testen“ ist reichhaltig und vielfältig. Autoren wie z.B. Binder haben umfangreiche Bücher zum Thema geschrieben, die dem interessierten Entwickler alles zu diesem Thema verraten. Dabei bestätigt aber gerade dieses Buch eines der häufigsten Vorurteile: Testen ist eine wenig spannende, mühselige und aufwendige Tätigkeit. Nur wenige Bücher und Fachvorträge nähern sich dem Thema mit einer gesunden Portion Pragmatismus (Eine löbliche Ausnahme in der Testliteratur ist das lesenswerte Buch von Johannes Link zum Thema Unit Tests und dem Test First Ansatz.).

Denn obwohl theoretische Überlegungen durchaus ihren Platz haben, wirkt die akademische Wucht, mit der sie vorgetragen werden auf den praxisorientierten und unter Zeitdruck stehenden Entwickler nicht selten belehrend und einschüchternd. Und damit tragen Autoren wie Binder ungewollt dazu bei, dass der Praktiker sich mit dem Hinweis „Das ist ja doch nur Zeitverschwendung!“ vom wichtigen Thema Testen abwendet.

... Und grün des Lebens goldner Baum

Braucht es also lediglich eine pragmatischere Behandlung des Themas, um die Entwicklergemeinde auf breiter Basis zum systematischen Testen zu bewegen? Ja und nein!

Ja insofern, als dass im Rahmen der Ausbildung dieses wichtige Thema viel praxisorientierter und zielgerichteter unterrichtet werden müsste. Theoretische Abhandlungen zu Testabdeckung, Fehlervarianz etc. sind zwar interessant, für den späteren praktischen Einsatz aber eher zweitrangig. Viel wichtiger wäre das konsequente Einüben von testorientiertem Verhalten im Rahmen der Ausbildung. Gerade beim Testen muss man den Nutzen und die Vorzüge des Testens wiederholt selber erfahren und erleben!

Und das führt uns direkt zum Nein: Gerade im Umfeld von ExtremeProgramming hat das Thema Testen eine enorme Popularisierung in der Entwicklergemeinde erfahren. Jeder und jede kann sich heute im Internet in ein zwei Stunden das nötige Wissen aneignen, um beispielsweise das systematische Unit-Testing in den Grundzügen anhand von praxisnahen Beispielen zu erlernen.

Dennoch verzichtet eine Mehrzahl der Entwickler auf den Einsatz von Unit-Testing als festen Bestandteil ihrer Arbeit. Man könnte daher geneigt sein, diesen Entwicklern Ignoranz („Regressives Testen? Kann man das essen?“), arrogante Selbstüberschätzung („Ich brauche nicht zu testen, ich denke und implementiere fehlerfrei!“) oder schlicht Faulheit („Testen ist mir zu anstrengend, meine Software reift beim Kunden“) unterstellen. Und auf einen Teil der Testmuffel mögen diese Vorwürfe sogar zutreffen. Doch das Problem reicht tiefer!

Die Macht der Gewohnheit

Jeder, der schon einmal versucht hat, vertraute und liebgewonnene (oder auch verhasste) Gewohnheiten aufzugeben, kennt die Schwierigkeiten, die guten Vorsätze in die Tat umzusetzen. Nicht umsonst sagt ein Sprichwort „Gute Vorsätze sind wie Aale: Leicht zu fassen und schwierig zu halten.“ Selbst wenn ein Entwickler intellektuell soweit kommt, systematisches regressives Testen als wertvolle Möglichkeit zur Qualitätsverbesserung und Zeitersparnis zu betrachten, hält ihn die Macht der Gewohnheit in ihrem Bann und verhindert eine bleibende Verhaltensänderung.

Dahinter verbirgt sich eine der zentralen Fragestellungen, die Pädagogen und Psychologen immer wieder beschäftigt:

Wie sorgen wir dafür, dass neues Wissen handlungswirksam wird, d.h. wie können wir im Falle des Testens dafür sorgen, dass der Entwickler die für ihn neue und noch nicht zur Gewohnheit gewordene Technik in seinem Alltag beständig anwendet?

Oder anders gesagt, wie schaffen wir es, die Gewohnheit nicht zu testen durch die Gewohnheit zu ersetzen konsequent zu testen?

Wir können z.B. dafür sorgen, dass das Umfeld eine anspornende Atmosphäre bietet, die Testen als wertvolle Tätigkeit anerkennt und den künftigen „Testfanatiker“ für sein Verhalten belohnt. Die Belohnung ist dabei keineswegs materieller Art; Sie können also Süssigkeiten, Popcorn und ein Nachtessen bei Kerzenlicht mit dem Chef getrost von ihrer Belohnungsliste streichen.

Die geeignete Belohnung liegt in der Erfahrung der positiven Effekte, die Testen auf die Qualität der eigenen Arbeit ausübt und dem Ansporn durch Gleichgesinnte, die z.B. ein Zurückfallen in die alte Gewohnheit nicht zu testen durch ihr eigenes Verhalten verhindern. Gerade dieser letzte Punkt ist kritisch:

Nur wenn ein Umfeld geschaffen wird, indem Testen eine Selbstverständlichkeit und Nichttesten verpönt ist, wird es zu einer dauerhaften Verhaltensveränderung kommen können.

Ein erfahrener Coach, der mit gutem Beispiel vorangeht kann hier viel bewirken und dürfte eine der effizientesten Wege sein, um Unit-Testing in einem Team einzuführen. Einerseits liefert er durch sein eigenes Tun den besten Beweis für die Nützlichkeit und Notwendigkeit des Testens, und andererseits kann er unterstützend und korrigierend eingreifen, sollten die alten Gewohnheiten doch wieder einmal die Überhand gewinnen. Und genau wie während einer praxisorientierten Ausbildung, in der das Testen konsequent thematisiert und eingeübt wird, lernt der Entwickler unter Anleitung und Ansporn durch den Coach, Schritt für Schritt Unit-Tests zum festen Bestandteil seiner Entwicklertätigkeit zu machen.

Die Erfahrung zeigt, dass sich das Testverhalten in einem Team durch ein Coaching, das sich nicht zwingend auf die Unterstützung zur Verankerung des Testgedankens beschänken muss, schon nach kurzer Zeit sichtbar zum Besseren verändert. Und so gilt auch für das Unit-Testing Erich Kästners Ausspruch „Es gibt nichts Gutes, ausser man tut es!“