ABAP Unit

Bei ABAP Unit handelt es sich um ein Test-Framework, mit dem für ABAP-Lösungen Unit-Tests bzw. Modul- oder Komponententests durchgeführt werden können. Eine Unit ist dabei die kleinste testbare Funktion, z. B. eine Methode einer Klasse. Mithilfe des Frameworks schreibt ein Entwickler Testfälle für seine Methoden und kann damit jederzeit prüfen, ob diese korrekt funktionieren oder nicht. Die Testergebnisse werden dabei im ABAP Test Cockpit dargestellt.

Unit-Tests im V-Modell

Das V-Modell (Vorgehensmodell) organisiert Entwicklungsprojekte in verschiedene Phasen. Um eine hohe Qualität der Software zu gewährleisten, werden den Entwicklungsphasen Tests gegenübergestellt:

Abb 1. Im V-Modell werden Entwicklungsphasen und unterschiedliche Tests gegenübergestellt.

Abb 1. Im V-Modell werden Entwicklungsphasen und unterschiedliche Tests gegenübergestellt.

Da es sich bei einer Unit um die kleinste testbare Funktion handelt, bilden Unit-Tests eine sehr frühe Teststufe im V-Modell ab und sind Bestandteil des „Shift-Left-Approaches“, bei dem Tests so früh wie möglich durchgeführt werden.

Mit ihnen wird sichergestellt, dass im Entwicklungsprozess und bei späteren Änderungen jederzeit geprüft werden kann, ob alle Funktionen noch zu den gewünschten Ergebnissen führen oder ob eine der vorgenommenen Änderungen im Programm Fehler verursacht.

abapGit einrichten [Howto]

In diesem How-to erkläre ich Ihnen Schritt für Schritt, wie Sie abapGit bei sich einrichten und davon profitieren können.

Wie funktioniert ABAP Unit?

ABAP-Unit-Tests werden mit Hilfe von Testklassen in ABAP OO (ABAP Objects) implementiert. Programmierer können zu den folgenden Entwicklungsprojekten Testklassen anlegen:

  • ABAP-Klassen
  • ABAP-Funktionsbausteine
  • ABAP-Reports und -Modulpools

Testklassendefinition

Eine Testklasse lässt sich an der Klassendefinition mit den Schlüsselbegriffen „CLASS lcl_testclass DEFINITION FOR TESTING“ erkennen. Die Definition enthält zudem 2 weitere wichtige Eigenschaften:

Das „RISK LEVEL“ gibt es in den Ausprägungen „HARMLESS“, „DANGEROUS“ und „CRITICAL“ und bezieht sich vor allem auf den Inhalt der Testmethoden. Die Einschätzung der Auswirkungen der Testmethoden auf das System, z. B. für den Fall, dass dabei Datenbankzugriffe lesend oder schreibend durchgeführt werden, obliegt dem Entwickler der Tests.

Die „DURATION“ gibt in den Werten „SHORT“, „MEDIUM“ und „LONG“ die Rechenintensität und damit die erwartete Laufzeit der Unit-Tests an.

Beide Eigenschaften werden zum Start der Tests ausgewertet. Über Customizing in der Transaktion „SAUNIT_CLIENT_SETUP” können Entwickler die Ausführung von „RISK LEVEL CRITICAL“ zum Beispiel verhindern. Die Klassendefinition einer Testklasse sieht dann folgendermaßen aus:

CLASS ltc_test_class DEFINITION FOR TESTING
RISK LEVEL HARMLESS
DURATION SHORT.

ENDCLASS.

Methoden und Attribute

Testklassen enthalten nur private Methoden und Attribute. Neben Testmethoden, die an der Methodendefinition „METHOD methodenname FOR TESTING“ erkennbar sind, können Testklassen beliebige Attribute und weitere Methoden enthalten. Es gibt 4 Methoden, die Entwickler in jede Testklasse implementieren können und zur Vor- oder Nachbereitung der Testfälle dienen:

  • CLASS-METHOD class_setup: Hierbei handelt es sich um eine statische Methode, die einmalig ausgeführt wird, bevor der erste Test beginnt.
  • CLASS-Method class_teardown: Diese statische Methode wird nach der Durchführung aller Tests einmalig ausgeführt.
  • METHOD setup: Diese Instanzmethode wird vor jedem einzelnen Test durchlaufen.
  • Method teardown: Dabei handelt es sich um eine Instanzmethode, die nach jedem einzelnen Test durchgeführt wird.

 

Abb 2. Zur Vor- oder Nachbereitung der Testfälle können Programmierer Methoden in die Testklassen implementieren.

Abb 2. Zur Vor- oder Nachbereitung der Testfälle können Programmierer Methoden in die Testklassen implementieren.

Innerhalb der Testmethoden werden in der Regel 3 Schritte durchgeführt:

  1. Die Vorbereitung der Testdaten für den Testfall
  2. Der Aufruf des Funktionsbausteins bzw. der zu testenden Methode der Klasse
  3. Die Auswertung der Ergebnisse mithilfe der Klasse „cl_abap_unit_assert“

Die Ergebnisse aus dem dritten Schritt werden im ABAP-Unit-Framework aufgegriffen und im ABAP Test Cockpit dargestellt.

ABAP Test Cockpit

