1.5 Zusammenfassung
▶Man unterscheidet abhängig von der Ausführung des Testobjekts zwischen dynamischem und statischem Test mit jeweils vielen Unterausprägungen.
▶Ein Test zeigt als falsifizierendes Verfahren nur die Anwesenheit von Fehlern, nie deren Abwesenheit. Es gibt aber Verfahren, mit denen man das (Nicht-)Vorliegen von geforderten Eigenschaften beweisen kann.
▶Das wichtigste dynamische Testverfahren ist der Funktionstest gegen die Spezifikation, bei statischen Tests sind es Reviews und statische Codeanalysen. Oft ist es sinnvoll, mehrere Verfahren zu kombinieren.
▶Testen beansprucht einen großen Anteil der Entwicklungsressourcen. Es gibt je nach Risiko und Randbedingungen des Projekts beim Testaufwand einen optimalen Kompromiss zwischen Testaufwand und Reifegrad, den man aus wirtschaftlichen Gründen eingehen muss.
▶Beachten Sie die sieben Grundsätze des Testens!
▶Nur ein kleiner Teil des Umfangs einer Software spiegelt die eigentliche Funktion wider. Der größte Teil widmet sich der Robustheit und Fehlerbehandlung bzw. -vermeidung.
▶Psychologische Aspekte spielen beim Testen und vor allem bei der Kommunikation der Ergebnisse eine wesentliche Rolle.

