Branch-Coverage-Tests

Minimalinvasiv testen

12. August 2014, 11:30 Uhr | Heiko Rießland
© Elektronik

Für Tests nach ISO 26262 musste bisher der Code verändert werden. Jetzt gibt es ein neues Verfahren, das ohne Eingriffe in den Code auskommen – wenn der Mikrocontroller einen vollständigen Code-Trace unterstützt.

Diesen Artikel anhören
Minimalinvasiv testen – Diesen Artikel als Print-Version laden

Bedingt durch die in den letzten Jahren explodierte Komplexität der Steuerungs-Software in kritischen und sicherheitsrelevanten Systemen, sind Entwickler heute mehr denn je auf verlässliche und reproduzierbare Methoden zur Überprüfung und Beurteilung der funktionalen Zuverlässigkeit des manuell erstellten Quellcodes angewiesen. Besonders systematische Messungen der Codeabdeckung (Code Coverage) werden zur Qualitätssicherung empfohlen oder sogar gefordert (IEC 61508, ISO 26262). Beim Code Coverage handelt es sich um ein kontrollflussorientiertes Testverfahren. Die Grundidee dabei ist, zu messen, ob der zu einer Applikation gehörende Programmcode während des Tests in allen seinen Teilen mindestens einmal durchlaufen wurde. Das kann mit speziell erzeugten Stimuli oder auch parallel zu funktionalen Tests erfolgen. Ein großer Vorteil des Verfahrens ist, dass die Anwendung und Auswertung weitgehend automatisierbar ist. Es handelt sich um eine rein formale Prüfung, die nichts über die Software-Qualität bezüglich Funktionalität, Robustheit usw. aussagt. Allerdings ist sie ein sehr gutes Maß für die erreichte Testtiefe.

Stufen der Codeabdeckung

Man unterscheidet verschiedene Stufen der Codeabdeckung, deren Bezeichnungen und insbesondere Abkürzungen in der Literatur allerdings nicht einheitlich verwendet werden. Die von uns gewählten orientieren sich an der Luftfahrtnorm D0-178B. Die Hauptgruppen sind nach aufsteigender Testgüte:

passend zum Thema

Flussdiagramm
Bild 1. Branch Coverage: Der Zweigüberdeckungstest spürt nicht ausführbare Programmzweige auf. Wenn x größer Null ist, wird der (linke) IF-Zweig nicht ausgeführt.
© Elektronik
  • Anweisungsüberdeckung bzw. Statement Coverage (Abkürzung C0),
  • Zweigüberdeckung bzw. Branch Coverage (Abkürzung C1),
  • Pfadüberdeckung bzw. Path Coverage (Abkürzung C2) und
  • Bedingungsüberdeckung bzw. Condition Coverage (Abkürzung C3).

Dabei deckt jede höhere Gruppe die Anforderungen aller vorhergehenden mit ab. In der untersten Stufe, dem Statement Coverage, wird die Ausführung jedes Maschinenbefehls ohne Berücksichtigung von Programmverzweigungen gemessen. Mit diesem Verfahren kann nicht ausgeführter Programmcode (dead code) aufgespürt werden. Es erfüllt aber meistens nicht die aktuellen Anforderungen an die Testqualität. Branch Coverage verlangt die Ausführung jeder möglichen Programmverzweigung (Bild 1).


  1. Minimalinvasiv testen
  2. Path Coverage
  3. Code-Optimierung: von leicht geändert bis total umgewandelt
  4. Erkennung der Programmstruktur

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu pls Programmierbare Logik & Systeme GmbH

Weitere Artikel zu Entwicklungswerkzeuge