Das ABAP Test Cockpit ist in die ABAP-Workbench und die ABAP-Development-Tools für Eclipse integriert und kann zudem über die Transaktion „ATC“ aufgerufen werden. Es ermöglicht die Ausführung und Ergebnisanzeige verschiedener Tests wie erweiterte Programmprüfungen, Modultests mit ABAP Unit oder Sicherheitsprüfungen für Entwicklungsprojekte. Entwickler können das ABAP Test Cockpit in den Transport Organizer integrieren und zum Beispiel zur automatischen Ausführung von Tests bei Transportfreigabe nutzen.

Voraussetzungen

Das ABAP Test Cockpit steht ab folgenden SAP-Releases zur Verfügung:

  • SAP NetWeaver AS ABAP 7.0, EhP2, Support Package 12
  • SAP NetWeaver AS ABAP 7.0, EhP3, Support Package 05
  • SAP NetWeaver AS ABAP 7.3, EhP1, Support Package 05
  • SAP NetWeaver AS ABAP 7.4, Support Package 02

Vorteile von Unit-Tests

Entwickler profitieren mit Unit-Tests von einer Vielzahl an Vorteilen:

  • Fehler werden bereits früh erkannt. Hieraus ergibt sich eine potenzielle Kostenreduktion, da die Behebung von spät entdeckten Fehlern in der Regel teurer ist.
  • Fehler können genauer eingegrenzt und dadurch schneller behoben werden.
  • Es werden nur einzelne Komponenten getestet, sodass Unit-Tests schneller als andere Testarten ausgeführt werden können.
  • Die Tests helfen auch bei der Dokumentation von Entwicklungsprojekten.
  • Wenn Fehler bereits früh entdeckt werden, können Entwickler ihn im weiteren Verlauf des Entwicklungsprojektes vermeiden. Vor allem mittlere und große Software-Projekte können dadurch schneller abgeschlossen werden.
  • Um Unit-Tests durchzuführen, müssen Programmierer Abhängigkeiten zwischen den zu testenden Komponenten vermeiden. Der Code bleibt dadurch leicht änderbar und kann unkompliziert an neue Anforderungen angepasst werden.

Nachteile

Die Arbeit mit Unit-Tests ist vorerst mit einem Mehraufwand verbunden:

  • Vor der Implementierung einer Komponente muss der dazugehörige Test implementiert werden.
  • Bei neuen Anforderungen muss nicht nur die Funktionalität, sondern auch der Test verändert werden.
  • Weisen Tests Abhängigkeiten auf, können Änderungen am Code mehrere Tests beeinflussen.

Fazit

Mit ABAP Unit steht Entwicklern ein Test-Framework zur Verfügung, mit dem sie Modul- oder Komponententests durchführen können. Hierzu fertigen sie verschiedene Testfälle an und lassen sich die Ergebnisse im ABAP Test Cockpit anzeigen.

Unit-Tests werden bereits in einer frühen Phase der Software-Entwicklung durchgeführt. Sie werden in Testklassen definiert – dabei kann der Entwickler sowohl die Testdauer als auch das Risiko festlegen. Testklassen lassen sich für ABAP-Klassen, ABAP-Funktionsbausteine bzw. ABAP-Reports und -Modulpools anlegen. Um die Testfälle vor- bzw. nachzubereiten, stehen Verantwortlichen 4 Methoden zur Verfügung, deren Ergebnisse sie mit dem ABAP Test Cockpit aufrufen können.

Durch die Unit-Tests werden Fehler bereits frühzeitig erkannt. Unternehmen sparen sich hierdurch Kosten, die bei der Ausbesserung später entdeckter Mängel entstehen. Zudem verläuft die Fehlerbehebung schneller – bereits früh entdeckte Unrichtigkeiten kann das Entwicklerteam im weiteren Verlauf des Projektes vermeiden. Das führt dazu, dass vor allem mittlere und größere Software-Projekte schneller umgesetzt werden. Da die getesteten Komponenten über schlanke Codes verfügen, lassen sie sich unkompliziert an neue Anforderungen anpassen.

Kontaktieren Sie uns gerne, wenn Sie weitere Fragen zum Thema ABAP Unit haben. Gerne beraten wir Sie bei Ihrem individuellen Anliegen oder schulen Ihre Entwickler in der praktischen Anwendung von ABAP Unit.

 


Mehr von unseren Partnern


Unsere Produkte zu ABAP Unit

Ein wichtiger Schritt in Richtung des neuen SAP Frameworks for Digital Business ist die in-memory Datenbank SAP HANA. Für bestehende SAP Kunden ist vor allem wichtig: Wie schaffe ich das richtige Knowhow im IT-Team, um mit der SAP HANA Datenbank …

Mehr Informationen

Ein neuer Trend in der SAP Anwendungsentwicklung: BOPF Das BOPF-Framework ist bei Anwendungsentwicklern im SAP Umfeld in aller Munde. Mit unseren BOPF Workshops bieten wir Ihnen den Überblick, den Sie jetzt brauchen.Mit dem Business Object Processing Framework (BOPF) hat …

Mehr Informationen

Haben Sie ein gutes Gefühl was die Code-Qualität Ihrer Kundenentwicklungen im SAP angeht? Wenn bei Lesbarkeit, Dokumentation, Modularisierung oder systematischer Transport- & Releasestrategie noch Luft nach oben ist, dann sollten wir uns unterhalten.

Mehr Informationen

Schreiben Sie einen Kommentar

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





Angebot anfordern
Preisliste herunterladen
Expert Session
Support