Coverage Exchange Format (CEXF)
CEXF ist ein Austauschformat für die Erfassung von Metriken zur Code Coverage insgesamt und pro Testfall. Grund für das Format ist das Problem, dass aktuelle Werkzeuge für die Erhebung der Coverage sowohl vom Format als auch von der Definition der Metriken stark voneinander abweichen (siehe hier). Das Format versucht, die unterschiedlichen Formate und Metriken so zu vereinheitlichen, dass diese für Verfahren zur zuverlässigen Erkenung von Fehlern in Bezug auf Fehlvorstellungen verwendet werden können.
Aufbau
<?xml version="1.0" encoding="UTF-8"?>
<coverage tool="clover" version="4.4.1">
<testsuite>
<testcase classname="name.panitz.oose.StarTest" name="test1">
<file name="name/panitz/oose/Star.java" fqcn="name.panitz.oose.Star">
<line nr="6" type="line" covered="2" missed="0"/>
<line nr="6" type="method" covered="1" missed="0"/>
<line nr="6" type="stmt" covered="1" missed="0"/>
<line nr="7" type="line" covered="1" missed="0"/>
<line nr="7" type="stmt" covered="1" missed="0"/>
</file>
</testcase>
<testcase classname="name.panitz.oose.StarTest" name="test2">
<file name="name/panitz/oose/Star.java" fqcn="name.panitz.oose.Star">
<line nr="6" type="line" covered="2" missed="0"/>
<line nr="6" type="method" covered="1" missed="0"/>
<line nr="6" type="stmt" covered="1" missed="0"/>
<line nr="7" type="line" covered="1" missed="0"/>
<line nr="7" type="stmt" covered="1" missed="0"/>
</file>
</testcase>
</testsuite>
</coverage>
file
-Elemente innerhalb von test
enthalten Coverage-Metriken für die Datei file
, die durch die
Ausführung des Testfalls test
erfasst wurden. Testfälle werden über classname
und name
eindeutig identifiziert.
line
-Elemente repräsentieren die verschiedenen Coverage-Metriken für Zeilen. Sie geben die Anzahl
der covered
und missed
Elemente der Metrik type
auf einer Zeile an. Es kann mehrere
line
-Elemente mit der selben nr
geben: Pro Metrik (method
, stmt
, ...) existiert maximal ein
line
-Element.
Die Definition von C0 ist grundsätzlich abhängig davon, welche Art von Instrumentierung erfolgt.
Eine einheitliche Definition gibt es daher nicht. JaCoCo definiert C0 als Instruction Coverage
während OpenClover C0 als Statement Coverage definiert. Grundsätzlich kann Instruction Coverage
nicht mit Statement Coverage verglichen werden. Für eine Approximation der ausgeführten Zeilen kann
man allerdings eine neue, verallgemeinterte C0-Metrik type=line
(Zeilenabdeckung) definieren,
welche je nach Werkzeug entweder der Instruction- oder Statement Coverage entspricht.
OpenClover
Metriken: line
, method
, stmt
, cond
, class
JaCoCo
Metriken: line
, instr
, cond