ABAP Unit Test Abdeckungsmessung

Das Unit Test Framework bietet nicht nur das automatische Testen von einzelnen Funktionseinheiten. Dank der Abdeckungsmessung kann es auch genutzt werden, unnötige oder verwaiste Codeabschnitte zu identifizieren. Außerdem lässt sich so prüfen, ob die Testfälle wirklich vollständig sind.

Beispiel

Als Beispiel nehme ich die bekannte Methode zum Prüfen des Datums. Am Ende der Methode füge ich nun diese Anweisung ein

IF 1 <>  1.
RAISE invalid_date.
ENDIF.

Die Prüfung schlägt immer fehl, so dass der Code Block nie aufgerufen wird.

Neben dem einfachen Aufruf des Unit Tests lässt sich dieser auch mit einer Abdeckungsmessung aufrufen.

Unit Test mit Abdeckungsmessung aufrufen
Unit Test mit Abdeckungsmessung aufrufen

Im Ergebnis des Unit Tests erhalten wir nun einen weiteren Reiter "Abdeckungsmetrik"

Unit Test Ergebnis der Abdeckungsmessung
Unit Test Ergebnis der Abdeckungsmessung

Wie in der Ausgabe zu sehen, wurden bei den Tests 94,12% des Codes verwendet. Durch Vorwärtsnavigation gelangt man zum eingefärbten Quellcode aus dem direkt ersichtlich ist, welche Anweisungen nicht aufgerufen wurden.

Unit Test Abdeckungsmessung Quellcode
Unit Test Abdeckungsmessung Quellcode mit verwaistem Code

Fazit

Anhand der nicht ausgeführten Quellcode Abschnitte lassen sich zwei Schlussfolgerungen formulieren.

  1. Der Quellcode ist überflüssig da es keinen Fall gibt, der ihn verwendet
  2. Die Testfälle sind unvollständig, da nicht alle Verzweigungen des Codes aufgerufen wurden