Die hilfreichsten Kundenrezensionen
|
|
24 von 26 Kunden fanden die folgende Rezension hilfreich:
5.0 von 5 Sternen
Nicht nur für Agilisten, 23. Mai 2003
Test-getriebene Entwicklung hat sich aus den vorausgehenden Tests von Extreme Programming entwickelt, setzt aber prinzipiell keine agile Vorgehensweise im Projekt voraus. Dadurch ist sie auch einsetzbar, wenn das Projekt prinzipiell konventionell durchgeführt wird, zielt aber prinzipiell nur auf die Unit-Tests ab. Bei Test-getriebener Entwicklung wird - wie der Name schon sagt - die Entwicklung durch automatisierte Tests getrieben, indem neuer Code nur dann geschrieben wird, wenn ein automatisierter Test fehlgeschlagen hat. Außerdem wird darauf geachtet, dass duplizierter Code durch Refactoring eliminiert wird. Diese beiden einfachen Regeln erzeugen ein komplexes Verhalten von Individuen und Gruppen: *) Die Entwickler müssen Tests schreiben, bevor sie die Implementierung schreiben. Dadurch wächst der Entwurf (und somit die Anwendung) organisch. *) Die Entwickler müssen die Tests selbst schreiben, weil sie nicht ständig darauf warten können, dass das die Tester machen. *) Die Entwicklungsumgebung muss rasche Antworten liefern, damit Änderungen schnell durchgeführt werden können. *) Der Entwurf muss aus vielen hoch-kohäsiven und lose gekoppelten Komponenten bestehen, weil er dadurch leicht testbar wird. Der Entwickler geht bei Test-getriebener Entwicklung in den folgenden drei einfachen Schritten vor: *) Rot: Schreibe einen kleinen Test, der noch nicht funktionieren kann (und sich eventuell auch noch gar nicht übersetzen lässt). *) Grün: Mache, dass der Test so schnell wie möglich gut geht (auch wenn du dazu Sünden begehen musst). *) Refactoring: Eliminiere duplizierten Code, der im zweiten Schritt eingeführt wurde. Diese Vorgehensweise hat den psychologischen Effekt, dass sich der Entwickler auf kleine Schritte fokussieren kann und das Ziel (sauberer Code, der funktioniert) nicht aus den Augen verliert. Wenn bisher durch erhöhten Stress weniger Zeit zum Testen geblieben ist, dadurch wiederum weniger getestet wurde, hat das sehr leicht zu einem Teufelskreis geführt, mit immer mehr Unsicherheit und Stress. Test-getriebene Entwicklung hingegen führt dazu, dass der Entwickler bei erhöhtem Stress einfach öfters die bereits vorliegenden automatisierten Tests durchführt. Dadurch bekommt er unmittelbar die Rückmeldung, dass ohnehin noch alles funktioniert, was den Stress reduziert und die Fehlerwahrscheinlichkeit sinken lässt. Die ersten beiden Schritte sind mit den Farben »rot« und »grün« eingeleitet, weil die Tests typischerweise mit Hilfe eines Test-Frameworks geschrieben werden bei dem Fehler rot angezeigt werden. Test-getriebene Entwicklung bezieht sich allerdings nur auf die Tests, die der Entwickler selbst durchführt, d.h. auf die Unit-Tests, deren Umfang eventuell weiter gesehen wird als bei rein konventioneller Vorgehensweise. Funktionale Tests durch eigene Tester bzw. Systemtests werden nicht eigens adressiert aber auch nicht ausgeschlossen. Kent Beck zeigt dem Leser anhand eines langen Beispiels, wie er arbeitet, und gibt anschließend Patterns zum Schreiben von Tests, Code und Testframeworks. Ein weiterer Vorteil des Buchs ist, dass man es an einem Tag lesen kann.
|
|
|
13 von 14 Kunden fanden die folgende Rezension hilfreich:
4.0 von 5 Sternen
Dieses Buch infiziert mit dem "Test-First"-Virus!, 10. Januar 2004
In seinem Buch "Test-Driven Development" (TDD) beschreibt Kent Beck den "Test-First"-Ansatz anhand von zwei großen Real-World-Beispielen: einer Währungs-Klasse in Java und einem xUnit-Test-Framework in Python.Dabei führt Kent Beck den Leser in unterhaltsamer, gut verständlicher Sprache durch die Beispiele. Er geht dabei in sehr kleinen, leicht nachzuvollziehenden Schritten vor, anhand derer der Geist des Test-First-Programming sehr deutlich wird. Zeitweilig wirkt diese Vorgehensweise aber auch etwas langatmig, und einige wenige Design-Entscheidungen wirken sehr willkürlich und an den Haaren herbeigezogen. Die Beispiele sind bei brauchbaren Vorkenntnissen in der jeweiligen Sprache (Java bzw. Python) gut zu verstehen. Wer die Sprachen jedoch bisher noch nicht benutzt hat, muss sich auf etwas anstrengendere Lektüre gefasst machen - so der von Beck angepriesene "Nebenher-Python-Lernen-Effekt" ist bei mir jedenfalls nicht aufgetreten. Abgerundet wird das Buch durch ein großes Kapitel, welche Patterns TDD benutzt werden: Entwicklungsstrategien, Teststrategien, Design Patterns, Refactoring und andere. Dieses Kapitel ist das Glanzstück dieses Buches. Generell lässt das Buch den "Test-Infected"-Virus überspringen und vermittelt die beim TDD angewandten Strategien sehr anschaulich. Es bietet sich daher als ergänzende Lektüre zusätzlich zu einer Einführung in TDD wunderbar an.
|
|
|
16 von 18 Kunden fanden die folgende Rezension hilfreich:
1.0 von 5 Sternen
keine substanz, 18. November 2007
Das Buch sollte die praktische Anwendung von testgetriebener Entwicklung an Beispielen zeigen. Ich hatte das Buch gekauft in der Hoffnung mich damit ueberzeugen zu lassen, leider hat dies nicht geklappt.
Das Buch beginnt mit einem ausfuehrlichen, aber nahezu trivialen Beispiel, dem Umrechnen von Waehrungen. Daran erklaert es zwar anschaulich den Ansatz, Problem ist aber dass das Problem so einfach ist dass man den ganzen Ueberbau kaum braucht. Die gesamte Endloesung ist so klein dass sie problemlos auf eine Bildschirmseite passt, was bleibt ist lediglich die Beschreibung des Prozesses.
In einem zweiten Abschnitt nimmt er sich ein etwas komplexeres Beispiel in einer anderen Programmiersprache. Dummerweise ist das Beispiel IMHO sehr schlecht gewaehlt, es geht ums bootstrapping von einer xUnit Implementierung, was die Beschreibung unnoetig kompliziert macht (z.B. TestCaseTest als Test fuer eine TestCase klasse mit der man Tests beschreiben kann). Insgesamt ist aber auch dieses Beispiel wieder sehr einfach und kann insgesamt nicht ueberzeugen.
Der dritte und letzte Abschnitt widmet sich der Diskussion und ist wahrscheinlich noch der Beste, waeren da nicht zwei voellig unmotivierte Kapitel zu Design Pattern und Refactoring. Diese Kapitel sind zu kurz fuer Leute die diese Konzepte noch nicht kennen und voellig unnuetz fuer Leute die diese Konzepte kennen. Ein Zusammenhang zur testgetriebenen Entwicklung wird nicht wirklich hergestellt.
Nach dem Lesen des Buches bleiben mehr offene Fragen als vorher. Es gibt keine Anhaltspunkte wie man den Ansatz skaliert wenn man etwas kompliziertes entwickelt als mathematische Algorithmen. Spannende Fragen zu komplexen Strukturen, Datenbankanbindungen, Oberflaechen, Nutzerinteraktion o.ae. werden in den letzten Kapitel kurz erwaehnt aber weitgehend offen gelassen. Das Buch liefert leider wirklich nicht mehr als zwei einfache(!) Beispiele.
Das Buch ist ziemlich duenn und sehr lachs geschrieben, mit staendigen Metakommentaren. Geschackssache. Leider staendig Behauptungen ohne jedwede Belege (wie auch praktisch keinerlei weiterfuehrende Literatur angegeben ist). Ganz selten wird mal eine Fallstudie erwaehnt. Es wirkt alles wie eine fixe Idee ohne Substanz, obwohl ich eigentlich testgetriebende Entwicklung gar nicht so eingeschaetzt haette. Buecher wie Code Complete sind hier um Welten besser geschrieben.
Fazit: Nicht empfehlenswert.
|
|
|
Die neuesten Kundenrezensionen
|