O'Reilly logo

Unit-Tests mit ABAP® Unit by Damir Majer

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

81
6 ABAP Unit – Grundlagen
»Praktisches Können erwächst nur aus dem TUN.«
Ralph Waldo Emerson
In diesem Kapitel erhalten Sie die notwendigen Grundlagen, um Unit-Tests mithilfe
von ABAP Unit zu erstellen und in Ihrem Entwicklungsprozess einzusetzen. Anhand
eines Praxisbeispiels werden die Grundlagen des ABAP Unit Frameworks erklärt.
Sie erhalten Einblick in den Prozess der Unit-Testerstellung und sehen, wie systema-
tische Testmethodiken im Zusammenhang mit ABAP Unit eingesetzt werden.
Übersicht über das Kapitel:
Was bedeutet Unit Testing für den Entwickler?
Grundlagen des ABAP Unit
Prüfmethoden der Klasse
CL_AUNIT_ASSERT
Testklassen und Testmethoden des ABAP Unit Frameworks
Organisation und Einsatz des ABAP Unit Frameworks
Schritt-für-Schritt-Anleitung, um ABAP Unit-Tests zu erstellen
Best Practices beim Einsatz von ABAP Unit
ABAP Unit ist die SAP-eigene Umsetzung des xUnit Frameworks. Mit der Inte-
gration des ABAP Unit in das SAP-Release 6.40 ist es nun möglich, dieses Frame-
work für das Erstellen von Unit-Tests zu nutzen. Bevor wir uns mit der Philoso-
phie und dem Aufbau des ABAP Unit Frameworks beschäftigen, hier noch eine
Antwort von Kent Beck (dem Ur-Vater des eXtreme Programming (XP)) zur
Frage, was für ihn eigentlich Unit Testing ist:
»A test written from the perspective of the programmer.«
Diese Antwort enthält die wesentliche Botschaft für den Entwickler. Unit-Tests,
also auch ABAP Unit-Tests, sind Tests, die vom Entwickler selber programmiert
werden.
6 ABAP Unit – Grundlagen
82
Der Einsatz des ABAP Unit bedeutet also
Der Entwickler schreibt seine eigenen Tests.
Das Programmieren dieser Tests erfolgt während der Erstellung der Software.
Die Tests werden demzufolge in den Entwicklungssystemen erstellt.
Dem Entwickler ist die innere Struktur des Testobjekts bekannt, demzufolge
sind die Unit-Tests White-Box-Tests.
Aber diese Verpflichtungen gehen Sie als Entwickler gerne ein, denn die Vorteile
von Unit Testing machen den Einsatz mehr als wett:
Entwickler sind produktiver, wenn sie Unit-Tests einsetzen.
Die Qualität des Softwareproduktes steigt.
Unit-Tests können als Dokumentation zu den getesteten Einheiten genutzt
werden.
Durch den Test von Programmeinheiten während der Entwicklung wird die
Architektur und das Design während einer frühen Entwicklungsphase
geprüft. Sollten Architekturänderungen notwendig sein, dann können diese
rechtzeitig ohne großen Aufwand getätigt werden.
Unit-Tests können automatisiert werden, insbesondere können damit Fehler-
nachtests automatisiert werden.
Das Refactoring von Source-Code wird erleichtert, da Unit-Tests sicherstel-
len, dass das Softwareprodukt nach dem Refactoring genauso funktioniert
wie vorher.
Damit dieser Teil keine zu theoretische Vorstellung der ABAP-Syntaxelemente
wird, sondern ein praktischer Leitfaden zum Einsatz des Unit Testing, stelle ich
Ihnen die Sprachelemente mit einem größeren Praxisbeispiel vor.
83
6.1 Philosophie & Funktionsweise von ABAP Unit
6.1 Philosophie & Funktionsweise von ABAP Unit
Seit dem Basis-Release 6.40 ist ABAP Unit in die ABAP-Laufzeitumgebung inte-
griert. Mittels des Frameworks ist es möglich, einzelne Programmeinheiten zu
testen. ABAP Unit beruht auf dem einfachen Testprinzip, dass die Ist-Situation
mit der Soll-Situation (bezogen auf Variablen) geprüft wird. Das heißt nichts
anderes, als dass Sie Ihr Endergebnis mit einem vorher überlegten Soll-Ergebnis
prüfen. Um dieses Testprinzip umzusetzen, ermöglicht Ihnen ABAP Unit, mittels
Testklassen und Testmethoden Ihr Testcoding zu erstellen und in der Laufzeitum-
gebung auszuführen.
Für die folgenden Programmtypen können Sie ABAP Unit-Test implementieren
und ausführen:
Ausführbare Programme
Modulpools
Funktionsgruppen
Klassenpools
Bei der Implementierung von ABAP Unit-Tests haben Sie zwei Möglichkeiten.
Entweder Sie schreiben eigene Programme (bzw. Funktionsbausteine, Klassen
usw.) und trennen damit die Testprogramme von dem Produktivcoding, oder Sie
schreiben Ihr Testcoding direkt in die Programme, die getestet werden sollen
1
. Im
Grunde genommen sollten Sie beide Möglichkeiten kennen und bei dem Erstellen
der Unit-Tests bedenken.:
Abb. 6–1
Organisation Produktiv- und Testcoding
1. Die SAP-Terminologie für diese Möglichkeit lautet Language Integrated Testing.
6 ABAP Unit – Grundlagen
84
Pro und Contra der Implementierung des Testcodings
Pro Testcoding in eigenen Programmeinheiten
Die Testprogramme können in einem eigenständigen Paket gehalten wer-
den.
Das Testcoding ist getrennt vom Produktivcoding, es findet keine Vermi-
schung von Coding statt.
Beim Transport des Produktivcodings ist das Testcoding enthalten.
Abb. 6–2
Produktivcoding und Testcoding in einer Einheit
Contra Testcoding in eigenen Programmeinheiten
Häufig ist es so, dass Testcoding und Produktivcoding sehr eng verwoben
sind, dadurch könnte es sehr umständlich werden, Testcoding zu imple-
mentieren.
Ändert sich das Produktivcoding, könnte es passieren, dass die Testeinhei-
ten, die ja ausgelagert sind, nicht entsprechend angepasst werden und die
Unit-Tests nicht mehr aktuell sind.
Durch neue Versionen des Produktivcodings müssen Sie sicherstellen, dass
auch das ausgelagerte Testcoding die entsprechend aktuelle Variante des
Testcodings enthält.
Wenn Sie das Produktivcoding in andere Systeme transportieren, dann
dürfen Sie das Testcoding nicht vergessen. Es entsteht ein doppelter Auf-
wand beim Transport.
Hier stellt sich natürlich folgende Frage: Wenn das Testcoding und das Produk-
tivcoding in einer ausführbaren Einheit (beispielsweise einem Programm, einem
Funktionsbaustein oder einer Klasse) enthalten sind, wird dann in den Produktiv-
systemen das Testcoding ausgeführt, wenn das eigentliche Programm ausgeführt
wird?

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required