Wenn Unternehmen Wert auf hochwertige und zuverlässige Software legen, ist die testgetriebene Entwicklung (Test Driven Development = TDD) das Richtige für sie. Mit dieser Methodik wird bei der Softwareentwicklung auf eine zuverlässige Architektur Wert gelegt und die Nutzer- und Nutzerinnenfreundlichkeit möglichst hochgehalten. Dieser Artikel stellt die Funktionsweise von TDD vor und erklärt, warum die dazugehörigen Methoden in immer mehr Betrieben Anklang finden.

→ Audit für das digitale Kundenerlebnis [Kostenloser Download]

Test Driven Development vs. Behaviour Driven Development

Das Test Driven Development von Kent Beck unterscheidet sich klar vom Behaviour Driven Development (BDD). Beim letzteren geht es weniger um die Architektur einer Software. Bei der Entwicklung der Software geht es zunächst darum, die Lösung so zu gestalten, dass sie gewünschte Verhaltensweisen zeigt.

Im Unterschied zum TDD können nicht nur professionelle Softwareentwickler und Softwareentwicklerinnen beziehungsweise Programmierer und Programmiererinnen diese Methode nutzen, sondern auch andere Stakeholder können an der Entwicklung teilnehmen und diese durch ihr Fachwissen positiv beeinflussen.

Funktionsweise von TDD

Testgetriebene Entwicklung kann grundsätzlich für die Planung und Umsetzung jeder erdenklichen Software genutzt werden. Ein typisches Anwendungsgebiet ist beispielsweise die Verknüpfung von E-Mail-Adressen mit einem Avatar-Bild mittels Software. Die Entwickler und Entwicklerinnen sollen einen Code kreieren, der die Zuordnung automatisiert und somit für den Betrieb sowie seine Nutzer und Nutzerinnen vereinfacht.

Beim Einsatz von TDD arbeiten die Entwickler und Entwicklerinnen mit klar definierten Tests. Diese sind äußerst kleinschrittig, um jeden einzelnen Teilbereich des Codes analysieren, bewerten und gegebenenfalls anpassen zu können.

Im Unterschied zu anderen Methoden wird bei der testgetriebenen Entwicklung nicht zunächst eine Software entwickelt und dann getestet. Stattdessen werden Tests konzipiert und durchgeführt. Anhand der Testergebnisse erfolgt dann die eigentliche Erstellung des Codes.

TDD arbeitet hierbei mit drei typischen Phasen, die im Folgenden vorgestellt werden:

1. Rote Phase

In der roten Phase versetzen sich die Programmierer und Programmiererinnen in die Rolle der Anwender und Anwenderinnen. Diese möchten einen möglichst einfachen Code zur Verfügung haben, der eine klar definierte Menge an Funktionen und Leistungen bietet. Zu diesem Zweck entwickeln sie einen Test, um zu prüfen, ob eine bestimmte Software diese Aufgaben erfüllt. Dieser Testfall im Rahmen des TDD schlägt zwangsläufig fehl.

Um sinnvolle Erkenntnisse aus der roten Phase ziehen zu können, müssen einige Kriterien erfüllt sein. So ist es wichtig, dass die getesteten Komponenten noch nicht implementiert sind. Ansonsten entwickelt sich die Software nicht weiter.

Außerdem sollte der Test so kurz wie möglich sein und idealerweise nur wenige Millisekunden umfassen. So ist klar ersichtlich, an welcher Stelle ein Fehler aufgetreten ist, der beseitigt werden muss. Außerdem muss entschieden werden, welche Komponenten für das Funktionieren des Codes zwingend erforderlich sind. Auf diese sollte man sich bei der Entwicklung beschränken.

2. Grüne Phase

In der grünen Phase ist ein Test, der im Rahmen des TDD durchgeführt wird, erfolgreich. Das funktioniert in der Regel nicht auf Anhieb. Stattdessen ist es üblich, dass ein Test zunächst mehrfach in der roten Phase verbleibt. Anschließend versuchen die Programmierer und Programmiererinnen, einfache Lösungen zu finden, damit die Software den Test erfolgreich besteht.

