Philipp Rammos
 - 9. Mai 2014

Einsatz von ABAP Unit zur Steigerung der Entwicklungsqualität – Teil 2

Im Rahmen einer Artikelserie erscheinen unter dem Thema Einsatz von ABAP Unit drei Beiträge zum effizienten Unit-Testing von ABAP-Entwicklungen.

Der erste bereits erschienene Artikel zeigt grundlegende Möglichkeiten zum Einsatz von ABAP Unit für Reports und Klassen. Dieser zweite Artikel geht auf Best Practices ein und erläutert, wie Unit Tests im ABAP Umfeld am besten eingesetzt werden können. Der dritte Artikel geht auf weitere Tools ein, die im Rahmen von Unit-Testing unterstützen.

Wir sind Ihr Dienstleister für die Entwicklung, die Ihr SAP noch besser macht.
Schon in der Ideenphase unterstützen wir Sie bei der Definition der Anforderungen. Die Konzeption und Umsetzung erfolgt durch unsere SAP Experten.

Sie erhalten die Komplettlösung – Ihr Projekt machen wir zu unserem Projekt. Mit professionellem Projektmanagement sicheren wir den Projekterfolg.

Gerne spreche ich mit Ihnen über Ihre Ausgangslage und zeige Lösungsmöglichkeiten auf. Auf Wunsch unterbreite ich Ihnen im Anschluss ein unverbindliches Angebot.

Kontaktieren Sie mich: Telefon 0211.9462 8572-16 oder per E-Mail info@erlebe-software.de
Ingo Biermann, Fachbereichsleiter

 

Design von ABAP Unit-Tests

Unit-Testfälle sollten so definiert werden, dass sie wirklich nur eine Einheit (unit) testen. Diese Einheit hat dabei genau eine Funktion. Alle Einheiten gemeinsam bilden dann den Test des Systems ab (nicht zu verwechseln mit einem Systemtest oder einem Integrationstest). Die einzelnen Tests müssen voneinander unabhängig sein, ebenso die Reihenfolge der Ausführung. Um diese Punkte zu gewährleisten, stellt das ABAP Unit Framework mehrere Hilfsmethoden zur Verfügung:

setup Diese Methode wird vom ABAP Unit Framework vor jeder Testmethode aufgerufen. Hier können also beispielsweise Objekte aufgebaut werden.
class_setup Das Pendant zu setup, welches jedoch nur einmal bei Aufruf der Testklasse ausgeführt wird.
teardown Diese Methode wird vom ABAP Unit Framework nachjeder Testmethode aufgerufen. Hier können also beispielsweise Objekte wieder abgebaut werden.
class_teardown Das Pendant zu teardown, welches jedoch nur einmal bei Aufruf der Testklasse ausgeführt wird.

Organisation von ABAP Unit-Tests

Neben dem Aufbau von Unit-Tests muss natürlich auch geklärt werden, was denn nun genau getestet werden soll. Ein wichtiges Stichwort dazu ist die Testfallanzahl: Je nach Funktion ist eine vollständige Überprüfung der Definitions- und Wertebereiche (Importparameter und Returnparameter) verpflichtend oder einfach zu viel. Dementsprechend sollten über den Bereichen Äquivalenzklassen gebildet werden, um das Verhalten einer Funktion direkt für alle Vertreter einer solchen Klasse zu testen. Vor allem Negativtestfälle und Grenzfälle (man geht davon aus, dass Fehler zu den Grenzen der Äquivalenzklassen wandern) sind zu testen.

Empfehlungen für den effektiven Praxiseinsatz von ABAP Unit

  • In Reports können Testfälle nicht generiert werden, sondern müssen manuell angelegt werden. Dementsprechend bietet es sich an ein Code Template zu entwickeln dass sich bei Bedarf kopieren lässt
  • Für das Testen von Komponenten die Datenbankverbindungen aufbauen empfiehlt es sich den tatsächlichen Datenbankaufruf auszulagern und nur das Anfordern der Datenbankverbindung zu testen. Dies entspricht dem Unit-Gedanken stärker und erhöht die Lesbarkeit des Codes.
  • Private Methoden einer Klasse werden eigtl. nicht getestet, da diese Hilfsklassen für public-Methoden sind und eher die Schnittstelle von den public-Methoden getestet werden sollte. Die verändert sich im Gegensatz zum Verhalten von Hilfsmethoden seltener und muss dementsprechend seltener angepasst werden
ABAP unit report template

ABAP unit report template

In diesem Artikel habe ich die grundlegenden Best Practices erläutert und werde im nächsten Artikel auf spezielle Werkzeuge eingehen.

Gerne verarbeite ich auch Anregungen von Ihnen in meinen nächsten Beiträgen. Dazu freue ich mich auf Ihr Feedback.


SHARE



Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.