2 Zuverlässigkeitsanalysen
Zuverlässigkeitsanalysen unterstützen den Absicherungsprozess durch die Einführung von Metriken zur Beurteilung des Reifegrads, insbesondere des Ausfallverhaltens von Software. Auf diese Weise bekommt der Tester objektive Kriterien an die Hand, nach denen er entscheiden kann, ob die angestrebten Qualitätsziele erreicht wurden und der Testprozess beendet werden kann.
2.1 Wichtige Eigenschaften von Embedded Software
Im Gegensatz zu Bürosoftware kann von Software eingebetteter Systeme eine erhebliche Gefährdung ausgehen. Aus diesem Grunde wurden bereits vor einigen Jahren Normen geschaffen, die sich mit Sicherheitsaspekten von Software auseinandersetzen. Eine dieser Normen ist die ISO 26262 [7]. Sie definiert:
Sicherheit ist die Abwesenheit unakzeptabler Risiken.
Realistischerweise wird auch für sicherheitskritische Systeme keine vollständige Abwesenheit von Risiken gefordert, vielmehr ist das Restrisiko auf einen annehmbaren Wert zu begrenzen. Man unterscheidet ferner zwischen Safety und Security:
Safety steht für den Schutz der Umwelt vor Fehlern der Elektronik, Security für den Schutz der Elektronik gegen Manipulation von außen.
Es bleibt festzustellen: Software ist sicher im Sinne von Safety, eingebettete Software nicht unbedingt. Je größer die möglichen Auswirkungen von Fehlverhalten sind, desto sicherheitskritischer ist die Software einzustufen.
Zuverlässigkeit
DIN EN ISO 9000 definiert den Begriff Zuverlässigkeit als Sammelbegriff zur Beschreibung der Verfügbarkeit eines Systems mit den Einflussfaktoren Funktionsfähigkeit, Instandhaltbarkeit und Instandhaltungsbereitschaft. Man benutzt hier auch den englischen Ausdruck Dependability.
DIN 40041
Die DIN 40041 verwendet einen engeren Zuverlässigkeitsbegriff im Sinne einer stochastischen Qualitätseigenschaft im Hinblick auf das Verhalten während oder nach bestimmten Zeitspannen unter vorgegebenen Anwendungsbedingungen. In dieser Definition spricht man im Englischen von Reliability.
Zuverlässigkeit ist ein Maß für die Funktionstüchtigkeit, ausgedrückt durch die Wahrscheinlichkeit, über eine definierte Zeit und bei definierten Randbedingungen funktionstüchtig zu bleiben.
Das Qualitätsmerkmal der Zuverlässigkeit untergliedert sich in vier Teilmerkmale:
▶Die Verfügbarkeit (Availability) beschreibt die Betriebsbereitschaft eines Systems oder einer Komponente.
▶Der Reifegrad (Maturity) gibt an, wie gut ein System funktional die Anforderungen erfüllt, durch die es spezifiziert wurde.
▶Unter Fehlertoleranz (Fault Tolerance) ist zu verstehen, wie gut ein System oder eine Komponente trotz Vorhandensein von Hardware- oder Softwarefehlern funktional noch seinen Anforderungen entspricht.
▶Die Wiederherstellbarkeit (Recoverability) gibt an, wie lange im Fehlerfall der funktionale Ausfall des Systems oder der Komponente voraussichtlich anhalten wird.
MTBF
Als stochastische Eigenschaft können nun Kenngrößen definiert werden, allen voran die MTBF (Mean Time between Failure). Bei reparierbaren Systemen ist dies der Mittelwert der Zeitspanne zwischen zwei Ausfällen eines technischen Systems. Diese statistische Information sagt allerdings wenig über dessen Lebensdauer aus. Wenn z. B. ein Festplattenhersteller seine Geräte mit einer MTBF von 2.000.000 Stunden bewirbt – das entspricht einem mittleren Ausfall nach 228 Jahren – lehrt die eigene Erfahrung bereits, dass dies ein theoretischer Wert unter idealen Laborbedingungen sein muss, nicht die real zu erwartende Lebensdauer. Die Werte sind ferner Hochrechnungen des Ausfallverhaltens auf Grundlage von Beobachtungen über deutlich kürzere Zeiträume.
MTTF
Unter Mean Time to Failure (MTTF) versteht man bei nichtreparierbaren Systemen die mittlere Betriebsdauer bis zum Ausfall.
MTTR
Mean Time to Repair (MTTR) wiederum bezeichnet bei reparierbaren Systemen den Mittelwert des Stillstandszeitintervalls (Reparaturdauer).
Verfügbarkeit
Aus diesen Größen lässt sich die Verfügbarkeit, also das Maß für die Fähigkeit eines Systems, zu einem gegebenen Zeitpunkt funktionstüchtig zu sein, als das folgende Verhältnis berechnen:
Höhere Verfügbarkeit ergibt sich durch Vergrößerung der Zuverlässigkeit (Zähler) und Verringerung der Stillstandszeitintervalle (Nenner).
Echtzeiteigenschaften: hart,
fest oder weich
Eine weitere für den Reifegrad eingebetteter Systeme wichtige Eigenschaft ist die Echtzeitfähigkeit. Dem Test dieser Eigenschaft ist im weiteren Verlauf dieses Buchs ein eigenes Kapitel gewidmet. Grob unterscheidet man nach harter, fester und weicher Echtzeitfähigkeit. Für harte Echtzeitsysteme bedeutet eine Abweichung im Zeitverhalten (besonders die Nichteinhaltung von Deadlines) in der Regel einen Fehler. Zu späte Reaktionen sind also Funktionsfehler.
Das Zeitverhalten wird wie
eine Funktion behandelt.
Bei festen Echtzeitanforderungen droht zwar nicht unbedingt ein unmittelbarer Schaden. Nach Ablauf der Zeitanforderung ist das Ergebnis der Berechnung jedoch nutzlos und kann verworfen werden. Weiche Echtzeitfähigkeit bedeutet hingegen, dass gemäß Spezifikation verspätete Reaktionen nur störend sind, sie führen aber zu keinem kritischen Systemverhalten und werden auch nicht verworfen.
2.2 Zuverlässigkeitsmodelle
Von zentraler Bedeutung beim Testen ist die sinnvolle Feststellung eines Testende-Kriteriums. Bei einem sinnvoll bestimmten Mindestreifegrad kann und sollte der Testprozess abgebrochen werden. Auch ein »Übertesten« sollte aus wirtschaftlichen Gründen nicht erfolgen – Aufwand und Nutzen stehen dann in keinem guten Verhältnis mehr.
Metriken für den Reifegrad
Voraussetzung für all dies sind quantifizierbare Eigenschaften des Softwarereifegrads – wir brauchen Metriken! Genau hier helfen uns Zuverlässigkeitsmodelle.
Was ist ein Zuverlässigkeitsmodell?
Ein Zuverlässigkeitsmodell ermöglicht Aussagen über das in Zukunft zu erwartende Ausfallverhalten, ohne auf statistische Werte warten zu müssen. Man kann z. B. schlecht fünf Jahre bei der Ermittlung einer MTTF warten, um eine Metrik hinsichtlich Ausfallverhalten zu erhalten. Aus diesem Grund greift man auf Daten zurück, die aus dem während der Entwicklung beobachteten Ausfallverhalten gewonnen wurden. Der Vorteil dieses Vorgehens liegt auf der Hand: Wir schaffen uns auf diese Weise die Möglichkeit zur Prävention. Im Auge behalten muss man nur die Beurteilungsqualität. Wie immer bei der Nutzung eines Modells liegt eine Abstraktionsstufe zwischen Modell und Realität. Gängige Methoden der Zuverlässigkeitsermittlung sind z. B.
Читать дальше