Hierbei sollte ebenfalls nur so viel Code wie nötig geschrieben werden, um den Code so einfach und nutzer- beziehungsweise nutzerinnenfreundlich wie möglich zu halten. Die gefundenen Lösungen werden dann in den Produktivcode integriert, bis er auf Grün springt.

3. Refactoring

In dieser Phase der Softwareentwicklung steht die Entwicklersicht beziehungsweise Entwicklerinnensicht im Mittelpunkt. Es geht darum, den Produktivcode so umzustrukturieren, dass er von Aufbau und Funktionalität her professionell, ansprechend und funktional ist.

In diesem Zusammenhang werden beispielsweise Duplizierungen entfernt, damit der Code übersichtlich, verständlich und leicht einsetzbar ist. Hierbei darf der Code aber keinesfalls von grün auf Rot springen. Im Anschluss an das Refactoring beginnt eine neue Testphase. Es handelt sich somit um ein zyklisches Vorgehen.

Warum TDD anwenden?

Es gibt viele gute Gründe, sich für TDD zu entscheiden. Durch diese Methodik entsteht eine qualitativ hochwertige Software, die weniger Bugs enthält und kaum störanfällig ist. Die Architektur des Produktivcodes ist klar verständlich, gut strukturiert und somit für den Einsatz hervorragend geeignet. Fehleranalysen können schnell und effizient durchgeführt werden, was den Aufwand bei Wartungsarbeiten reduziert. Außerdem wird Over-Engineering vermieden, indem Duplizierungen eliminiert werden.

Damit Sie TDD nutzen können, ist jedoch ein recht hohes Code-Verständnis nötig, weswegen für die Softwareentwicklung eine längere Einarbeitungszeit eingeplant werden muss. Zudem wird mit TDD nur die Richtigkeit des Codes und nicht seine Alltagstauglichkeit überprüft. Entsprechend ist es gegebenenfalls nötig, dass Sie TDD durch andere Testverfahren ergänzen.

Sie wollen mehr zum Thema Programmieren lesen? Besuchen Sie unseren Beitrag über Low-Codes und erfahren Sie, warum Programmieren auch ganz einfach sein.

Was unterscheidet TDD von anderen Testverfahren?

Eine Besonderheit von TDD besteht darin, dass die Testfälle zum Software-Design dazugehören. Das ist beispielsweise bei Modultests oder Unit-Tests anders. Hier wird zunächst eine Software entwickelt, die dann später getestet wird. Gerade bei Unit-Tests sind die geprüften Einheiten ebenfalls klein, um exakt prüfen und Korrekturen vornehmen zu können.

Dennoch ist der Ansatz ein anderer. Bei Integrations- und Funktionstests werden nicht mehr nur einzelne Komponenten geprüft, sondern ihre Wechselwirkungen. Somit wird ersichtlich, ob die gesamte Code-Architektur funktioniert und die Software alltagstauglich ist.

Fazit: Qualitativ hochwertige Software entwickeln

Wenn Sie qualitativ hochwertige Software professionell und effizient entwickeln und realisieren möchten, führt kein Weg an TDD vorbei. Investieren Sie ausreichend Zeit und Ressourcen in die testgetriebene Entwicklung und profitieren Sie von ihren zahlreichen Vorteilen. Es lohnt sich, diese Testmethode in sämtlichen Bereichen der Softwarentwicklung einzusetzen, so auch in der Webentwicklung.

Oft bietet es sich dabei an, TDD mit anderen Testverfahren zu kombinieren, um für eine größtmögliche Nutzer- und Nutzerinnenfreundlichkeit zu sorgen und den Wartungsaufwand so gering wie möglich zu halten.

New call-to-action

 New call-to-action

Titelbild: Maskot / iStock / Getty Images Plus

Ursprünglich veröffentlicht am Jan 24, 2023 2:00:00 AM, aktualisiert am Januar 24 2023

Themen:

Webentwicklung