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

ABAP Unit - Analyse

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)

ABAP Unit - Tipps

Kategorie - ABAP

Zum Abschluss der Serie noch ein paar Tipps die wir dir mit auf den Weg geben wollen. Hier geht es um Shortcuts und allgemeine Hinweise zu den Tests.

12.11.2021

ABAP Unit - Software-Architektur

Kategorie - ABAP

Wie könnte die Ziel Architektur in einem SAP System aussehen, wenn wir uns die eigenen Software Komponenten anschauen? Dies wollen wir in diesem Artikel klären.

05.11.2021

ABAP Unit - Testbarer Code (Teil 3)

Kategorie - ABAP

Hier schauen wir uns die Möglichkeiten etwas genauer an, wie man abhängige Komponenten im eigenen Coding zur Testlaufzeit deaktivieren können.

29.10.2021

ABAP Unit - Testbarer Code (Teil 2)

Kategorie - ABAP

In diesem Artikel geht es um das Thema Test Isolation und wie es unseren Code testbarer macht.

22.10.2021

ABAP Unit - Testbarer Code (Teil 1)

Kategorie - ABAP

In diesem Artikel schauen wir uns an, wie du auch in älterem Code sauber neue Funktionen implementieren und du diese im Anschluss auch testen kannst.

08.10.2021