Einführung in Test Driven Development – Anwendungsentwickler-Podcast #103

Einführung in Test Driven Development – Anwendungsentwickler-Podcast #103

Eine Einführung in Test Driven Development (TDD) gibt es in der einhundertdritten Folge des Anwendungsentwickler-Podcasts. Inhalt Was ist Test Driven Development (TDD)? Beim TDD werden die Tests vor dem Produktivcode geschrieben.
50 Minuten

Beschreibung

vor 8 Jahren

Eine Einführung in Test Driven Development (TDD) gibt es in der
einhundertdritten Folge des Anwendungsentwickler-Podcasts.
Inhalt

Was ist Test Driven Development (TDD)?

Beim TDD werden die Tests vor dem Produktivcode
geschrieben.



Wie läuft der TDD-Zyklus ab?

Red, green, refactor. Der Test muss fehlschlagen, dann
wird er so einfach wie möglich grün gemacht, dann wird
refaktorisiert.



Was ist der erweiterte TDD-Zyklus?

Red, optimize failure message, green, refactor, refactor
tests. Zusätzlich zum normalen Zyklus wird Wert auf
sprechende Meldungen bei Fehlschlägen gelegt und auch der
Test-Code explizit refaktorisiert.



Wie kann man TDD mit Integrationstests
kombinieren?

Wie in GOOS* beschrieben: Zuerst Integrationstest
schreiben, der längere Zeit fehlschlägt, und dann Schritt für
Schritt mit Unit-Tests auf grünen Integrationstest
hinarbeiten.



Warum heißt TDD auch Test Driven Design?

Weil sich das Design der Anwendung erst beim
Programmieren ergibt.



Was sind Vorteile von TDD?

Tests werden nicht vergessen.

Hohe Testabdeckung des Produktivcodes.

Gute Modularisierung des Codes durch Fokussierung der
Tests.

Hohe Testbarkeit des Codes (wenig Abhängigkeiten).

Langfristig Zeiteinsparung bei der Weiterentwicklung, da
Regression sofort erkannt wird.

Experimente und Refactorings werden durch Testnetz erst
ermöglicht.



Was sind Nachteile von TDD?

Umstellung beim Entwickler nötig.

Zunächst höherer Zeitaufwand.

Legacy Code ist meist nicht gut testbar.



Wie findet man Testfälle?

Start mit „Happy Path“

übliche Geschäftsvorfälle

einfachste Fälle

Edge-Cases/Grenzwerte

Sonderfälle



Was sind Äquivalenzklassen?

Werte, deren Verwendung in Tests zum Durchlaufen des
gleichen Pfades im Code führen und damit nicht zusätzlich
getestet werden müssen (Beispiel „positive Zahl“ 5 und 322).



Was ist ein Regressionstest?

Regressionstest stellen sicher, dass Abweichungen vom
bisherigen Verhalten (Regression) schnellstmöglich erkannt
werden.



Wie steigt man am besten in TDD ein?

Nicht lange schnacken (lesen), Kopp in‘ Nacken (coden)!
Einfach machen! Am besten mit Code Katas.



Literaturempfehlungen

Zum Einstig schau dir mal diese perfekt auf die Begleitmusik
angepasste Implementierung der Kata „Prime Factors“ von Uncle Bob
an:


Prime Factors Kata in Ruby, Flower Duet, Lakme‘


Zum Thema TDD empfehle ich zunächst das „Original“ Test Driven
Development: By Example* von Kent Beck, der TDD erfunden hat. Es
ist voll mit Beispielen, gut verständlich und auch nicht allzu
lang. Das Buch ist zwar schon ein paar Tage älter, aber immer
noch meine Empfehlung zum Einstieg.


*


Etwas moderner geht es zu in Professional Test Driven Development
with C#*. In den Links habe ich auch meine Rezension des Buches
verlinkt. Dort erfährst du noch mehr darüber, warum ich das Buch
empfehlen kann.


*


Zuletzt noch ein modernes Buch zum Thema testen und TDD:
Pragmatic Unit Testing in Java 8 with JUnit*. Darüber habe ich
schon eine ganze Podcast-Episode aufgenommen und auch eine
Rezension geschrieben (siehe Links).


*


Falls du schon fortgeschritten bist, kann ich wärmstens Growing
Object-Oriented Software, Guided by Tests* empfehlen. Das Buch
hat mein Verständnis von TDD noch einmal grundlegend erweitert
und mich nachhaltig geprägt. Ein tolles Buch, das auch den
erweiterten TDD-Zyklus beschreibt und über einfache Unit-Tests
weit hinaus geht.


*


Und falls du mal lesen willst, wie ich ein Testframework
testgetrieben entwickelt habe, kannst du dir hier den
entsprechenden Teil meiner Masterarbeit herunterladen: NUNIT: A
Unit-Test-Framework for Natural.
Links

Permalink zu dieser Podcast-Episode

RSS-Feed des Podcasts

Regressionstest – Wikipedia

Rezension: Professional Test Driven Development with C# von
James Bender und Jeff McWherter

Rezension: Pragmatic Unit Testing in Java 8 with JUnit von
Jeff Langr

Pragmatic Unit Testing in Java 8 with JUnit (Buchclub)

Rezension: Growing Object-Oriented Software, Guided by Tests
(Freeman/Pryce)

Kommentare (0)

Lade Inhalte...

Abonnenten

15
15