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

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
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.
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.
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.
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.
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.
Diese Tests bewerten die Menge an Arbeitsspeicher, Dateispeicherplatz, CPU-Ausführung oder anderen Zielhardwareressourcen, die von der Anwendung verwendet werden.
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.
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.
Automatisch generierte Testfälle (z. B. heuristische Werte, Grenzwerte) nutzen Datenquellen, um in Tests ein breites Spektrum an Eingabewerten nutzen zu können.
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.
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.
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.
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.
Entdecken Sie die Kapitel