ABAP Unit
Inhaltsverzeichnis
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:
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.
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.
Innerhalb der Testmethoden werden in der Regel 3 Schritte durchgeführt:
- Die Vorbereitung der Testdaten für den Testfall
- Der Aufruf des Funktionsbausteins bzw. der zu testenden Methode der Klasse
- 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.
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.