‎2008 Mar 07 3:43 AM
hi all,
can anyone help me on code comparision and unit testing. i know se39 only should it compare the dependents code also. please advise me on this as well as unit testing how to do it.
‎2008 Mar 07 3:49 AM
Unit testing is the one in which the developer himself test the code.
In Unit testing the developer will test whether all the statements will execute based on different conditions.
There should not be any dead code after Unit test.
Dead Code means, for any given combination the control will not go to the statement.
ABAP Unit Tests enable you to write test cases for certain Methods, to check their behaviour and displaying a appropriate protocoll.
These test cases are implemented using usual ABAP classes / methods and can be executed via menü in SE24: Class -> Unit Test
Check these links.
‎2008 Mar 07 3:56 AM
Here is an example of a local class and a local unit test implemented in the same report. Pressing Ctrl+F10 in ABAP editor will execute the Unit Test:
************************************************************************
* CLASS LCL_TO_BE_TESTED DEFINITION *
************************************************************************
* Definition of local Class LCL_TO_BE_TESTED to be tested using ABAP *
* Unit Tests *
************************************************************************
CLASS lcl_to_be_tested DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
return_a
RETURNING
value(return) TYPE string.
ENDCLASS. "CLASS lcl_to_be_tested DEFINITION
************************************************************************
* CLASS LCL_TO_BE_TESTED IMPLEMENTATION *
************************************************************************
* Implementation of local Class LCL_TO_BE_TESTED to be tested using *
* ABAP Unit Tests *
************************************************************************
CLASS lcl_to_be_tested IMPLEMENTATION.
METHOD return_a.
return = 'A'.
ENDMETHOD. "METHOD return_a
ENDCLASS. "CLASS lcl_to_be_tested IMPLEMENTATION
************************************************************************
* CLASS LCL_TEST DEFINITION *
************************************************************************
* Definition of local Class LCL_TEST, which implements the ABAP Unit *
* Test for local Class LCL_TO_BE_TESTED *
************************************************************************
CLASS lcl_test DEFINITION FOR TESTING.
PUBLIC SECTION.
CLASS-DATA:
c_ts_start TYPE i READ-ONLY,
c_ts_end TYPE i READ-ONLY,
c_dur TYPE i READ-ONLY, "duration of all test methods
r_runtime TYPE REF TO if_abap_runtime READ-ONLY,
c_no_of_tests TYPE i READ-ONLY. "number of test methods executed
DATA:
m_ts_start TYPE i READ-ONLY,
m_ts_end TYPE i READ-ONLY,
m_dur TYPE i READ-ONLY. "duration of test method
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-METHODS:
class_setup,
class_teardown.
METHODS:
test__return_a FOR TESTING,
test__return_b FOR TESTING,
setup FOR TESTING,
teardown FOR TESTING.
ENDCLASS. "CLASS lcl_test DEFINITION FOR TESTING
************************************************************************
* CLASS LCL_TEST IMPLEMENTATION *
************************************************************************
* Implementation of local Class LCL_TEST, which implements the ABAP *
* Unit Test for local Class LCL_TO_BE_TESTED *
************************************************************************
CLASS lcl_test IMPLEMENTATION.
* **********************************************************************
* * METHOD TEST__RETURN_A *
* **********************************************************************
* * 1st Test-Method to check, whether static Method RETURN_A of local *
* * Class LCL_TO_BE_TESTED returns the Value 'a' *
* **********************************************************************
METHOD test__return_a.
DATA:
lv_return TYPE string.
lv_return = lcl_to_be_tested=>return_a( ).
cl_aunit_assert=>assert_equals( act = lv_return
exp = 'a' ).
ENDMETHOD. "METHOD test__return_a
* **********************************************************************
* * METHOD TEST__RETURN_B *
* **********************************************************************
* * 2nd Test-Method to check, whether static Method RETURN_A of local *
* * Class LCL_TO_BE_TESTED returns the Value 'A' *
* **********************************************************************
METHOD test__return_b.
DATA:
lv_return TYPE string.
lv_return = lcl_to_be_tested=>return_a( ).
cl_aunit_assert=>assert_equals( act = lv_return
exp = 'A' ).
ENDMETHOD. "METHOD test__return_b
* **********************************************************************
* * METHOD CLASS_SETUP *
* **********************************************************************
* * Method used by ABAP Unit Test to start a Unit Test. Executed only *
* * once upon Start of an ABAP Unit Test. *
* **********************************************************************
METHOD class_setup.
* initialize Runtime Timer -> LCL_TEST=>R_RUNTIME
lcl_test=>r_runtime = cl_abap_runtime=>create_hr_timer( ).
* get 1st runtime timestamp (Class) -> LCL_TEST=>C_TS_START
lcl_test=>c_ts_start = lcl_test=>r_runtime->get_runtime( ).
ENDMETHOD. "METHOD class_setup
* **********************************************************************
* * METHOD CLASS_TEARDOWN *
* **********************************************************************
* * Method used by ABAP Unit Test to end a Unit Test. Executed only *
* * once upon End of an ABAP Unit Test. *
* **********************************************************************
METHOD class_teardown.
* get 2st runtime timestamp (Class) -> LCL_TEST=>C_TS_END
lcl_test=>c_ts_end = lcl_test=>r_runtime->get_runtime( ).
* calculate overall runtime of ABAP Unit Test
* -> LCL_TEST=>C_DUR
lcl_test=>c_dur = c_ts_end - c_ts_start.
ENDMETHOD. "METHOD class_teardown
* **********************************************************************
* * METHOD SETUP *
* **********************************************************************
* * Method used by ABAP Unit Test to initialize the Execution of a *
* * Test Run (^= Execution of a Test-Method). *
* **********************************************************************
METHOD setup.
* count number of test methods executed during ABAP Unit Test
* -> LCL_TEST=>C_NO_OF_TESTS
ADD 1 TO lcl_test=>c_no_of_tests.
* get 1st timestamp (Test-Method) -> ME->M_TS_START
me->m_ts_start = lcl_test=>r_runtime->get_runtime( ).
ENDMETHOD. "METHOD setup
* **********************************************************************
* * METHOD TEARDOWN *
* **********************************************************************
* * Method used by ABAP Unit Test to conclude the Execution of a Test- *
* * Run (^= Execution of a Test-Method). *
* **********************************************************************
METHOD teardown.
* get 2nd timestamp (Test-Method) -> ME->M_TS_END
me->m_ts_end = lcl_test=>r_runtime->get_runtime( ).
* calculate duration of Test-Method -> ME->M_DUR
me->m_dur = m_ts_end - m_ts_start.
ENDMETHOD. "METHOD teardown
ENDCLASS. "CLASS lcl_test IMPLEMENTATION
Regards,
Chandru
‎2008 Mar 07 4:00 AM
Abhi,
SE39 will give the comparision in between two programs in terms of whereall the coding defers.
As far as testing is concerned we do it keeping the User requirments in mind,whether the progams satisfies those requriements or not.ST30,SCAT,SECATT are the tcodes which can be used for Performance Analysis and Testing,evenI am looking forward for some nice documents on the above mentioned tcodes.
K.Kiran.