Rechtliche Belange des Software-Tests bei eingebetteten Systemen – Teil 2

Rechtliche Belange des Software-Tests bei eingebetteten Systemen – Teil 2

IEEE Std 1008-1987

Der ANSI/IEEE Std 1008-1987 „Standard for Software Unit Testing“ wurde 1993 nochmals vom IEEE-Normungsgremium bestätigt und gibt genauere Empfehlungen, wie der Modultestprozess zu planen, umzusetzen und zu dokumentieren ist. Im Punkt Dokumentation gibt es naturgemäß starke Überschneidungen zu IEEE 829.

Eine wichtige Empfehlung des Standards ist, die gewünschte Testabdeckung (also ein Test-Ende-Kriterium) vor dem Start der Tests zu definieren. Abdeckungsarten werden aber im Standard nicht genauer erklärt. Für prozedurale Sprachen ist aber die Forderung erwähnt, zumindest jede Anweisung einmal auszuführen (Anweisungsüberdeckung, Statement Coverage). Des weiteren wird empfohlen, Modultests zu automatisieren, weil nur so das Erreichen der definierten Abdeckung sinnvoll erfasst werden kann. Die Forderung von 100 % Anweisungsüberdeckung bei Modultests entspricht der Forderung des hier nicht näher behandelten Standards RTCA DO-178b für Software in der zivilen Luftfahrt der Sicherheitsklasse C, wobei A die Klasse mit den höchsten Sicherheitsanforderungen und D eine Klasse ohne Sicherheitsanforderungen ist.

Für Software, deren Versagen einen schwerwiegenden Ausfall eines sicherheitsrelevanten Systems zur Folge hat, gibt es heute eine breite Übereinstimmung, dass die Verzweigungsabdeckung (Decision Coverage) eine minimal erforderliche Testabdeckung für Modultests ist [4]. Für Klasse A fordert RTCA DO-178b die in [6] kurz und in [4, 13] detailliert beschriebene Modified Condition Decision Coverage. Diese Testabdeckung hat außerhalb der bemannten Luft- und Raumfahrt nur geringe Bedeutung.

EN 61508

Die IEC 61508 ist 1998 erschienen, ihre 1999 erschienene korrigierte Form wurde im Jahr 2001 ohne Änderungen als europäische Norm übernommen. Sie beschreibt Anforderungen an die funktionale Sicherheit von elektrischen, elektronischen und programmierbaren elektronischen Systemen. In sieben Teilen wird auf die Ermittlung der geforderten Sicherheitsintegrität, das Design, Analysemethoden, Dokumentation, Management und Test eingegangen. Die Norm unterscheidet dabei vier Sicherheitsintegritätsstufen (SIL), wobei SIL 1 relativ niedrige und SIL 4 die höchsten denkbaren Anforderungen an die Sicherheitsintegrität des Systems darstellt.

Der rund 50-seitige Teil 3 befasst sich ausschließlich mit Software. Die wichtigsten Forderungen dieser Norm, die im weitesten Sinne mit Software- Test zu tun haben, werden, unabhängig von der SIL, im Folgenden präsentiert.

Die EN 61508-1 empfiehlt eine Etablierung eines eigenen Sicherheitslebenszyklus. Es wird dabei gefordert, jedes verwendete Werkzeug in der Sicherheitsbetrachtung zu berücksichtigen, explizit werden auch Compiler erwähnt. Fazit: Es ist bekannt, dass Compilerfehler am ehesten bei Modultests in der Zielumgebung erkannt werden [6]. Auch wenn die EN 61508 Abdeckungen von Modultests nicht behandelt, lässt sich daher folgern, dass beim Test von sicherheitsrelevanter Software ein Weglassen von Modultests oder das Nichterreichen von 100 % Verzweigungsabdeckung von Code mit Sicherheitsrelevanz fahrlässig ist und deshalb zu Schadensersatzpflichten führen kann.