Was Sie als Workflow bezeichnen, ist meiner Meinung nach nicht der Spirit of TDD.
Die Inhaltsangabe von Kent Becks Buch bei Amazon lautet:
Testgetriebene Entwicklung soll ganz einfach Angst in der Anwendungsentwicklung beseitigen.Während einige Ängste gesund sind (oft als ein Gewissen angesehen, das Programmierer auffordert, "vorsichtig zu sein!"), Glauben die Autoren, dass Nebenprodukte von Ängsten vorsichtige, mürrische und nicht kommunikative Programmierer sind, die konstruktive Kritik nicht aufnehmen können. Wenn sich Programmierteams für TDD entscheiden, sehen sie sofort positive Ergebnisse. Sie beseitigen die Angst, die mit ihrer Arbeit verbunden ist, und sind besser gerüstet, um die schwierigen Herausforderungen zu meistern, denen sie gegenüberstehen. TDD beseitigt vorläufige Merkmale, lehrt Programmierer zu kommunizieren und ermutigt Teammitglieder, Kritik zu suchen. Doch auch der Autor gibt zu, dass Mürrischkeit individuell erarbeitet werden muss! Kurz gesagt, die Prämisse hinter TDD ist, dass Code kontinuierlich getestet und überarbeitet werden sollte.
Praktisches TDD
Formale automatisierte Tests, insbesondere Unit-Tests. Jede Methode jeder Klasse ist genauso schlecht wie ein Anti-Pattern und es wird nichts getestet. Es ist ein Gleichgewicht zu haben. Schreiben Sie Unit-Tests für jede setXXX/getXXX
Methode, sie sind auch Methoden!
Auch Tests können helfen, Zeit und Geld zu sparen. Vergessen Sie jedoch nicht, dass die Entwicklung Zeit und Geld kostet und dass sie Code sind, sodass die Wartung Zeit und Geld kostet. Wenn sie aufgrund mangelnder Wartung verkümmern, werden sie mehr zu einer Verbindlichkeit als zu einem Vorteil.
Wie alles in diesem Sinne gibt es ein Gleichgewicht, das nur von Ihnen selbst definiert werden kann. Jedes Dogma, egal wie, ist wahrscheinlich mehr falsch als richtig.
Eine gute Metrik ist Code, der für die Geschäftslogik von entscheidender Bedeutung ist und aufgrund sich ändernder Anforderungen häufig geändert wird. Diese Dinge erfordern formale Tests, die automatisiert sind, was eine große Rendite bedeutet.
Es wird Ihnen sehr schwer fallen, viele professionelle Läden zu finden, die auf diese Weise funktionieren. Aus geschäftlichen Gründen ist es einfach nicht sinnvoll, Geld auszugeben, um Dinge zu testen, die sich nach einem einfachen Rauchtest für alle praktischen Zwecke nicht ändern. Das Schreiben formaler automatisierter Komponententests für .getXXX/.setXXX
Methoden ist ein hervorragendes Beispiel für diese völlige Zeitverschwendung.
Es ist nun zwei Jahrzehnte her, seit darauf hingewiesen wurde, dass Programmtests das Vorhandensein von Fehlern überzeugend nachweisen können, ihre Abwesenheit jedoch niemals nachweisen können. Nachdem der Softwareentwickler diese wohlbekannte Bemerkung ausführlich zitiert hat, kehrt er zur Tagesordnung zurück und verfeinert weiterhin seine Teststrategien, genau wie der Alchemist von einst, der seine chrysokosmischen Reinigungen weiter verfeinert hat.
- Edsger W. Djikstra . (Geschrieben 1988, also näher an 4,5 Jahrzehnten.)
Siehe auch diese Antwort .