Messung der Skript-Abdeckung
2026.4
Während der Ausführung von Unit-Tests wird automatisch ermittelt, welche Skriptlogiken durch Tests abgedeckt wird. Die resultierende Skript-Abdeckung unterstützt dabei, ungetestete Bereiche in kundenspezifischen Skriptbibliotheken zu identifizieren und die Testqualität gezielt zu verbessern.
Eine hohe Abdeckung ist ein Indikator dafür, dass Logikpfade ausgeführt wurden. Sie ist kein Beleg dafür, dass Tests fachlich korrekt sind oder alle Randfälle prüfen.
Funktionsweise der Abdeckungsmessung
Automatische Ermittlung im Testlauf
Bei jedem Testlauf läuft eine Protokollierung mit, die festhält, welche Skriptmethoden (und innerhalb dieser Methoden welche Codeblöcke) ausgeführt wurden. Die Abdeckung wird dabei ohne zusätzliche Konfiguration automatisch berechnet.
Geltungsbereich
Die Abdeckungsmessung bezieht sich auf Skriptklassen und Methoden, die in der Kundenschicht (C2) vorhanden sind. Der globale Wert („Abdeckung“ im Testlauf) umfasst alle Skriptklassen der Skript-Bibliothek, die im Testlauf betroffen sind. Methoden, welche ausschließlich im Maskenskript einsetzbar sind, sind grundsätzlich ausgeschlossen.
Ein- und Ausschluss von Methoden
In die Messung werden nur Methoden einbezogen, die mit einer der folgenden Annotationen versehen sind:
@BpmScript@EventStartRuleScript
Nicht berücksichtigt werden Methoden mit Annotation:
@Deprecated@Constant@IgnoreForCoverage
Wenn sowohl eine einschließende Annotation (z. B. @BpmScript) als auch eine ausschließende Annotation (z. B. @Deprecated) vorhanden ist, hat der Ausschluss Vorrang.
Berechnung der Abdeckung (Block-Prinzip)
Für die Abdeckungsberechnung wird jede einbezogene Methode in Blöcke aufgeteilt. Vereinfacht gilt: Ein neuer Block beginnt dort, wo eine geschweifte Klammer verwendet wird.
Technische Erläuterung
Ein Block ist die größtmögliche Gruppierung von aufeinanderfolgendem Code, sodass - falls keine Exception auftritt - Folgendes gilt: Alle Anweisungen eines Blocks werden durchlaufen, sobald die erste Anweisung eines Blocks ausgeführt wird.
Etwas technischer ausgedrückt bedeutet das: Ein Block ist die größtmögliche Gruppierung von aufeinanderfolgendem Code, sodass - falls keine Exception auftritt - Folgendes gilt: Alle Anweisungen eines Blocks werden als “Durchlaufen” gewertet, genau dann wenn die erste Anweisung eines Blocks ausgeführt wird.
Die Coverage einer Methode ergibt sich aus:
Anzahl durchlaufener Blöcke / Gesamtzahl der Blöcke
Beispiel: Eine Methode hat 3 Blöcke, ausgeführt wird nur 1 Block → Coverage = 1/3 = 33,333 %.
Die Länge oder Größe eines Blocks ist für die Berechnung irrelevant.

Beispielhafte Aufteilung einer Methode in die gemessenen Blöcke
Anzeige der Abdeckung im System
Die Abdeckung wird an mehreren Stellen im System angezeigt.
Globale Abdeckung
Die globale Skript-Abdeckung ist direkt im jeweiligen Testlauf als Prozentwert im Feld „Abdeckung“ (Coverage.ScriptTestRun) ersichtlich und befindet sich auf der Maske im Collapsible „Testlaufoptionen“. Aufgerufen werden die Testergebnisse über die Entität „Testläufe“, die am einfachsten über die globale Suche gefunden wird.
Zusätzlich steht innerhalb des Testlaufs im Unterbereich der Reiter „Skript-Abdeckung“ zur Verfügung. Dort wird die Abdeckung pro Skriptklasse in einer Tabelle mit den Spalten „Klassenname“ und „Abdeckung“ (in Prozent) angezeigt.

Beispielhafte Skript-Abdeckung eines Testlaufs
In der Detailansicht der Skript-Abdeckung einer Klasse werden neben der „Abdeckung“ (Coverage.ScriptCoverage) auch die „Erfassten Methoden“ (IncludedMethods.ScriptCoverage) und „Ausgelassenen Methoden“ (IgnoredMethods.ScriptCoverage) angezeigt.
Unabhängig vom Testlauf wird eine Abdeckungskennzahl auch im Admin-Bereich „Skript-Bibliothek“ im Dashboard unter „Informationen“ als Prozentzahl dargestellt.

Anzeige der Abdeckung einer Skriptklasse in der Skript-Bibliothek
Ampelanzeige pro Methode in der Skriptklasse
In der Methodenliste einer Skriptklasse wird eine Ampel pro Methode angezeigt:
< 50 %: rot
≥ 50 % und < 80 %: gelb
≥ 80 % und < 100 %: grün
= 100 %: grün mit Haken

Ampelanzeige in der Methodenliste einer Skriptklasse
Aktualisierung der Ampelanzeige
Die Ampelanzeige aktualisiert sich nach jedem Testlauf. Zusätzlich kann in der Skriptbibliothek ein ad-hoc Test einzelner Klassen durchgeführt werden (Button „Klasse testen“), um nach Änderungen an Skripten zeitnah einen aktuellen Abdeckungsstand für diese Klasse zu erhalten.
Das Ergebnis nach dem Testen einer einzelnen Klasse spiegelt dabei nur die Abdeckung durch die Tests dieser einen Skriptklasse wider. Zusätzliche Abdeckungen durch bspw. Testklassen werden bei dem Ergebnis nicht berücksichtigt.
Interpretation & typische Hinweise
Wenn keine Abdeckung gemessen wird
Wenn eine Klasse im Testlauf nicht ausgeführt wird, kann für diese Klasse keine Abdeckung „entstehen“. In der Gesamtbetrachtung wird sie dennoch (sofern relevant für den Lauf) mit 0 % berücksichtigt.
Einsatz von @IgnoreForCoverage
Methoden sollten nur dann mit @IgnoreForCoverage versehen werden, wenn sie tatsächlich nicht sinnvoll oder nicht zuverlässig testbar sind. Andernfalls sinkt die Aussagekraft der Abdeckung.
Standardklassen (C0) vs. kundenspezifische Übersteuerung (C2)
Wenn eine C0-Standard-Skriptklasse nicht in der Kundenschicht übersteuert ist und keine kundenspezifischen Logiken/Skriptmethoden enthält, beträgt die Abdeckung 100 %.