Philipp Rammos
 - 18. April 2014

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

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

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

Udemy-abap-4

Für Besucher von Erlebe Software können wir unseren Kurs SAP ABAP Dynamische Programmierung mit kräftigem Rabatt anbieten.

SAP ABAP Dynamische Programmierung

Warum überhaupt ABAP Unit-Tests?

Unit-Tests dienen der Überprüfung des Verhaltens von einzelnen Komponenten. Eine Komponente im Sinne eines Unit-Testes hat dabei genau eine Funktionalität. Durch Unit-Tests lässt sich schnell und sicher feststellen, ob diese einzelnen Komponenten wie gewünscht funktionieren. Dies ist vor allem für den Anwendungsentwickler, aber auch für die Projektsteuerung wichtig. Während der Anwendungsentwickler jederzeit seinen aktuellen Arbeitsstand überprüfen kann, z.B. ob die Anwendung nach Änderungen noch die Anforderungen erfüllt, kann die Projektsteuerung den Fortschritt des Entwicklungsprojekts verfolgen. Gerade in großen Projekten liegt die Fehlersuche oft tief im Detail, durch ABAP Unit-Tests fallen diese Stellen direkt auf. Im Gegensatz zu manuellen Tests durch Benutzer, laufen automatisierte Unit-Tests in wenigen Sekunden durch und werden automatisch protokolliert. Selbstverständlich ersetzen ABAP Units-Tests manuelles Testen nicht komplett. Zu den Grenzen von ABAP Unit berichte ich im dritten Beitrag dieser Reihe.

Automatisierte Tests lassen sich für klassische Reports, aber auch für ABAP OO Klassen anlegen. ABAP Unit selbst ist objektorientiert umgesetzt.

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

 

Unit-Tests in ABAP Reports

Zum Testen eines Reports ist eine innere Klasse anzulegen. Die Definition der Klasse beinhaltet die wichtigen Schlüsselwörter DEFINITION FOR TESTING und geschieht im privaten Sichtbarkeitsraum. Die Implementierung der Klasse erfolgt nun immer nach dem gleichen Muster:

  1. Definition von Variablen für den Ausgangswert und den Erwartungswert
  2. Aufruf der zu testenden Form-Routine des Reports mit dem Ausgangswert
  3. Aufruf der Vergleichsmethode des ABAP-Unit-Frameworks mit dem Resultat, dem Erwartungswert und einer auszugebenden Nachricht im Fehlerfall:  cl_aunit_assert=>assert_equals( act = resultat exp = erwartungswert msg = ‘nachricht‘ )

Über einen Rechtsklick auf den Report und Ausführen->Modultest wird der Unit-Test durchgeführt. Falls das Resultat nicht dem Erwartungswert entspricht, wird die Nachricht in einem Ergebnisdialog ausgegeben.  In diesem kann auch an die relevante Stelle gesprungen werden. Im positiven Fall wird nur eine Erfolgsmeldung angezeigt.

ABAP Unit Ergebnisanzeige

ABAP Unit Ergebnisanzeige

Unit-Tests in ABAP OO Klassen

Zum Testen von ABAP OO Klassen übernimmt das ABAP Unit-Framework die Arbeit, die beim Testen von Reports selbst durchzuführen sind. Für eine geöffnete Klasse kann über Hilfsmittel -> Testklassengenerierung eine ABAP Unit Testklasse mit allen nötigen Rümpfen generiert werden.

ABAP Unit Generierung

ABAP Unit Generierung

Für jede vorhandene Methode in der zu testenden Klasse wird eine Testmethode angelegt. Für diese sind nur noch Ausgangswert und Erwartungswert nachzupflegen. Alles andere hat das Unit-Framework bereits erledigt. Nach dem Pflegen der beiden Werte kann der ABAP Unit-Test über einen Rechtsklick auf die Klasse Test->Modultest ausgeführt werden. Auch hier begrüßt einen die bereits von den Reports bekannte Ergbebnisanzeige im Fehlerfall.

Nützliche Methoden der Klasse CL_ABAP_UNIT_ASSERT

ASSERT_EQUALS  Prüft ob zwei Objekte gleich sind. Der Vergleich wird tief durchgeführt.
ASSERT_DIFFERS  Prüft die Ungleichheit von zwei elementaren Datentypen.
ASSERT_BOUND  Überprüft die Referenz wie die ABAP-Anweisung „IS BOUND“.
ASSERT_INITIAL  Überprüft das Objekt wie die ABAP-Anweisung „IS INITIAL“.
ASSERT_TEXT_MATCHES  Überprüft eine Zeichenkette auf einen regulären Ausdruck.
FAIL  Lässt den Testfall fehlschlagen.

In diesem Artikel habe ich die grundlegenden Möglichkeiten von ABAP Unit aufgezeigt. Im nächsten Beitrag gehe ich näher auf Best Practices und den genauen Einsatz im ABAP Umfeld ein.

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.