Logo für GIGAOM 365x70

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

ISO 26262 Software-Compliance in der Automobilindustrie

Unit Tests

Softwareverifizierung und -validierung ist ein wesentlicher Bestandteil der Softwareentwicklung im Automobilbereich und das Testen ist eine wichtige Möglichkeit, das korrekte Verhalten der Software nachzuweisen. Unit-Tests sind die Überprüfung des Moduldesigns. Es stellt sicher, dass jede Softwareeinheit das tut, was sie tun soll.

Darüber hinaus können Sicherheitsanforderungen erfordern, dass sich Softwareeinheiten nicht unerwartet verhalten und nicht anfällig für Manipulationen durch unerwartete Dateneingaben sind.

Das V-Modell der Softwareentwicklung zeigt die Beziehung zwischen jeder Phase und der in jeder Testphase abgeleiteten Validierung. Unit-Tests werden hervorgehoben, da dies das Thema dieser Seite ist.
Das V-Modell der Softwareentwicklung zeigt die Beziehung zwischen jeder Phase und der Validierung, die in jeder Testphase abgeleitet wurde.
Im Hinblick auf das klassische V-Modell der Entwicklung ist die Ausführung von Unit-Tests eine Validierungspraxis, um sicherzustellen, dass das Moduldesign korrekt ist. ISO 26262 enthält spezifische Richtlinien für das, was bei Unit-Tests getestet werden muss.

ISO 26262 enthält spezifische Richtlinien für Tests gemäß Sicherheitsintegritätsstufen, wobei anforderungsbasierte Tests, Schnittstellentests und die Bewertung der Ressourcennutzung für alle Stufen dringend empfohlen werden. Die Fehlereinfügung wird bei niedrigeren ASIL-Stufen (Automotive Safety Integrity Levels) A und B empfohlen und bei ASIL C und D dringend empfohlen. Ebenso wird die Methode zum Durchführen von Testfällen mit empfohlenen Vorgehensweisen angegeben.

ISO 26262 Teil 6, 10.4.2:2018 - Methoden zur Verifizierung der Softwareintegration
ISO 26262 Teil 6, 10.4.2:2018

ISO 26262 Teil 6, 10.4.3:2018 - Methoden zur Ableitung von Testfällen
ISO 26262 Teil 6, 10.4.3:2018
Wenn Sie diese einzeln aufschlüsseln, überlegen Sie, wie jede Unit-Test-Anforderung von ISO 26262 mit Testautomatisierungstools wie Parasoft C/C++test erfüllt und beschleunigt werden kann. Übrigens, wenn Sie bereits ein Unit-Test-Framework wie GoogleTest, Cppunit, Boost.Test oder ein selbst entwickeltes verwenden, sollten Sie in Betracht ziehen, es einzubinden. C/C++-Test-CT. Es fügt hinzu Codeabdeckung, Rückverfolgbarkeit der Anforderungen und Berichterstellung zu diesen beliebten offenen Test-Frameworks.

Unit-Test-Methoden

Anforderungsbasierter Test

Diese Tests prüfen direkt die Funktionalität, wie in jeder Anforderung angegeben. Testautomatisierungstools müssen die bidirektionale Rückverfolgbarkeit der Anforderungen zu ihren Tests und den Berichten zur Abdeckung der Anforderungstests unterstützen, um die Konformität nachzuweisen.

Schnittstellentest

Diese Tests stellen sicher, dass sich Programmierschnittstellen wie angegeben verhalten und funktionieren. Testtools müssen Funktionsstümpfe und Datenquellen erstellen, um das Verhalten externer Komponenten für die automatische Ausführung von Unittests zu emulieren.

Fehlerinjektionstest

Diese Tests verwenden unerwartete Eingaben und führen Fehler bei der Ausführung des Codes ein, um die Fehlerbehandlung oder deren Fehlen zu untersuchen. Testautomatisierungstools müssen die Einfügung von Fehlerbedingungen mithilfe von Funktionsstümpfen und die automatische Generierung von Unittests mithilfe eines vielfältigen Satzes von Vorbedingungen wie Mindest-, Höchst- und heuristischen Werten unterstützen.

Auswertung der Ressourcennutzung

Diese Tests bewerten die Menge an Arbeitsspeicher, Dateispeicherplatz, CPU-Ausführung oder anderen Zielhardwareressourcen, die von der Anwendung verwendet werden.

Testfalltreiber

Analyse der Anforderungen

Jede Anforderung führt zu mindestens einem einzelnen Unit-Testfall. Obwohl Testautomatisierungstools keine Tests direkt aus Anforderungen generieren, müssen sie die bidirektionale Rückverfolgbarkeit von Anforderungen zum Code und von Anforderungen zu Tests unterstützen und Informationen zu Anforderungen, Tests und Codeabdeckung pflegen.

Generierung und Analyse von Äquivalenzklassen

Testfälle müssen sicherstellen, dass sich Einheiten für eine Reihe von Eingaben auf die gleiche Weise verhalten, nicht nur für ausgewählte Eingaben für jede Einheit. Testautomatisierungstools müssen die Generierung von Testfällen mithilfe von Datenquellen unterstützen, um eine breite Palette von Eingabewerten effizient nutzen zu können. Parasoft C/C++test verwendet Factory-Funktionen, um Sätze von Eingabeparameterwerten für die automatisierte Generierung von Einheitentests vorzubereiten.

Analyse der Grenzwerte

