Warum viele kleine Testschritte positiven Einfluss auf das Design der Software haben

Was ist Testgetriebene Entwicklung?

Die testgetriebene Entwicklung ist ein wesentlicher Baustein für erfolgreiche agile Softwareentwicklung. Die Methode hat ihren Ursprung in Extreme Programming und durch sie sind Praktiken wie Continuous Integration und Continuous Delivery erst möglich geworden.

Zyklisches Vorgehen in kleinen Schritten

Bei der testgetriebenen Entwicklung (engl. Test-Driven Development, TDD) werden Tests dazu benutzt, um die Softwareentwicklung zu steuern. Der Ablauf dieser Programmierung ist zyklisch:

  • Ein Test wird geschrieben, der zunächst fehlschlägt.
  • Genau so viel Produktivcode wird implementiert, dass der Test erfolgreich durchläuft.
  • Test und Produktivcode werden refaktorisiert.

Die Tests werden typischerweise mit dem XUnit-Framework in der gleichen Sprache wie der Produktivcode implementiert. Tests, die erfolgreich durchlaufen, werden durch einen grünen, nicht erfolgreiche durch einen roten Balken dargestellt. Man spricht daher vom "Red-Green-Refactor"-Zyklus.

Testgetriebene Entwicklung geht inkrementell vor. Jeder durchlaufene TDD-Zyklus reichert die Software um neue Fähigkeiten an - und das minutiös, denn jeder Zyklusabschnitt sollte nicht länger als ein paar Minuten dauern.

Testgetriebene Entwicklung als Designstrategie

Die Tests noch vor den Komponenten zu schreiben, die man eigentlich testen möchte, ist sehr markant für TDD. Dies wird als Test-First bezeichnet und darum ist TDD keine Test-, sondern eine Designstrategie. Denn wird der Test zuerst geschrieben, so wird die Schnittstelle der zu testenden Komponente bereits benutzt, bevor sie tatsächlich existiert. Der Entwickler bekommt frühestmöglich Feedback, ob das Design auch verwendbar sein wird. Die Implementierung des produktiven Codes erfolgt erst, wenn ein Test vorliegt, der dies verlangt. Es soll dann genau soviel Code geschrieben werden, dass der Test erfolgreich durchläuft. Wird zu viel Produktivcode für einen Test geschrieben, dann entstehen nicht getestete Stellen, die beim Refactoring Probleme bereiten können.

Beim Refactoring werden die Tests und der Produktivcode gleichermaßen aufgeräumt. Ziel hierbei ist es, die Software einfach, redundanzfrei und verständlich zu gestalten. Diese Phase des TDD-Zyklus geht dem Zyklusanfang unmittelbar voraus: Um einen bestimmten Test zu schreiben, kann es notwendig sein, zuerst ein Refactoring an den anderen Tests oder dem Produktivcode vorwegzunehmen.

Der Zyklus ist überschneidungsfrei, jede Aktivität beim testgetriebenen Entwickeln lässt sich einem Abschnitt zuordnen. Es sollten keine Tests in Phase 2 und 3 und kein Produktivcode in Phase 1 und 3 geschrieben werden. Beim Refactoring wird das Verhalten des Codes nicht verändert, also dabei weder bei den Tests (Phase 1) noch im Produktivcode (Phase 2) etwas funktional verändert.

Prinzipien, die TDD vereint, sind die kontinuierliche Designverbesserung, einfaches Design und Test-First. TDD selbst ist eine Kerntechnik von Extreme Programming und damit Teil der agilen Softwareentwicklung. Es verspricht Qualitätssoftware und eine deutliche Aufwertung der Softwarearchitektur dank evolutionärem Design.

Zum Abschluss

Vorteile von TDD auf einen Blick

Wartbare Qualitätssoftware:

  • kein ungetesteter Code
  • saubere/testbare Architektur durch TDD als Designstrategie
  • keine/wenig Redundanzen durch gnadenloses rechtzeitiges Refaktorisieren

Effektive und effiziente Erstellung der Software:

  • kein unnötiger Code auf Vorrat
  • Konzentration auf das Wesentliche
Unser it-agile Lagerraum

Möchten Sie mehr erfahren?

Tauschen Sie sich mit unseren Expert:innen aus und lassen sich zu Schulungen, Coaching oder Wissensthemen beraten.

 

+ 49 40 4135 848-0    info@it-agile.de    Online Termin buchen

Agile Coaching von it-agile
Management Schulungen bei it-agile

Kennen Sie eigentlich schon it-agile?

Die Expert:innen zu agiler Arbeit und agilen Methoden

Kund:innen wollen begeistert werden. Mit innovativen Produkten, durch Schnelligkeit, Transparenz und auch Verlässlichkeit. Unsere erfahrenen Agile Coaches sorgen gemeinsam mit Ihren Teams und Führungskräften dafür, auch in komplexer Umgebung Ihre Ziele nicht aus dem Auge zu verlieren und implementieren die richtigen agilen Methoden für nachhaltige Veränderung.

  • Wir integrieren Pragmatismus mit Idealismus
  • Wir befähigen Sie nachhaltig ohne Abhängigkeit von uns
  • Wir erzeugen Kundenfokus mit wirkungsvoller Agilität
agile review Magazin

agile review

Unser Kundenmagazin 

In unserem Magazin stellen wir Artikel rund um agiles Arbeiten für Sie zusammen. Das Spektrum reicht von methodischen Themen wie Scrum und Kanban über Agile Leadership bis hin zu technischen Aspekten wie agilem Testen und flexiblen Architekturen.

  • Als Abo oder Einzelausgabe erhältlich
  • Digital oder Print
  • Einzelne Artikel sofort digital verfügbar

Wissens- und Lesenswertes

Das könnte Sie zu Agiler Arbeit auch interessieren

Was sind Flight Levels?

Agile Arbeit

Das Flight Levels Modell unterscheidet zwischen 3 Flight Levels bzw. Ebenen der Arbeit in Organisationen. Der Artikel beschreibt wie sich diese drei Ebenen unterscheiden.

Agile Verträge

Agile Arbeit

Bei agilen IT-Softwareprojekten stellen sich besondere Herausforderungen bezüglich der Vertragsgestaltung. Wir geben einen Überblick über Ihre Möglichkeiten für die agile Software-Vertragsgestaltung.

Führungskräfte und Manager in der agilen Welt

Agile Organisation

Wenn Unternehmen entscheiden, auf agile Ansätze zu setzen, ändert sich nicht nur die Arbeitsweise der Teammitglieder. Auch die Arbeit der Führungskräfte ändert sich. Das wirft die Frage auf, ob…

it-agile Newsletter

Sichern Sie sich monatlich Neuigkeiten, Inspiration und Tipps zu agiler Arbeit, Konferenzen, aktuelle Termine und vieles mehr.

Zur Anmeldung