Show TOC

Messungen der Quelltextabdeckung zusammenführenLocate this document in the navigation structure

Vorgehensweise

Sie können eine Gruppe von Messungen zusammenführen, um eine neue Messung anzulegen, die die zusammengeführten Messungen miteinander kombiniert.

Beispiel: Angenommen, Sie haben eine Gruppe von ähnlichen Messungen, die eigentlich zusammen gehören. Sie wollen eine einzige aggregierte Statistik zur Quelltextabdeckung für die Verwaltung auf einer höheren Ebene. Das Zusammenführen ermöglicht Ihnen diese aggregierte Ergebnis.

Sie können die zusammengeführte Messung genauso verwenden wie jede andere Messung - Sie können Ergebnisse daraus berechnen, sie im Repository sichern usw.

Das Zusammenführen kombiniert die Rohdaten der Messungen basierend auf einer der drei Strategien:

  • CE_SCV_MERGE_STRATEGY=>UNION: Legt eine Messung an, die die Quelltextabdeckung aller Programme in den zusammengeführten Messungen aggregiert. Beantwortet die Frage: "Was ist die Gesamtquelltextabdeckung, die sich aus meinen Messungen ergibt?"

  • CE_SCV_MERGE_STRATEGY=>INTERSECTION: Legt eine Messung an, die die Quelltextabdeckung aller Programme aggregiert, die während der beiden Messungen ausgeführt wurden. Beantwortet die Frage: "Was ist die Gesamtquelltextabdeckung der Objekte, die in beiden Messungen ausgeführt wurden?"

  • CE_SCV_MERGE_STRATEGY=>DIFFERENCE: Legt eine Messung an, die die Quelltextabdeckung aller Programme meldet, die während der ersten Messung und nicht in einer anderen der zusammengeführten Messungen ausgeführt wurden. Beantwortet die Frage: "Was ist die Quelltextabdeckung der Objekte, die nur in einer Messungen ausgeführt wurden?"

Voraussetzungen für das Kombinieren von Messungen:

  • Die Rohdaten aller Messungen, die zusammengeführt werden sollen, müssen noch verfügbar sein (nicht gelöscht oder finalisiert).

  • Die Messungen, die zusammengeführt werden sollen, wurden gestoppt (es werden keine Daten mehr gesammelt).

Sie können beliebig viele Messungen gleichzeitig zusammenführen.

Coding-Beispiel

Beispielquelltext für das Zusammenführen von Messungen:

* Source measurements 
DATA: factory             TYPE REF TO if_scv_factory,
      users       TYPE if_scv_measurement=>users,
      measurement         TYPE REF TO if_scv_measurement,
      another_measurement TYPE REF TO if_scv_measurement.
      
* Merging of measurements
DATA: measurements       TYPE if_scv_measurement=>tab,
      merged_measurement TYPE REF TO if_scv_measurement.

* Results
DATA: result   TYPE REF TO if_scv_result,
      coverage TYPE REF TO if_scv_coverage,
      text     TYPE string.

* Create two measurements and measure two test programs
factory = cl_scv_coverage_api=>get_factory( ).

APPEND sy-uname TO users.

measurement = factory->create_measurement(
  i_local_server_only = abap_true
  i_users             = users ).

another_measurement = factory->create_measurement(
  i_local_server_only = abap_true
  i_users             = users ).

* First measurement
measurement->start( ).
SUBMIT rsdssmpl_performance AND RETURN.
measurement->stop( ).

* Second measurement
another_measurement->start( ).
SUBMIT rsdssmpl_status AND RETURN.
another_measurement->stop( ).

* Report the code coverage of the first measurement
result = measurement->build_package_result( 'SMOI' ).
coverage  = result->get_coverage( if_scv_coverage=>con_statement ).
text = |Package SMOI has after measurement 1 a statement coverage of { coverage->get_percentage( ) }%|.
WRITE:/ text.

* Report the code coverage of the second measurement
result = another_measurement->build_package_result( 'SMOI' ).
coverage  = result->get_coverage( if_scv_coverage=>con_statement ).
text = |Package SMOI has after measurement 2 a statement coverage of { coverage->get_percentage( ) }%|.
WRITE:/ text.

* Merge the measurements
* Insert the measurements to be merged into a parameter table
INSERT measurement INTO TABLE measurements.
INSERT another_measurement INTO TABLE measurements.

* Here are the constants for the supported merge strategies
* CE_SCV_MERGE_STRATEGY=>UNION  Merge Coverage Measurements
* CE_SCV_MERGE_STRATEGY=>INTERSECTION Intersect Coverage Measurements
* CE_SCV_MERGE_STRATEGY=>DIFFERENCE Report Differences of Coverage Measurements

* We use the UNION strategy to aggregate the code coverages
merged_measurement = factory->merge_measurements(
  i_name         = 'myMerger'
  i_measurements = measurements
  i_strategy     = ce_scv_merge_strategy=>union ).

* Report the merged code coverage
result = merged_measurement->build_package_result( 'SMOI' ).
coverage = result->get_coverage( if_scv_coverage=>con_statement ).
text = |Object SMOI has a merged statement coverage of { coverage->get_percentage( ) }%|.
WRITE: / text.
            

In diesem Beispiel werden zwei eigenständige Messungen kombiniert. Sie können jedoch auch Messungen in Messreihen zusammenführen. Sie können sogar zusammengeführte Messungen zusammenführen.