Christoph Lordieck
12. September 2019

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.

Howto ABAPGit einrichten

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
Beitragsbild-So sparen Sie mit Testmanagement Zeit und Ressourcen
In diesem Webinar zeigen wir Ihnen, wie Sie mit einem systematischen Testmanagement schnell und gezielt Fehler minimieren und die Qualität Ihrer Software erhöhen können. 

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.

Lordieck

Websession: ABAP Unit

Sollten Sie Fragen zu uns und unserer Arbeit oder konkret zu Umstellungsprojekten haben, dann vereinbaren Sie eine kostenlose Websession mit uns.

FAQ

Was ist 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.

Was ist eine Unit?

Eine Unit ist die kleinste testbare Funktion, z. B. eine Methode einer Klasse.

Christoph Lordieck

Christoph Lordieck

Als Bereichsleiter SAP Entwicklung berate ich Unternehmen rund um das Thema SAP Individualentwicklung. Einige Jahre Projekt- und Umsetzungserfahrung haben meinen Wissenshunger noch nicht gestillt und ich suche ständig nach neuen Themen und Entwicklungen im ABAP-Umfeld.

Sie haben Fragen? Kontaktieren Sie mich!


Verwandte Beiträge

Seit dem 20. Oktober 2015 stellt SAP ihren NetWeaver in Version 7.5 bereit. Spannende Themen wie z.B. SAP HANA sind mit von der Partie. Was das Upgrade aber konkret alles […]

weiterlesen

Schon seit einiger Zeit kursiert in den Entwicklerkreisen immer wieder der Begriff "ABAP in Eclipse". Nicht etwa aufgrund einer Entwicklungssitzung in einer anstehenden Sonnenfinsternis, sondern im Zusammenhang mit den Begriffen […]

weiterlesen

Vermutlich geht es Ihnen wie mir – als SAP ABAP Entwickler ist die SE80 mein zweites Zuhause. Über die Jahre finde ich mich beinahe blind zurecht und habe auch die […]

weiterlesen

Unsere Produkte zu ABAP Unit

Was müssen ABAP Entwickler wissen, wenn sie Applikationen für die SAP HANA Datenbank vorbereiten, entwickeln und optimieren wollen?

Mehr Informationen

Das ABAP Test Cockpit (ATC) ist eine SAP Lösung, um die Qualität des Codes auf einen hohen Standard zu bringen und dort zu halten. Wir unterstützen Sie bei der initialen […]

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 […]

Mehr Informationen

Schreiben Sie einen Kommentar

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





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice