Dieses Dokument enthält allgemeine Informationen über die Codeabdeckung (Code Coverage) von Natural-Anwendungen.
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 von NaturalONE (der Eclipse-basierten Entwicklungsumgebung der Software AG) 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.
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:
Die Anzahl der Statements im GP, das alle Copycodes rekursiv einschließt (ein Copycode kann weitere Copycodes einschließen).
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.
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 UNIX 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.
Generell können Sie die Natural Code Coverage auf UNIX-, Windows- und Großrechner-Plattformen durchführen. Wie Sie dabei vorgehen, hängt von der jeweiligen Plattform und der Art der Anwendungsverarbeitung ab:
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.
Die Codeabdeckung von interaktiven UNIX- und Windows-Anwendungen wird mit der NaturalONE-Code Coverage oder der Natural-Code Coverage für UNIX bzw. Windows gemessen.
Die Messung der Codeabdeckung bei UNIX- und Windows-Batch-Anwendungen erfolgt mit der Natural Code Coverage für UNIX bzw. Windows.
Der folgende Abschnitt enthält eine Zusammenfassung der Merkmale der Natural Profiling Tools.
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 UNIX oder Windows gesammelt wurden.
Die Codeabdeckung bei interaktiven Natural-Anwendungen auf UNIX oder Windows kann gemessen werden, indem die Natural-Codeabdeckung für UNIX 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.
Codeabdeckung von interaktiven oder Natural-Batch-Anwendungen auf UNIX- 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.
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.
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 UNIX 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%.
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 UNIX und Windows verfügbar.
Dieser Abschnitt beschreibt die Programmabdeckungsauswertungen, die von den Natural Code Coverage Tools bereitgestellt werden:
Die Program Coverage gibt Ihnen einen Überblick über die ausgeführten Programme und den Umfang des Codes, der von der Anwendung abgedeckt wurde.
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.
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.
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.
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 UNIX 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.
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.
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.
*************************************************************************** * 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