Software-Test

Code-Coverage auf kleinen Targets

12. Oktober 2012, 11:17 Uhr | Von Roland Bär und Prof. Dr. Daniel Fischer
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Coverage-Stufen

Coverage-Stufen und deren Subsumption.
Bild 2. Coverage-Stufen und deren Subsumption.
© Verifysoft Technology

e nach Testziel kann Code Coverage auf den folgenden Ebenen stattfinden:

  • Funktionsebene,
  • Anweisungsebene,
  • Zweigebene,
  • Pfadebene,
  • Bedingungsebene.

In der Literatur [1] finden sich zu den einzelnen Ebenen unterschiedliche Abdeckungsstufen. Bild  2 zeigt im Überblick die unterschiedlichen Coverage-Stufen dieser Ebenen auf. Zwischen den einzelnen Stufen gibt es eine Subsumption-Beziehung, die durch einen Pfeil abgebildet wird. Hat man dabei für Coverage-Stufe A eine Abdeckung von hundert Prozent erreicht, so hat man auch automatisch eine hundertprozentige Abdeckung für die Stufe B erzielt. Allerdings gilt dies aber nicht automatisch in der umkehrten Richtung.

passend zum Thema

Praxisrelevante Coverage-Stufen.
Bild 3. Praxisrelevante Coverage-Stufen.
© Verifysoft Technology

Bedingt durch die Normen sind insbesondere Aufruf-, Anweisungs- und Zweigüberdeckung sowie der Modifizierte Bedingungs-/Entscheidungsüberdeckungstest (MC/DC) von besonderer Wichtigkeit. Hingegen sind die aufgezeigten Abdeckungsstufen auf Pfadebene heutzutage nicht mehr von praktischer Bedeutung. In Bild 3 sind die praxisrelevanten Abdeckungsstufen und deren Subsumption nochmals aufgezeigt.

Was Normen empfehlen und vorschreiben

Die unterschiedlichen Normen fordern dabei je nach zu erbringender Sicherheitsstufe unterschiedliche Abdeckungsstufen ein. Die industrieübergreifende Norm DIN EN 61508 enthält in Teil 3 [2] auch Empfehlungen für Code Coverage. Abhängig vom geforderten Safety Integrity Level (SIL) werden in Tabelle B.2 der Norm unterschiedliche Abdeckungsstufen empfohlen. Ein Auszug der Tabelle B.2 aus der DIN EN 61508 ist in Tabelle 1 aufgezeigt.

 Verfahren/Maßnahme SIL 1
SIL 2
SIL 3
SIL 4
...
...
...
...
...
...
7a
Strukturabhängige Tests mit einer Testabdeckung (Eingangspunkte) 100%
++
++
++
++
7b
Strukturabhängige Tests mit einer Testabdeckung (Anweisungen) 100%
+
++
++
++
7c Strukturabhängige Tests mit einer Testabdeckung (Verzweigungen) 100% + + ++ ++
7d Strukturabhängige Tests mit einer TEstabdeckung (Bedingungen) 100% + + + ++

Tabelle 1. Auszug aus der Tabelle B.2 der DIN EN 61508-3 [2]. Bei „++“ handelt es sich nach DIN 61508-3 um Verfahren oder Maßnahmen, die besonders empfohlen sind. Empfohlene Verfahren sind hingegen mit „+“ gekennzeichnet.


Bei „++“ handelt es sich nach DIN 61508-3 um Verfahren oder Maßnahmen, die besonders empfohlen sind. Empfohlene Verfahren sind hingegen mit „+“ gekennzeichnet. Bei 7a handelt es sich um die Aufrufüberdeckung, bei 7b um die Anweisungsüberdeckung (C0), bei 7c um die Zweigüberdeckung (C1) und bei 7d um eine nicht näher spezifizierte Variante aus der Bedingungsebene.

 Methods ASIL  
A
B
C
D
1a
Statement coverage
++
++
+
+
1b Branch coverage + ++ ++ ++
1c MC/DC (Modified Condition/Decision Coverage) + + + ++

Tabelle 2. Code-Coverage auf Software-Unit-Ebene (aus ISO 26262, Tabelle 12)


Für sicherheitsrelevante elektrische/elektronische Systeme bei Kraftfahrzeugen ist die ISO 26262 [3] anzuwenden. Basierend auf dem Automotive Safety Integrity Level (ASIL) werden auch dort Empfehlungen hinsichtlich Code Coverage auf Software-Unit- (Tabelle 2) und Software-Architektur-Ebene (Tabelle 3) gegeben. Ein Vergleich von SIL und den korrespondierenden ASIL findet sich unter [4].

Methods
 
ASIL 
A
B
C
D
1a
Function coverage
+
+
++
++
1b Call coverage + + ++ ++

Tabelle 3. Code-Coverage auf Software-Architektur-Ebene (aus ISO 26262, Tabelle 15)


Entsprechend zur DIN EN 61508 ist hierbei „++“ als „highly recommended“ und „+“ als „recommended“ zu verstehen. Im Gegensatz zur DIN EN 61508 wird hier zusätzlich noch die Call Coverage verlangt. Auf Bedingungsebene wird zudem explizit MC/DC als Code Coverage angegeben.

In der Luft- und Raumfahrt kommt die Norm DO-178C ([5], [6]) zur Anwendung. Tabelle 4 zeigt die zu erbringenden Abdeckungsstufen in Abhängigkeit der Level auf. Ebenso ist ersichtlich, wie sich diese Level anteilig auf die Systeme und Software verteilen.

Level
Auswirkungen
Coverage-Stufen
Anteile Systeme
Anteile Software
A
"Catastrophic"
MC/DC, C1, C0
20 - 30 %
40 %
B
"Hazardous/Severe"
C1, C0
20 %
30 %
C "Major" C0 25 % 20 %
D "Minor" - 20 % 10 %
E "No Effect" - 10 % 5 %

Tabelle 4. Coverage-Stufen, Anteile Systeme und Software in der Luft- und Raumfahrt [6]


Überraschenderweise finden sich in der für die Medizintechnik relevanten Norm IEC 62304 [7] keine verpflichtenden Vorgaben zur Code Coverage. Es wird darin lediglich darauf hingewiesen, dass wünschenswerte White-Box-Tests (Tests mit Kenntnis des Quellcodes) die Code Coverage erhöhen können.


  1. Code-Coverage auf kleinen Targets
  2. Coverage-Stufen
  3. Messung durch Code-Instrumentierung
  4. Engpass RAM-Speicher

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Verifysoft Technology