Schon lange sind für die meisten Entwicklerinnen und Entwickler „Unit-Test“ und „Test Driven Development“ keine Fremdwörter mehr. Dennoch werden diese in der Praxis aus verschiedensten Gründen, von nicht allzu vielen Programmiererinnen und Programmierern angewendet. Im Folgenden soll gezeigt werden, warum die Verwendung von Unit-Tests äußerst sinnvoll ist. Beim Eingehen auf die Thematik werden sowohl die Vor- und die Nachteile aufgezeigt und Grundlagenwissen vermittelt.

Testgetriebene Entwicklung (Test Driven Development) ist eine Methode der agilen Software Entwicklung. Hier erstellen Entwicklerinnen und Entwickler Unit-Tests konsequent vor den zu testenden Code-Abschnitten bzw. Komponenten. Mittels Unit-Tests lassen sich Code Komponenten bzw. Methoden darauf überprüfen, ob sie wie beabsichtigt arbeiten. Dies kann sowohl manuell als auch automatisiert erfolgen. Dabei ist auch erwähnenswert, dass das Anwenden von Unit-Tests nicht zwingend mit der testgetriebenen Entwicklung gleichgestellt werden muss, denn Unit-Tests können auch nachträglich implementiert werden.

Vor- und Nachteile

Da das schrittweise Lösen von Problemen mit gleichzeitigem Testen im Allgemein nicht die Art ist, wie man das Programmieren erlernt, sind viele Entwicklerinnen und Entwickler das Anwenden von Unit-Tests nicht gewohnt. So gehen viele davon aus, dass das Implementieren von Unit-Tests einen hohen Aufwand mit sich bringt. Dieses Argument lässt sich entkräften, denn ein Unit-Test ist eine Art Sicherheitsnetz. Wurden Änderungen im Code durchgeführt, dann sind Fehler schnell und präzise lokalisierbar. Dadurch erspart man sich Zeit und Nerven bei der Suche nach der Nadel im Heuhaufen. Ein weiterer Vorteil, der daraus resultiert: Der Kunde spart Kosten ein, da in Bezug auf zukünftige Entwicklungen weniger Aufwand beim Testen betrieben werden muss. Zudem fördern das Schreiben der Tests die eigene Entwicklung, denn die Codequalität verbessert sich durch das gedankliche Arbeiten sowie Auseinandersetzen mit dem Code, da dieser ständig überdacht wird.

Ein Nachteil der Unit-Tests besteht darin, dass Entwickelnde diese falsch einsetzen könnten und somit keine Garantie mehr auf Fehlerfreiheit besteht. Außerdem entsteht ein Initialaufwand, der bei der Kalkulation von Software Projekten zu beachten ist. Weiter müssen sich Entwicklerinnen und Entwickler im Klaren darüber sein, dass Unit-Tests nur die Funktionalität des Source Codes prüfen. Die Performance und Usability fallen nicht in den Anwendungsfall von Unit-Tests. Private Methoden werden in der Regel nicht getestet, da die Testklassen nur die Schnittstelle von Public Methoden testen.

Unit-Tests im ABAP Umfeld

Die SAP bietet für Unit-Tests das sogenannte Test Framework „ABAP Unit”. Dieses ist Teil des ABAP-Stacks seit Web AS 6.40 und ist komplett in die ABAP Workbench sowie Eclipse integriert. ABAP Entwickelnde dürfen sich in nahezu jedem Release über eine dynamische Weiterentwicklung des Testframeworks freuen.

Fazit

Unit-Tests sind ein mächtiges Werkzeug, das sich in der Software Entwicklung ­­­bewährt hat. Nachdem ein Umdenken und Verinnerlichen der neuen Vorgehensweise in der Entwicklung stattgefunden hat, steigert sich die Source Code Qualität, während sich der Arbeitsaufwand proportional dazu verringert. Das spart nicht nur Zeit, sondern auch Kosten.

Weiterbildung in Hannover

Für Entwicklerinnen und Entwickler, die sich für die Thematik des Test Driven Developments interessieren, bietet die Inwerken AG verschiedene Events wie bspw. den „ABAP CodeRetreat“ oder die „SAP CodeJam“, wo man entweder die Technik anwendet oder sich in einem Vortag bestens über die Thematik informieren kann. Wir freuen uns stets über neue Gesichter! Außerdem erwartet Sie zwei weitere Blogbeiträge, die sich mit ABAP in Eclipse und der Implementierung von Unit-Test-Beispielen beschäftigen.