ABAP SQL Test Double Framework: Förderer von Clean Code in SAP-Anwendungen

SAP NetWeaver 7.52 gibt es seit 2017. Für das Update auf diese Version spricht unter anderem das ABAP SQL Test Double Framework

Lesezeit: 5 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 33 Beiträge
Von
  • Michael Keller
Inhaltsverzeichnis

"SAP NetWeaver 7.52". Das klingt für viele ABAP-Entwickler wie für Star-Trek-Fans der Satz: "Der Weltraum. Unendliche Weiten." Oder für Star-Wars-Fans: "in einer weit, weit entfernten Galaxis". Denn wie mit jeder neuen Version von SAPs Anwendungsplattform gibt es für Entwickler viele neue Technologien und für bestehende wiederum Neues. Es ist also viel zu entdecken. Allerdings dürfte derzeit noch nicht jeder ABAP-Entwickler in den Genuss dieser Version gekommen sein. Erfahrungsgemäß dauert es etwas, bis alle Kunden diesen Versionsstand erreicht haben, auch wenn die Version 7.52 seit 2017 verfügbar ist.

Das soll aber kein Hinderungsgrund sein, nicht über das ein oder andere interessante Feature zu schreiben. Womöglich ergeben sich so für manche Unternehmen Gründe, schneller auf die aktuelle Version von NetWeaver zu wechseln. Einer dieser Gründe könnte das ABAP SQL Test Double Framework sein.

Zur Verdeutlichung seiner Wichtigkeit muss man fachlich etwas weiter ausholen. Für die Entwicklung moderner ABAP-Anwendungen spielen Clean-Code-Prinzipien eine wichtige Rolle. Ihre Beachtung wirkt sich positiv auf die Wartbarkeit einer Anwendung aus. Und diese ist wiederum ein wichtiges Gut in der Softwareentwicklung. Denn die Erfahrung zeigt, dass Anwendungen einmal grundlegend entwickelt und anschließend vielfach gewartet werden. Mit entsprechendem Aufwand, den Softwareentwickler beziehungsweise Softwarehersteller lieber gering halten. Dabei darf der Begriff der Wartung nicht nur als das Beheben von Fehlern verstanden werden. Neue Funktionen, eine Anpassung an eine geänderte Systemumgebung, die Übersetzung in eine andere Sprache, all das ist ebenfalls unter dem Begriff "Wartung" zu verstehen.

Für das Warten der Anwendungen müssen Veränderungen sicher durchführbar sein. Es sollen schließlich keine neuen Fehler eingebaut werden. "Sicher" bedeutet, die korrekte Arbeitsweise einer Anwendung möglichst häufig zu prüfen, auch und gerade nach einer Veränderung. Auf Entwicklungsebene erreicht man das durch Unit-Tests.

In der Werkzeugkiste von ABAP-Entwicklern findet sich zur Arbeit mit Unit-Tests das Framework ABAP Unit. Es ermöglicht unter anderem das Schreiben von Testklassen, in denen Testmethoden enthalten sind. Die Testmethoden werden nach dem "Given-When-Then"-Prinzip gestaltet. "Given" meint hierbei zum Beispiel das Bereitstellen der notwendigen Variablen als Eingabeparameter für einen Methodenaufruf im "When"-Bereich. "When" enthält den Aufruf einer öffentlichen Methode, die getestet werden soll. "Then" umfasst den Vergleich zwischen dem von der Methode gezeigten Verhalten (Ist) und dem erwarteten, richtigen Verhalten (Soll) – zum Beispiel die Rückgabe eines Werts oder das Auslösen einer Ausnahme.

Testmethoden lassen sich in hoher Anzahl und schnell verarbeiten. Das spricht für ihre häufige, wiederholte Ausführung. Als Orientierung gilt es, frühzeitig und oft zu testen. Da die Ausführungszeit von Testmethoden gering ist, diese sich direkt aus der Entwicklungsumgebung ausführen lassen und das Ergebnis visualisiert wird (rot/grün), ist der Mehrwert auch mehr als deutlich.

Gerade in einer Entwicklungsumgebung wie den ABAP Development Tools for Eclipse, die in Sichten (Views) organisiert ist, können Entwickler so schnell feststellen, ob eine Veränderung der Anwendungslogik eine fehlerhafte oder erfolgreiche Ausführung der Testmethoden nach sich zieht. In der einen Sicht sehen sie ihren Quelltext, in der anderen ABAP Unit und das Ergebnis der Ausführung. Im Fehlerfall deutet das entweder auf einen Fehler in der geänderten Anwendungslogik hin oder aber auf eine notwendige Anpassung der Testmethoden. Das kann der Fall sein, wenn sich zum Beispiel die zum Aufruf einer Methode obligatorischen Parameter verändert haben.