ABAP Unit - Automatisierung
Wann gehen in der Entwicklung Objekte kaputt und welche Seiteneffekte können Anpassungen haben? In diesem Artikel schauen wir uns das Thema einmal näher an.
Inhaltsverzeichnis
Schauen wir uns einmal die Automatisierung im Bereich ABAP Unit an und welche Vorteile du in deiner täglichen Arbeit damit erhalten kannst.
Einleitung
In der Software-Entwicklung sind Unit Tests weit verbreitet, dabei geht es zuerst einmal darum die verschiedenen Komponenten im System mit Tests zu bestücken, um diese individuell und automatisiert testen zu können. Jedes Objekt sollte daher so gut es geht testbar geschrieben sein und die Tests sollten so robust wie möglich sein, um nicht abhängig von Daten des Systems zu sein und häufige Anpassungen der Tests zu vermeiden.
Die Tests ermöglichen es, Anpassungen an dem Objekt vorzunehmen und zu validieren, ob alle definierten Tests noch funktionieren. Wenn die Tests vorhanden sind, erfolgt ein manuelles Testen der Komponenten im Nachgang. Bei jeder Änderung in der Zukunft, haben wir die Möglichkeit in Sekunden alle Tests durchzuführen, ohne diese selbst zu kennen.
Seiteneffekte
Eine hohe Abdeckung der Objekte im System, spannt ein großes Sicherheitsnetz, um auch Seiteneffekte von Anpassungen auf andere Entwicklungen zu validieren. Nehmen wir also an, wir ändern eine zentrale Komponente, die an vielen Stellen verwendet wird. Solch eine Komponente hat eigene Unit Tests, die bei der Ausführung validieren, dass die Klasse sich noch so verhält, wie unsere Testfälle definiert wurden.
Unsere Anpassungen hat nun aber Auswirkungen auf andere Objekte, die die Komponente ebenfalls verwenden. Wir haben allerdings nur schwer einen Überblick darüber und wollen auch nicht immer alle nutzenden Komponenten auch noch testen.
Klassischerweise gibt es hier zwei Fehlersituationen:
- Fehler im Compiler - Bereits, wenn wir das Objekt aufrufen, erwarten uns Fehlermeldungen, weil sich Schnittstellen in öffentlichen Methoden geändert haben oder Methoden komplett fehlen.
- Fehler beim Ausführen - Es werden nicht erwartete Werte von der Komponente zurückgegeben, die Fehler in unserer Anwendung verursachen.
Solche Seiteneffekte wollen wir sehr früh, möglichst bei der Entwicklung erkennen, um darauf reagieren zu können und Ausfallzeiten im produktiven Betrieb zu vermeiden.
ABAP Test Cockpit
Im ABAP Test Cockpit (ATC) kannst du ebenfalls konfigurieren, dass die Unit Tests ausgeführt werden, wenn die ATC Prüfung läuft. Hier gibt es die Möglichkeiten die Prüfung manuell über STRG + SHIFT + F2 zu starten, im Project Explorer mehrere Objekte zu prüfen oder das ATC so zu konfigurieren, dass bei Freigabe der Aufgabe auch die Unit Tests gestartet werden.
In der Konfiguration der Variante kannst du Einstellungen machen, welche Unit Tests in welcher Klassifizierung ausgeführt werden, um so kritische Tests zu vermeiden und keine Langläufer bei der Transportfreigabe zu haben.
{
"checkName": "ABAP_UNIT",
"parameters": [
{
"name": "MaximumRiskLevel",
"value": "11"
},
{
"name": "MaximumRuntimeCategory",
"value": "12"
},
{
"name": "RuntimeRestriction",
"value": "2"
},
{
"name": "DurationLong",
"value": "3600"
},
{
"name": "DurationMedium",
"value": "300"
},
{
"name": "DurationShort",
"value": "60"
}
]
}
On-Premise / Private Cloud
Im klassischen R/3 oder S/4 System gibt es den Report RS_AUCV_RUNNER, der als regelmäßiger Job eingeplant werden kann und zusätzliche Einstellungsmöglichkeiten enthält, um die Zuständigkeiten und Tests voneinander zu trennen.
RS_AUCV_RUNNER
Rufen wir also einmal den Report auf und prüfen die Punkte der Konfiguration bzw. des Selektionsbildes.
Der erste Teil ist vor allem für die Konfiguration der auszuführenden Objekte:
- Selektion - Auswahl der Selektion nach Paket oder Programmen, entsprechend stehen im Bereich darunter andere Einschränkungen zur Verfügung.
- Einschränkung Objekte - Die Einschränkung ist abhängig von der zuvor gewählten Selektion. In diesem Fall wurde die Einschränkung nach Paket gewählt. Wir können damit die Pakete angeben, die in diesem Lauf getestet werden sollen. Ebenso ob Unterpakete herangezogen werden und ob bestimmte Objekte nicht getestet werden.
- Risko und Dauer - Hier kann definiert werden, welche Unit Tests ausgeführt werden sollen. Dabei kommt es auf die vom Entwickler getroffene Klassifikation der Testklasse an. Sollen nur schnelle und harmlose Tests ausgeführt werden, kann dies definiert werden. Es besteht aber auch die Möglichkeit Tests zu starten, die Änderungen vornehmen oder Customizing anpassen.
Dabei stehen die folgenden Einstellungsmöglichkeiten zur Verfügung:
- Anzeige - Versand des Ergebnisses als E-Mail oder Anzeige der Daten als ALV.
- Sendungsoptionen - Es können verschiedene Empfänger oder Verteiler angegeben werden und es kann weiterhin definiert werden, ob eine Mail nur im Fehlerfall gesendet werden soll.
- Inhalt - Hier kann der Inhalt und Detailgrad der E-Mail definiert werden. Sollen die getesteten Objekte aufgelistet werden, sollen die URLs zu den ABAP Development Tools integriert werden.
Über den Detailgrad lassen sich die Informationen einstellen, die der User mit der E-Mail erhalten soll. Dabei gibt es die Abgrenzung nach:
- Keine Detailinformationen - Es wird eine Übersicht über das System und den Testzeitpunkt gegeben. Es folgt eine Auflistung der Teststatistik und im Nachgang der fehlgeschlagenen Tests.
- Basis Informationen - Enthält die Informationen von oben, plus weitere Details zu den abgebrochenen Testklassen und Tests.
- Volle Informationen - Enthält die Informationen von oben, plus alle ausgeführten Tests und Tesklassen. Damit kannst du selbst entscheiden, ob du auch die Klassen sehen möchtest, die eigentlich erfolgreich durchlaufen wurden.
ABAP Environment / Public Cloud
Hier gibt es aktuell noch keine Lösung, um alle Tests im System automatisch zu starten und auf Vollständigkeit zu prüfen. Wir denken aber, dass dieses Feature in der näheren Zukunft auch auf dem System zur Verfügung stehen wird, egal ob als Klasse oder als einplanbarer Job.
Fazit
Eine automatisierte Ausführung von Unit Tests ist schnell eingeführt und gibt dir jeden Tag die Sicherheit, dass das System noch so funktioniert, wie es definiert wurde. Dazu sind einige Vorarbeiten nötig, helfen aber im Alltag und neuen Kollegen das System zu verstehen und die Software sauber zu erweitern.
Weitere Informationen: