This is a test message to test the length of the message box.
Login
ABAP Unit Analyse
Erstellt von Software-Heroes

ABAP Unit - Analyse

117

In diesem Artikel geht es um die Analyse der Testfälle die wir geschrieben haben, wie kommen wir an die nötigen Informationen und wie können wir diese interpretieren.

Werbung


Nachdem du nun gelernt hast, was eigentlich ABAP Unit ist, wie du einen einfachen Test aufsetzt und wo du überall das Framework einsetzen kannst, beschäftigen wir uns hier mit dem Thema der Analyse. Welche Möglichkeiten stehen dir weiterhin zur Verfügung.

 

Testergebnis

Wenn du den Unit Test normal ausführst, dann wird die Testklasse bzw. die Testklassen im aktuellen Objekt gesucht und nacheinander ausgeführt. Am Ende erfolgt die Ausgabe des Ergebnisses, das hoffentlich positiv ausfällt.

 

Die Ausgabe erfolgt im ABAP Unit View in Eclipse und bietet eine einfache Übersicht des Testergebnisses. Dabei hast du noch die Möglichkeit zwischen den verschiedenen Fehlertypen mit den Checkboxen zu wechseln, wenn du zum Beispiel nur die Fehler sehen möchtest. Im oberen Teil hast du einige Buttons, die dir die folgenden Optionen bieten:

  • Auf-/Zuklappen der Klassen, Testklassen und Methoden
  • Ergebnis filtern und nur bestimmte Testmethoden noch einmal durchführen
  • Test wiederholen
  • Historie zu durchgeführten Tests
  • weitere Einstellungen

 

Sollte der Test einmal abbrechen, dann könnte das Bild entsprechend anders aussehen. In diesem Fall ist die Klasse mit dem Fehler aufgeklappt und die Methode wird angezeigt, die einen Fehler hatte. Der Fehler-Trace wird dir im unteren Bereich oder auf der rechten Seite des Fensters angezeigt.

 

Per Doppelklick auf den Stack (markierte Zeile im Screenshot), kannst du direkt zum Assert in deinem Testfall springen, um mit der genaueren Analyse des Fehlers zu beginnen.

 

Abdeckungsmessung

Mit der Abdeckungsmessung oder auch Coverage Analyse kannst du zusätzlich noch die Abdeckung deiner Testfälle analysieren. Hier geht es darum, wie viel des Codings im Objekt durch die Testfälle abgedeckt werden. Du kannst in einer Klasse sehr viele Testfälle hinterlegen, wenn sie aber alle die gleichen Verzweigungen abdecken und keine Sonderfälle simulieren, dann sind sie nicht vollständig und decken keine 100% ab.

Für die Verdeutlichung legen wird die folgende Klasse an, die eine Methode zur Verfügung stellt und eine Division durchführt.

CLASS zcl_demo_coverage DEFINITION PUBLIC FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    TYPES:
      td_result TYPE p LENGTH 15 DECIMALS 5.

    CONSTANTS:
      c_fail TYPE td_result VALUE -999.

    METHODS:
      divide_numbers
        IMPORTING
                  id_num1          TYPE i
                  id_num2          TYPE i
        RETURNING VALUE(rd_result) TYPE td_result.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.


CLASS zcl_demo_coverage IMPLEMENTATION.
  METHOD divide_numbers.
    TRY.
        rd_result = id_num1 / id_num2.
      CATCH cx_sy_zerodivide.
        rd_result = c_fail.
    ENDTRY.
  ENDMETHOD.
ENDCLASS.

 

Dazu definieren wir die folgende Testklasse mit einem Testfall für die Methode:

CLASS ltc_class_basic DEFINITION FINAL FOR TESTING
  DURATION SHORT
  RISK LEVEL HARMLESS.

  PRIVATE SECTION.
    METHODS:
      divide_10_and_2 FOR TESTING.
ENDCLASS.


CLASS ltc_class_basic IMPLEMENTATION.
  METHOD divide_10_and_2.
    DATA(lo_cut) = NEW zcl_demo_coverage( ).

    DATA(ld_result) = lo_cut->divide_numbers( id_num1 = 10 id_num2 = 2 ).

    cl_abap_unit_assert=>assert_equals( act = ld_result exp = 5 ).
  ENDMETHOD.
ENDCLASS.

 

Wir führen den Test dieses Mal mit STRG + SHIFT + F11 aus und bekommen wieder ein erfolgreiches Ergebnis. In diesem Fall wurde aber auch zusätzlich eine Abdeckungsmessung durchgeführt. Diese finden wir in Eclipse in einer eigenen View, der “ABAP Coverage”.

 

Wie du siehst beträgt die Abdeckung lediglich 60% obwohl wir doch die Methode sauber getestet haben? Dazu wechseln wir in die Klasse, aber vorher nicht vergessen den Button “Hide Highlighting” zu deaktivieren, damit wir die Markierungen im Quellcode sehen.

 

Hier wird schnell ersichtlich, dass wir keinen negativen Testfall aufgebaut haben, also was passiert eigentlich, wenn wir für die zweiten Nummer eine Null übergeben? Hier würde es sich lohnen eine zweite Testmethode anzulegen und auch diesen Fall zu durchlaufen. Die Abdeckungsmessung gibt dir Rückschlüsse über die Qualität und Abdeckung deines Codes durch deine Testklasse.

 

Fazit

In diesem Artikel gin es um die Analyse deiner Testklasse im Hinblick auf die Qualität deiner Testfälle und die Abdeckung des Codes durch deine Tests. Du solltest allerdings auch berücksichtigen, dass eine 100% Abdeckung nicht immer Sinn macht und manchmal ein zu hoher Aufwand ist.


Enthaltene Themen:
ABAP UnitABAPUnit TestsAnalyse
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


BTP - ABAP Unit Runner

Kategorie - ABAP

Wie kannst du deine ABAP Unit Tests auf dem ABAP Environment regelmäßig ausführen und dir die Ergebnisse zukommen lassen? Aktuell gibt es dafür keinen Standard.

11.02.2025

ABAP Unit - Testausführung

Kategorie - ABAP

Welche Möglichkeiten gibt es zur Ausführung von ABAP Unit und welche versteckten Funktionen kennst du vielleicht noch nicht? Mehr Details zu den verschiedenen Modi in diesem Artikel.

25.06.2024

ABAP Unit - Automatisierung

Kategorie - ABAP

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.

05.01.2024

ABAP Unit - TDF (Function Double)

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal an, wie wir mit Funktionsbausteinen als Abhängigkeit umgehen können, ohne diese mitzutesten.

07.04.2023

RAP - ABAP Unit (Service)

Kategorie - ABAP

Wie testet man den Service einer Schnittstelle oder RAP App eigentlich automatisch? In diesem Artikel schauen wir uns Unit Tests für OData Services an.

20.01.2023