Show TOC

VorgehensweiseMessungen sichern und neu laden Dieses Dokument in der Navigationsstruktur finden

Vorgehensweise

Angenommen, Sie wollen für eine Gruppe von Tests Abdeckungsmessungen durchführen. Einige der Tests sind aufwendiger als ein typischer Modultest (beispielsweise ein ECATT-Integrationstest). Andere müssen mit einem anderen Benutzer gestartet und ein paar müssen sogar manuell ausgeführt werden.

Eine typische Lösung für dieses Szenario ist die Einplanung von zwei Hintergrundjobs, die zum Beispiel jede zweite Woche ausgeführt werden. Der erste Job läuft jeden Montag, um eine Messung zu starten und persistieren. Der zweite Job läuft jeden Freitag, um die Messung abzurufen und zu stoppen. Nach Beendigung der Messung können Sie die Ergebnisse der Quelltextabdeckung berechnen.

Zwischen dem Starten und Stoppen der Messung zeichnet das Coverage API alle automatischen und manuellen Tests der Benutzer, die in der Messung angegeben sind.

Das Coverage API funktioniert in diesem Szenario fast wie der Coverage Analyzer (Transaktion SCOV), in dem alle Aktivitäten des angegebenen Benutzers und nicht nur die relevanten Tests aufgezeichnet werden.

Hinweis Hinweis

Stellen Sie in diesem Szenario sicher, dass der zu messende Quelltext nicht importiert oder auf irgendeine Weise geändert wird, während die Messung läuft.

Wenn der gemessene Quelltext geändert wird, löscht das System automatisch die Rohdaten der betroffenen Programme. Dies ist erforderlich: Die Rohdaten stimmen nicht mehr mit dem Quelltext überein.

Alle von Ihnen berechneten Ergebnisse sind in dieser Situation nicht mehr verlässlich und nicht nachvollziehbar.

Ende des Hinweises.
Coding-Beispiel

Der Beispielquelltext für das Sichern einer Messung und dem späteren Abrufen und Stoppen der Messung:

Syntax Syntax

  1. REPORT START_MEASUREMENT_AND_SAVE.
    * This report starts a measurement and saves it.
    * A second report, perhaps started interactively, 
    * stops the measurement and calculates coverage 
    * results. 
    
    DATA: factory        TYPE REF TO if_scv_factory,
          measurement    TYPE REF TO if_scv_measurement,
          users          TYPE if_scv_measurement=>users,
          repository     TYPE REF TO if_scv_repository, 
          measurement_id TYPE cva_uuid,
          id_records     TYPE my_measurements.
    
    * Create a measurement
    factory = cl_scv_coverage_api=>get_factory( ).
    
    APPEND 'AUNIT_USER' TO users. "Coverage will be recorded
    APPEND 'ECATT_USER' TO users. "for these users.
    
    measurement = factory->create_measurement(
                             i_users = users ).
    
    * Start the measurement
    measurement->start( ).
    
    * Save the measurement and store the measurement ID
    * for use when stopping the measurement.
    repository = cl_scv_coverage_api=>get_repository( ).
    measurement_id = repository->save_measurement( measurement ).
    
    * You need to save the UUID for reloading the measurement
    id_records-id = measurement_id.
    id_records-date = sy-datum.
    INSERT INTO z_table_of_measurements VALUES id_records.
    
Ende des Quelltextes.

Während die Messung läuft (Status Gestartet), zeichnet das Coverage API sämtliche Tests und andere Aktivitäten der Benutzer AUNIT_USER und ECATT_USER (in diesem Beispiel) auf.

Um die Messung zu beenden, die Ergebnisse zu berechnen und in Meldungen weiterzuleiten, können Sie ein zweites Programm ausführen, das so wie dieser Beispielquelltext aussieht:

Syntax Syntax

  1. REPORT STOP_MEASUREMENT_AND_REPORT.
    
    DATA: measurement     TYPE REF TO if_scv_measurement,
          repository      TYPE REF TO if_scv_repository, 
          result          TYPE REF TO if_scv_result,  
          measurement_id  TYPE cva_uuid,
          id_records      TYPE my_measurements.
    
    * Get the UUID of the active measurement
    SELECT SINGLE * FROM my_table_of_measurements INTO id_records WHERE...
    measurement_id = id_records-id.
    
    * Get the repository
    repository = cl_scv_coverage_api=>get_repository( ).
    
    * Retrieve the measurement and stop it
    measurement = repository->load_measurement( measurement_id ).
    
    measurement->stop( ).
    
    * Calculate and report results....
    result = measurement->build_package_result( "MY_PACKAGE" ). 
    ...
    
Ende des Quelltextes.

Weitere Informationen über das Sichern und Abrufen von eigenständigen Messungen aus dem Repository des Coverage API finden Sie unter Schritt 6: Ergebnisse der Quelltextabdeckung sichern

Weitere Informationen über das Sichern und dem erneuten Laden von Messungen in Messreihen finden Sie unter Schritt 5: Messungen und Ergebnisse in einer Messreihe sichern

Weitere Informationen über die Verwendung von Ergebnissen für das Melden von Statistiken zur Quelltextabdeckung und das Anzeigen von Ergebnissen finden Sie unter Schritt 3: Ergebnisse der Quelltextabdeckung berechnen, Schritt 4: In der Hierarchie der Ergebnisse navigieren und Schritt 5: Ergebnisse der Quelltextabdeckung anzeigen.