Zum Hauptinhalt springen

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