Codeabdeckung von Natural-Anwendungen (Code Coverage)

#### Search Results

Search

# Codeabdeckung von Natural-Anwendungen (Code Coverage)

Dieses Dokument enthält allgemeine Informationen über die Codeabdeckung (Code Coverage) von Natural-Anwendungen.

- Einführung in die Codeabdeckung

- Schnellstart für die Codeabdeckung

- Grundlegende Konzepte für die Codeabdeckung

- Plattformspezifische Codeabdeckung

- Tools zur Messung der Codeabdeckung

- Natural Code Coverage-Auswertungen

## Einführung in die Codeabdeckung

Normalerweise misst die Codeabdeckung den Grad, in dem der Quellcode eines Programms ausgeführt wird. Sie wird häufig für systematische Softwaretests verwendet. Je höher der Prozentsatz der Codeabdeckung ist, desto geringer ist die Wahrscheinlichkeit, dass der Code unentdeckte Softwarefehler in nicht ausgeführtem Code enthält.

Die Natural-Codeabdeckung (Code Coverage) wird zur Überwachung der ausgeführten Statements einer Natural-Anwendung verwendet. Sie sammelt die Abdeckungsdaten, während die Anwendung ausgeführt wird, und stellt Tools bereit, um die gesammelten Daten anschließend zu analysieren.

Die Code Coverage-Ansicht der Eclipse-basierten Entwicklungsumgebung NaturalONE und die Program Coverage-Tabelle der Profiler Utility zeigen - ausgedrückt in Prozent - wie viele der Statements der Natural-Objekte ausgeführt wurden. Das Natural Coverage Plugin für Jenkins visualisiert das Ergebnis eines Natural-Coverage-Zyklus direkt auf den Ergebnisseiten des Jenkins-Jobs.

Im NaturalONE-Editor und in der Tabelle Statement Coverage der Profiler Utility können Sie sehen, welche einzelnen Statement-Zeilen eines Natural-Objekts ausgeführt wurden. Hier können Sie auch sehen, welche Statement-Zeilen nicht oder nur teilweise abgedeckt wurden.

Wenn sich ein Statement im Quellcode über mehrere Zeilen erstreckt, wird in den Abdeckungsreports nur die Zeile erwähnt, in der das Statement beginnt.

Sie können die Abdeckungsdaten mit der Ausgabe der Profiler Utility im Text- oder Tabellenformat (CSV) exportieren. Die CSV-Tabelle kann mit einer Tabellenkalkulationssoftware wie Microsoft Excel ausgewertet werden.

### GP- und Quellcode-Abdeckung

Wenn ein Natural-Quellcode `INCLUDE`-Statements enthält, wird der entsprechende Copycode in das generierte Objekt (das GP = Generated Program, das vom Compiler generierte, ausführbare (katalogisierte) Objekt) aufgenommen. Hinsichtlich der Abdeckung können beim Natural Profiler zwei Statement-Zahlen überwacht werden:

1. Die Anzahl der Statements im GP, das alle Copycodes rekursiv einschließt (ein Copycode kann weitere Copycodes einschließen).

2. Die Anzahl der Statements im Quellcode (Source), die die Copycodes nicht enthalten.

Die GP-Abdeckung (GP Coverage) spiegelt den Prozentsatz der abgedeckten Statements in der GP wider mit Berücksichtigung der Copycode Statements, während die Quellcode-Abdeckung (Source Coverage) den Prozentsatz der abgedeckten Statements im Quellcode widerspiegelt, ohne die Copycodes zu berücksichtigen.

## Schnellstart für die Codeabdeckung

Dieser Abschnitt beschreibt kurz die Schritte, die erforderlich sind, um die Messung der Codeabdeckung einer Natural-Batch-Anwendung durchzuführen und die Ergebnisse zu sichten. Die hier bereitgestellten Anweisungen können als Richtlinie dienen, wenn Sie mit der Benutzung der Natural Code Coverage-Funktion beginnen. Detaillierte Informationen zu den Schritten finden Sie weiter unten in diesem Kapitel.

Die Schritte hängen, wie in der folgenden Grafik dargestellt, von der Bewertung ab, die Sie für Ihre Anwendung durchführen möchten:

1. Überprüfen Sie, ob die Voraussetzungen erfüllt sind.

2. Fügen Sie in dem Natural Batch-Job die Profiler Utility-Funktionen `COVERAGE` und `START` hinzu, um die Sammlung von Code-Abdeckungsdaten zu starten.

   Im folgenden Beispiel für z/OS wird das Natural-Programm `TESTCOVP` in der Library `COVDEMO` behandelt.

       //CMSYNIN  DD  *
       PROFILER
       FUNCTION=COVERAGE            /* Initialize coverage
         RESOURCE-NAME='ResNam'     /* Resource name
         REPLACE=YES                /* Replace the resource
         RESOURCE-LIB=RESLIB        /* Resource library
       FUNCTION=START               /* Start data collection
       END-PROFILER                 /* End Profiler input
       LOGON COVDEMO
       TESTCOVP
       FIN

   Im obigen Beispiel werden die Profiler-Abdeckungsdaten in eine Ressourcendatei mit dem Namen `ResNam.ncvf` in der Library `RESLIB` geschrieben. Siehe auch Initialisierung der Codeabdeckung (Code Coverage) und Datensammlung starten und anhalten.

3. Öffnen Sie die NCVF-Ressource in NaturalONE, um die Code Coverage-Ansicht zu erhalten.

4. Von der NaturalONE Code Coverage-Ansicht aus können Sie den Quellcode direkt bearbeiten. Der Editor zeigt alle Zeilen, die abgedeckte Statements enthalten, grün hinterlegt an.

5. Starten Sie einen Natural-Batch-Job mit der Profiler-Utility-Funktion `READ`, um die Programm- und Statement-Abdeckung und die Profiler-Statistiken zu drucken.

   Beispiel:

       FUNCTION=READ           /* Read Profiler data
         RESOURCE-LIB=RESLIB   /* Resource library
         RESOURCE-TYPE=NCVF    /* Use resource type
         EVENT=ON              /* Print statement co
         PROGRAM=ON            /* Print program cove
         STATISTICS=ON         /* Print statistics
         EXPORT=ON             /* write to work 7
         FORMAT=C              /* Semicolon/Comma/Text

   Wenn das Schlüsselwort `EXPORT` der `READ`-Funktion der Profiler-Utility aktiviert ist, wird die Ausgabe in Arbeitsdatei 7 (Work File 7) geschrieben. Wenn `FORMAT` als `C` oder `S` angegeben wird, wird das Ergebnis als kommagetrennte Werte (CSV) geschrieben, wobei ein Komma bzw. ein Semikolon als Trennzeichen verwendet wird.

6. Exportieren Sie die Daten von Arbeitsdatei 7 mit einem beliebigen Tool (z. B. FTP) als CSV-formatierte Datei in eine Windows-Umgebung, wenn Sie sie in Microsoft Excel weiterverarbeiten möchten.

Anmerkungen:

1. Wenn der Ressourcenname nicht explizit in der READ-Funktion der Profiler Utility angegeben wird, wird die zuletzt erstellte NCVF-Ressource in der Library verwendet.
2. Die NaturalONE Code Coverage-Ansicht und der NaturalONE Editor sind in der NaturalONE-Dokumentation beschrieben.

## Grundlegende Konzepte für die Codeabdeckung

Während eine Natural-Anwendung ausgeführt wird, können Abdeckungsdaten gesammelt und in eine NCVF-Ressourcendatei geschrieben werden.

- Auf dem Großrechner wird die Datensammlung durch die Profiler Utility im Batch-Modus durchgeführt. Daher ist die Codeabdeckung von Großrechneranwendungen nur verfügbar, wenn die Profiler Utility im Batch-Modus gestartet werden kann. Dies gilt für Großrechner-Batch-Anwendungen, aber auch für interaktive Großrechner-Anwendungen, die über Natural Studio oder RPC remote ausgeführt werden, sofern die entsprechenden Einstellungen vorgenommen wurden.

- Unter Windows und Linux wird die Datensammlung von Natural durchgeführt, wenn der Parameter `COVERAGE` angegeben ist. Dadurch ist Code Coverage immer möglich.

- Anders als beim Profiling gibt es unter NaturalONE keine direkte Codeabdeckung, bei der die Coverage ausgelöst und sofort von NaturalONE verarbeitet wird.

- Wenn NaturalONE gegen ein Natural auf Windows oder Unix läuft, kann die Sammlung von Code-Coverage-Daten in eine NCVF-Ressourcendatei durch Setzen des Natural-Parameters `COVERAGE` ausgelöst werden.

- NaturalONE verarbeitet die Abdeckungsdaten einer NCVF-Ressourcendatei und zeigt die Ergebnisse in der Natural Code Coverage-Ansicht und im Natural Source Editor an.

- Die Profiler Utility im Batch-Modus verarbeitet die Abdeckungsdaten einer NCVF-Ressourcendatei und liefert Ergebnisse zur Statement- und Programmabdeckung. Die Daten können auch im CSV-Format (kommagetrennte Werte) in eine Datei geschrieben werden, die mit einer Tabellenkalkulationssoftware (z.B. Microsoft Excel) weiter analysiert werden kann.

## Plattformspezifische Codeabdeckung

Generell können Sie die Natural Code Coverage auf Linux-, Windows- und Großrechner-Plattformen durchführen. Wie Sie dabei vorgehen, hängt von der jeweiligen Plattform und der Art der Anwendungsverarbeitung ab:

### Großrechner

- Die Messung der Codeabdeckung bei interaktiven Großrechner-Anwendungen, die remote von Natural Studio oder RPC ausgeführt werden, wird mit der Profiler Utility im Batch-Modus durchgeführt.

- Die Messung der Codeabdeckung bei Großrechner-Batch-Anwendungen wird mit der Profiler Utility im Batch-Modus durchgeführt.

Anmerkung
Die Messung der Codeabdeckung ist bei interaktiven Großrechneranwendungen, die lokal auf einem Großrechner oder remote von NaturalONE ausgeführt werden, nicht verfügbar.

### Linux und Windows

- Die Codeabdeckung von interaktiven Linux- und Windows-Anwendungen wird mit der NaturalONE-Code Coverage oder der Natural-Code Coverage für Linux bzw. Windows gemessen.

- Die Messung der Codeabdeckung bei Linux- und Windows-Batch-Anwendungen erfolgt mit der Natural Code Coverage für Linux bzw. Windows.

## Tools zur Messung der Codeabdeckung

Der folgende Abschnitt enthält eine Zusammenfassung der Merkmale der Natural Profiling Tools.

- Funktionsumfang von NaturalONE Code Coverage

- Funktionsumfang der Natural Code Coverage für Linux und Windows

- Funktionsumfang der Profiler Utility

- Merkmale des Natural Code Coverage Spreadsheet

### Funktionsumfang von NaturalONE Code Coverage

- Liest und analysiert Natural Code Coverage-Ressourcendateien, die Abdeckungsdaten enthalten, die von der Großrechner-Profiler Utility im Batch-Modus oder von der Natural Code Coverage für Linux oder Windows gesammelt wurden.

- Die Codeabdeckung bei interaktiven Natural-Anwendungen auf Linux oder Windows kann gemessen werden, indem die Natural-Codeabdeckung für Linux oder Windows aktiviert und die entsprechende Natural Code Coverage-Ressourcendatei gelesen wird.

- Die Natural Code Coverage-Ansicht zeigt, wie viel Prozent der Statements der Natural-Objekte ausgeführt wurden.

- Von der Natural Code Coverage-Ansicht aus können die beteiligten Natural-Objekte bearbeitet werden. Der NaturalONE-Editor zeigt alle abgedeckten Zeilen mit grünem Hintergrund an.

Anmerkung
Die interaktive Codeabdeckung von Natural-Anwendungen auf Großrechner-Plattformen wird derzeit nicht unterstützt.

### Funktionsumfang der Natural Code Coverage für Linux und Windows

- Codeabdeckung von interaktiven oder Natural-Batch-Anwendungen auf Linux- oder Windows-Plattformen.

- Bietet Funktionen für die Behandlung großer Datenmengen:

  - automatisches Ereignisfilter,

  - automatische Datenkonsolidierung.

- Speichert die Code Coverage-Daten als Natural Code Coverage-Ressourcendatei.

### Funktionsumfang der Profiler Utility

#### Batch-Modus (Großrechner)

- Codeabdeckung von Natural-Batch-Anwendungen auf Großrechner-Plattformen.

- Codeabdeckung von interaktiven Großrechner-Anwendungen, die remote von Natural Studio oder gegen einen Natural RPC-Server ausgeführt werden.

- Bietet Funktionen für die Behandlung großer Datenmengen:

  - Programm-, Zähl- und Zeitfilter,

  - automatisches Ereignisfilter,

  - automatische Datenkonsolidierung.

- Speichert Code-Coverage-Daten als Natural-Code-Coverage-Ressourcendatei.

- Liest und analysiert Natural-Code-Coverage-Ressourcendateien.

- Listet die Program Coverage-Tabelle für alle aufgerufenen Natural-Objekte mit

  - Prozentsatz der abgedeckten Statements,

  - Anzahl der abgedeckten Statements,

  - Anzahl der nicht abgedeckten ("missed") Statements und

  - Gesamtzahl der Statements des Objekts.

- Die Statement-Abdeckung (Statement Coverage) listet den Quellcode jedes Natural-Objekts, auf das zugegriffenen wurde, und zeigt für jede Zeile den Prozentsatz der abgedeckten Statements an.

- Exportiert Natural-Code-Coverage-Daten im CSV-Format (kommagetrennte Werte), die mit einer Tabellenkalkulationssoftware (z. B. Microsoft Excel) weiter analysiert werden können.

- Sammelt und zeigt Profiler- und Codeabdeckungseigenschaften und -statistiken an.

Anmerkung
Auf dem Großrechner gibt es keine Eins-zu-Eins-Beziehung zwischen einem Natural-Quellcode-Statement und dem entsprechenden Objektcode im katalogisierten Objekt. Die Natural-Codeabdeckung auf dem Großrechner überwacht den Objektcode und nicht den Natural-Quellcode. Daher können mehrere Natural-Statements in einem Coverage-Eintrag zusammengeführt werden und umgekehrt kann ein Natural-Statement mehrere Coverage-Einträge abdecken.

#### Batch-Modus (Linux und Windows)

- Liest und analysiert Natural-Code-Coverage-Ressourcendateien.

- Listet die Program Coverage-Tabelle für alle Natural-Objekte, auf die zugegriffenen wurde, mit folgenden Angaben:

  - Prozentsatz der abgedeckten Statements,

  - Anzahl der abgedeckten Statements,

  - Anzahl der nicht abgedeckten ("missed") Statements und

  - Gesamtzahl der Statements des Objekts.

- Die Statement-Abdeckung (Statement Coverage) listet den Quellcode jedes Natural-Objekts, auf das zugegriffenen wurde, und zeigt für jede Zeile den Prozentsatz der abgedeckten Statements an.

- Exportiert Natural-Code-Coverage-Daten im CSV-Format (kommagetrennte Werte), die mit einer Tabellenkalkulationssoftware (z. B. Microsoft Excel) weiter analysiert werden können.

Anmerkung
Unter Windows und Linux werden nicht abgedeckte ("missed") Statements nicht erfasst. Daher kann die Statement Coverage nur Zeilen markieren, die abgedeckte Statements enthalten, und die Abdeckung dieser Zeilen beträgt immer 100%.

### Merkmale des Natural Code Coverage Spreadsheet

- Vorlage zum Einfärben der Natural-Codeabdeckungsdaten, die von der Natural Profiler Utility im CSV-Format (kommagetrennte Werte) exportiert werden.

- Programm- und Copycode-Abdeckung mit Quellcode- und GP-Zählern für

  - Prozentsatz der abgedeckten Statements,

  - Anzahl der abgedeckten Statements,

  - Anzahl der "missed" (nicht abgedeckten) Statements und

  - Gesamtzahl der Statements des Objekts.

- Statement-Abdeckung des Objekt-Quellcodes, wobei die Zeilen wie folgt eingefärbt werden

  - grün – wenn alle Statements der Zeile abgedeckt sind,

  - gelb – wenn die Statements der Zeile teilweise abgedeckt sind,

  - rot – wenn alle Statements der Zeile fehlen,

  - grau – wenn die Zeile leer ist oder nur Kommentare enthält.

- Profiler- und Code-Abdeckungseigenschaften und Statistiken (für Großrechnerdaten).

Anmerkung
Eine Microsoft Excel-Tabellenvorlage für die Natural-Codeabdeckung ist als Ressource in der Natural-Profiler-Bibliothek `SYSPRFLR` auf Linux und Windows verfügbar.

## Natural Code Coverage-Auswertungen

Dieser Abschnitt beschreibt die Programmabdeckungsauswertungen, die von den Natural Code Coverage Tools bereitgestellt werden:

- Programmabdeckung (Program Coverage)

- Zeilen- und Statement-Abdeckung

- Profiler-Eigenschaften und Statistikdaten

### Programmabdeckung (Program Coverage)

Die Program Coverage gibt Ihnen einen Überblick über die ausgeführten Programme und den Umfang des Codes, der von der Anwendung abgedeckt wurde.

#### Programmabdeckungsreport

Der Programmabdeckungsreport der Profiler Utility zeigt die Abdeckung (in Prozent der Gesamtzahl der Statements) jedes ausgeführten Natural-Objekts an. Er zeigt für jedes Objekt an, wie viele Statements abgedeckt wurden bzw. nicht abgedeckt wurden ("missed") und wie viele Statements insgesamt enthalten sind. Außerdem fasst er die Werte für alle Objekte in einer Library und die Gesamtwerte für alle Librairies zusammen.

Wird die Ausgabe im Textformat geschrieben, wird nur die GP-Abdeckung angegeben. Werden die Daten im CSV-Format (kommagetrennte Werte) exportiert, wird auch die Quellcodeabdeckung angegeben. Zusätzlich werden die Zähler für alle inkludierten Copycodes gedruckt.

Im Folgenden finden Sie ein Beispiel für das Textformat:

    Program Coverage
    ----------------
    Library  Object   Ty Coverage%  Covered    Missed    Total
    COVDEMO  TESTCOVN N      84.0%       37         7       44
    COVDEMO  TESTCOVP P      69.2%        9         4       13
    COVDEMO  -------- --     80.7%       46        11       57
    Totals   -------- --     80.7%       46        11       57

Im obigen Beispiel für die Programmabdeckung wurden `69,2 %` von `13` Statements im Programm `TESTCOVP` abgedeckt, was `9` abgedeckten und 4 nicht abgedeckten ("missed") Statements entspricht. `80,7` % der Statements der Objekte, auf die in der Library `COVDEMO` zugegriffen wurde, wurden abgedeckt, was auch dem Gesamtwert für den gesamten Anwendungslauf entspricht.

#### Code Coverage-Ansicht

Die Code Coverage-Ansicht von NaturalONE zeigt die Abdeckung (in Prozent der Gesamtzahl der Statements) jedes ausgeführten Natural-Objekts an. Sie zeigt für jedes Objekt an, wie viele Statements abgedeckt wurden oder nicht abgedeckt wurden ("missed") und wie viele Statements insgesamt enthalten sind. Wenn Copycodes enthalten sind, kann der Objektknoten geöffnet werden, um die Abdeckung des Copycodes anzuzeigen. Generell spiegeln die Zähler die GP-Abdeckung wider (Copycodes enthalten). Die Quellcodeabdeckung (Copycodes nicht enthalten) wird in der Zeile angezeigt, in der der Objektname in spitzen Klammern `<< >>` eingeschlossen ist.

Von jeder Zeile aus können Sie direkt zu dem entsprechenden Quellcode navigieren, um die Statement-Abdeckung zu sehen.

Beispiel:

Im obigen Beispiel hat das Programm `TESTCOVP` eine GP-Abdeckung von `69,2` Prozent, wobei im Programm selbst alle `8` Statements abgedeckt sind (100% Quellcodeabdeckung) und im enthaltenen Copycode `TESTCOVC` nur `1` von `5` Statements abgedeckt wurde.

### Zeilen- und Statement-Abdeckung

Die Statement Coverage zeigt, welche Zeilen des Programms ausgeführt wurden. Bei Großrechnerdaten zeigt die Profiler Utility außerdem an, welche Zeilen mit Statements nicht oder nur teilweise ausgeführt wurden.

#### Statement Coverage-Report

Der Statement Coverage-Report der Profiler Utility zeigt für jede Quellcodezeile die Abdeckung der Statements in der Zeile an.

Wenn die Daten im CSV-Format (kommagetrennte Werte) exportiert werden, werden auch die Anzahl der abgedeckten oder nicht abgedeckten ("missed") Statements und die Gesamtzahl der Statements in der Zeile ausgedruckt. Die Microsoft Excel-Tabellenvorlage, die mit Natural unter Linux und Windows geliefert wird, kann verwendet werden, um die Zeilen entsprechend der Abdeckung einzufärben.

Wenn eine Quelle ein `INCLUDE`-Statement enthält, wird der entsprechende Copycode-Quellcode direkt nach dem `INCLUDE`-Statement in den Report aufgenommen.

Im Folgenden finden Sie ein Beispiel für einen Export im CSV-Format, der mit Hilfe einer Microsoft Excel-Tabelle eingefärbt wurde:

Die drei roten Zeilen des Unterprogramms `TESTCOVN` sind nicht ausgeführt worden. Der Testlauf deckt also nicht die neue Testfunktion `9` ab. Er deckt außerdem weder die (alte) Funktion `0` noch den Fall ab, dass das Subrogramm mit einer nicht unterstützten Funktion aufgerufen wird.

Die Daten stammen vom Großrechner. Daher beziehen sich die Zählungen auf Objektcode-Statements und nicht auf Natural-Statements. Einem Natural-`VALUE`-Statement können bis zu 3 Objektcode-Statements entsprechen. Die gelben Zeilen beziehen sich auf `VALUE`-Statements, bei denen ein Teil des Objektcodes abgedeckt wurde und ein anderer nicht.

#### NaturalONE Source Editor (Quellcode-Editor)

Wenn der Source Editor aus der Code Coverage-Ansicht in NaturalONE geöffnet wird, wird der Quellcode entsprechend der Codeabdeckung eingefärbt. Jede Zeile, in der ein oder mehrere Statements abgedeckt sind, ist grün hinterlegt.

Beispiel:

Der Source Editor zeigt alle Zeilen, in denen mindestens ein Statement ausgeführt worden ist, grün hinterlegt an. Also sind alle Zeilen des `DECIDE`-Statement, mit Ausnahme der Zeilen `19`, `37` und `39`, ausgeführt worden.

### Profiler-Eigenschaften und Statistikdaten

Die Anzeige Profiler Properties and Statistics steht sowohl bei der Natural Profiler Utility als auch bei der Profiler Rich GUI-Schnittstelle zur Verfügung. Sie liefert eine Auflistung der Profiler-Eigenschaften, z.B. die Profiler-Revisionsnummer. Darüber hinaus zeigt sie Statistikdaten der überwachten Anwendung, z.B. die CPU-Gesamtzeit und die verstrichene (elapsed) Zeit. Zu einem Codeabdeckungslauf zeigt sie die Statistikdaten der Abdeckung.

#### Beispiel:

    ***************************************************************************
    * 13:30:48          ***** NATURAL PROFILER UTILITY *****         2017-09-04
    * User SAG                     - Statistics -                       COVREAD
    *
    * General Info
    * Machine class ...................... MAINFRAME
    * Environment ........................ Batch
    ...
    * Coverage
    * Coverage ........................... ON
    * Missed statements recorded ......... ON
    * Coverage records ................... 60
    * Program information records ........ 3
    * Coverage records/block ............. 60
    * Bytes/coverage record .............. 10.3
    * Programs covered ................... 2
    * Statement coverage (percent) ....... 80.7
    * Statements covered ................. 46
    * Statements missed .................. 11
    * Statements total ................... 57

### On this page

- Einführung in die Codeabdeckung
- Schnellstart für die Codeabdeckung
- Grundlegende Konzepte für die Codeabdeckung
- Plattformspezifische Codeabdeckung
- Tools zur Messung der Codeabdeckung
- Natural Code Coverage-Auswertungen