Test Driven Development
Test Driven Development
Nach klassischer Vorgehensweise werden Tests unabhängig von zu testenden Systemen und oft erst nach Fertigstellung der Software entwickelt. Test-Driven-Development hingegen ist eine Art der Softwareentwicklung, bei der die Testfälle entwickelt werden, bevor die Software zur Ausführung dieser Testfälle entwickelt wird. Dies ermöglicht es, qualitativ hochwertige Software zu schreiben.
Leistungen
- Testentwicklung
- Implementierung
- Refactoring
Vorteile
- Hohe Software-Qualität
- Wartungsarme Applikationen
- Lesbarer und strukturierter Code
- Starke Modularisierung
- Kurze Entwicklungszyklen
- Erfüllte Akzeptanzkriterien
Vollständige Testbarkeit der Software
Die Testbarkeit einer Software sollte bereits bei deren Entwicklung berücksichtigt werden. Passiert dies nicht, so entstehen oft monolithische Systeme. Sie sind als untrennbare Einheit mit vielen internen Abhängigkeiten gestaltet. Ein solcher nicht modularer Aufbau verhindert eine vollständige Testbarkeit. Der Test-Driven-Development hingegen stellt sicher, dass eine Software modular aufgebaut ist und dass alle Komponenten und Teilbereiche vollständig und automatisiert getestet werden können. Für alle relevanten Funktionsbereiche werden geeignete Tests entwickelt und bereits während der Implementierung eingebunden.
Wie funktioniert Test-Driven-Development?
Beim Test-Driven-Development werden Tests zur Überprüfung der Software-Qualität noch vor der eigentlichen Software geschrieben. Ein jeder Test prüft eine neue noch zu programmierende Funktionalität. Erst in einem nächsten Schritt wird der Code der Anwendung implementiert, mit möglichst wenig Aufwand abgeändert oder ergänzt, bis er nach einem Testdurchlauf alle Tests besteht. In einem abschließenden Schritt wird der Programmcode aufgeräumt. Bei diesem Schritt sprechen wir vom sogenannten Refactoring. Der Code wird abstrahiert, Wiederholungen entfernt und verbindliche Code-Konventionen eingehalten. Diese drei Schritte werden so lange wiederholt, bis alle Fehler bereinigt sind und der Code die gewünschte Funktionalität liefert.
Wann lohnt sich testgetriebene Entwicklung?
Je komplexer und umfangreicher ein System ist, desto aufwändiger ist es, eine hohe Qualität der Anwendung sicherzustellen. Automatische Tests können helfen, diesen Aufwand zu reduzieren. Da Tests aber keine sichtbaren Funktionserweiterungen darstellen, werden Investitionen in diesem Bereich häufig auch als nicht zielführend wahrgenommen. Bei klassischer Vorgehensweise kommt es häufig vor, dass Maßnahmen zur Qualitätssicherung aus Budgetgründen entfallen. Ergebnis aus einem solchen Vorgehen ist in der Regel eine Software mit keiner oder nur geringer Testabdeckung. Dies erhöht deutlich die Fehleranfälligkeit eines Systems und die Aufwände für manuelle Tests.
Eine testgetriebene Entwicklung hingegen stellt sicher, dass eine hohe Testabdeckung gegeben ist. Der modulare Aufbau der so entstehenden Applikationen unterstützt zudem, dass alle Systembereiche testbar sind. Bei agiler Vorgehensweise und steigender Komplexität stellt die testgetriebene Entwicklung daher eine gute Möglichkeit dar, skalierbare Software von hoher Qualität zu produzieren. Jedoch ist zu beachten, das auch eine testgetriebene Entwicklung nicht jeden Fehler aufdecken kann und noch andere Testarten zum Einsatz kommen sollten.
Testgetriebene Entwicklung ist fester Bestandteil bei ion2s
Der Test-Driven-Development ist ein wichtiger Bestandteil der agilen Arbeit bei ion2s. Er ist Komponente in unserem Qualitätsplan und wird im etablierten Development-Test-Process durchgeführt. Bevor eine Anwendung, ein Modul oder eine Funktionalität in die Umsetzung geht, werden anhand der Anforderungen der Umsetzung in Scrum Planning und Funktionsspezifikation geeignete Akzeptanzkriterien definiert. Die Tests und die von ihnen überprüften Funktionalitäten werden in kleinen Iterationen implementiert. Eine solche Iteration besteht aus den folgenden Schritten:
Es wird ein Test geschrieben, der die Funktionalität prüft. Weil die dazugehörige Logik erst im nächsten Schritt implementiert wird, schlägt dieser Test fehl.
Die Logik wird implementiert, so dass der zuvor geschriebene Test erfolgreich verläuft.
Mit der Sicherheit des erfolgreichen Tests wird der Code mit Blick auf Verständlichkeit, Erweiterbarkeit und Modularität verbessert.
Durch diese Schritte ist die Software-Entwicklung bei ion2s sehr stark mit dem Testen der Software verbunden. Ergebnis ist qualitativ hochwertige Software mit hoher Testabdeckung und vergleichsweise niedrigen Testaufwänden.
Jetzt Angebot anfordern
Sie haben eine Frage oder ein konkretes Anliegen? Jetzt Kontakt aufnehmen!
Florian Kasper
E-Mail: florian.kasper@ion2s.com
Telefon: +49 6151 39115-100