This is a test message to test the length of the message box.
Login
ABAP Unit Analysis
Created by Software-Heroes

ABAP Unit - Analysis

189

This article is about the analysis of the test cases that we have written, how do we get the necessary information and how we can interpret it.



Now that you have learned what ABAP Unit actually is, how to set up a simple test and where you can use the framework everywhere, we will deal with the topic of analysis here. What options are still available to you?

 

Test result

If you run the unit test normally, the test class or classes will be searched for in the current object and executed one after the other. At the end, the result is output, which will hopefully be positive.

 

The output takes place in the ABAP Unit View in Eclipse and offers a simple overview of the test results. You still have the option to switch between the different types of errors with the checkboxes, for example if you only want to see the errors. In the upper part you have some buttons that offer you the following options:

  • Open/close the classes, test classes and methods
  • Filter the result and only repeat certain test methods
  • Repeat test
  • History of tests carried out
  • More settings

 

If the test should break off, the picture could look different. In this case, the class with the error is expanded and the method that had an error is displayed. The error trace is displayed in the lower area or on the right side of the window.

 

By double-clicking on the stack (highlighted line in the screenshot), you can jump directly to the assert in your test case to start analyzing the error more precisely.

 

Coverage Analysis

With the coverage analysis, you can also analyze the coverage of your test cases. This is about how much of the coding in the object is covered by the test cases. You can store a large number of test cases in a class, but if they all cover the same branches and do not simulate any special cases, then they are not complete and do not cover 100%.

For the sake of clarity, we create the following class, which provides a method and performs a division.

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.

 

To do this, we define the following test class with a test case for the method:

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.

 

This time we run the test with CTRL + SHIFT + F11 and get a successful result again. In this case, however, a coverage measurement was also carried out. We find this in Eclipse in a separate view, the “ABAP Coverage”.

 

As you can see, the coverage is only 60% although we have tested the method properly? To do this, we switch to the class, but don't forget to deactivate the “Hide Highlighting” button beforehand so that we can see the markings in the source code.

 

Here you can quickly see that we have not set up a negative test case, so what actually happens if we pass a zero for the second number? Here it would be worthwhile to create a second test method and also to go through this case. The coverage measurement gives you conclusions about the quality and coverage of your code by your test class.

 

Conclusion

This article is about analyzing your test class in terms of the quality of your test cases and the coverage of the code by your tests. However, you should also take into account that 100% coverage does not always make sense and is sometimes too expensive to realize.


Included topics:
ABAP UnitABAPUnit TestsAnalysis
Comments (0)



And further ...

Are you satisfied with the content of the article? We post new content in the ABAP area every Friday and irregularly in all other areas. Take a look at our tools and apps, we provide them free of charge.


ABAP Unit - Test execution

Category - ABAP

What options are there for executing ABAP Unit and what hidden functions might you not know about? More details about the different modes in this article.

06/25/2024

ABAP Unit - Automation

Category - ABAP

When do objects break during development and what side effects can adjustments have? In this article we take a closer look at the topic.

01/05/2024

ABAP Unit - TDF (Function Double)

Category - ABAP

In this article, let's take a look at how we can deal with function modules as dependencies without testing them as well.

04/07/2023

RAP - ABAP Unit (Service)

Category - ABAP

How do you actually test the service of an interface or RAP app automatically? In this article we look at unit tests for OData services.

01/20/2023

RAP - ABAP Unit (Business Object)

Category - ABAP

At this point, we'll take a look at how we can test our RAP Business Object automatically in order to check all important functions at the touch of a button.

01/13/2023