Automatisch generierte Testfälle (z. B. heuristische Werte, Grenzwerte) nutzen Datenquellen, um in Tests ein breites Spektrum an Eingabewerten nutzen zu können.

Fehler beim Schätzen

Diese Methode verwendet den Funktionsstub-Mechanismus, um Fehlerbedingungen in die Ergebnisse der getesteten Codeflussanalyse einzufügen, und kann zum Schreiben zusätzlicher Tests verwendet werden.

Automatisierte Testausführung und Testfallgenerierung

Testautomatisierung bietet große Vorteile für eingebettete Automobilsoftware. Der Abschied von Test-Suiten, die viele manuelle Eingriffe erfordern, bedeutet, dass Tests schneller, einfacher und häufiger durchgeführt werden können.

Durch das Auslagern dieses manuellen Testaufwands wird Zeit für eine bessere Testabdeckung und andere Sicherheits- und Qualitätsziele frei. Eine wichtige Voraussetzung für die automatisierte Ausführung von Testsuiten ist die Möglichkeit, diese Tests sowohl in Host- als auch in Zielumgebungen auszuführen.

Zielbasiertes Testen von Automobilsystemen

Die Automatisierung von Tests für Automobilsoftware ist aufgrund der Komplexität der Initiierung und Überwachung von Tests auf eingebetteten Zielen eine größere Herausforderung – ganz zu schweigen vom eingeschränkten Zugriff der Softwareteams auf die Zielhardware.

Die Automatisierung von Softwaretests ist unerlässlich, um eingebettete Tests vom Host-Entwicklungssystem bis zum Zielsystem durchgängig durchführen zu können. Das Testen eingebetteter Software ist besonders zeitaufwändig. Die Automatisierung der Regressionstestsuite ermöglicht erhebliche Zeit- und Kosteneinsparungen. Darüber hinaus sind Testergebnisse und die Erfassung von Codeabdeckungsdaten vom Zielsystem für die Validierung und die Einhaltung von Standards unerlässlich.

Die Rückverfolgbarkeit zwischen Testfällen, Testergebnissen, Quellcode und Anforderungen muss aufgezeichnet und aufrechterhalten werden. Daher ist die Datenerfassung bei der Testausführung von entscheidender Bedeutung.

Der Parasoft C/C++test wird mit einem optimierten Test-Harness angeboten, das den zusätzlichen Aufwand für den binären Footprint auf ein Minimum reduziert und in Form von Quellcode bereitgestellt wird, wo er angepasst werden kann, wenn plattformspezifische Änderungen erforderlich sind.

Eine umfassende Ansicht der Bereitstellung, Ausführung und Beobachtung von Tests vom Host bis zum Ziel in Parasoft C/C++test und C/C++test CT.
Eine umfassende Ansicht der Bereitstellung, Ausführung und Beobachtung von Tests vom Host bis zum Ziel in Parasoft C/C++test und C/C++test CT.
Ein großer Vorteil der Parasoft C/C++-Testlösung sind die dedizierten Integrationen mit eingebetteten IDEs und Debuggern, die die Ausführung von Testfällen reibungslos und automatisiert gestalten. Zu den unterstützten IDE-Umgebungen gehören Eclipse, VS Code, Green Hills Multi, Wind River Workbench, IAR EW, ARM MDK, ARM DS-5, TI CCS, Visual Studio und viele andere.

Automatisierte Testfallgenerierung

C/C++test - Explorer für die automatische Testfallgenerierung
C/C++test - Explorer für die automatische Testfallgenerierung

Tools zur Automatisierung von Unit-Tests unterstützen allgemein eine Art Test-Framework, das die Harness-Infrastruktur bereitstellt, um Units isoliert auszuführen und gleichzeitig Abhängigkeiten über Stubs zu erfüllen. Parasoft C/C++test ist da keine Ausnahme. Zu seinen Unit-Test-Funktionen gehört die automatische Generierung von Test-Harnesses und den ausführbaren Komponenten, die für host- und zielbasierte Tests erforderlich sind.

Die Generierung und Verwaltung von Testdaten ist bei weitem die größte Herausforderung beim Unit-Testing. Testfälle sind besonders wichtig bei der Entwicklung sicherheitskritischer Software, da sie funktionale Anforderungen sicherstellen und auf unvorhersehbares Verhalten sowie Sicherheits- und Schutzanforderungen testen müssen. Und das alles unter Einhaltung der Test-Coverage-Kriterien.

Parasoft C/C++test generiert automatisch Testfälle wie das beliebte CppUnit-Format. Standardmäßig generiert C/C++test eine Testsuite pro Quell-/Headerdatei. Es kann auch so konfiguriert werden, dass eine Testsuite pro Funktion oder eine Testsuite pro Quelldatei generiert wird.

Sichere Stub-Definitionen werden automatisch generiert, um „gefährliche“ Funktionen zu ersetzen, darunter System-E/A-Routinen wie rmdir(), remove(), rename() usw. Darüber hinaus können Stubs automatisch für fehlende Funktions- und Variablendefinitionen generiert werden. Benutzerdefinierte Stubs können nach Bedarf hinzugefügt werden.

Dunkelblaues Banner mit dem Bild eines Mannes, der in einem Serverraum mit einer Frau spricht, die ein Tablet in der Hand hält.
Bild eines Mannes und einer Frau mit einem Tablet in der Hand, die in einem Serverraum diskutieren.

Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.