Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Entdecken Sie die Kapitel
Die Softwareverifizierung und -validierung ist ein integraler Bestandteil der Automobilsoftwareentwicklung, und das Testen ist ein wichtiger Weg, um das korrekte Verhalten der Software nachzuweisen. Komponententests dienen der Überprüfung des Moduldesigns. Sie stellen sicher, dass jede Softwareeinheit ihre vorgesehene Funktion erfüllt.
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 Validierung, die in jeder Testphase abgeleitet wurde.
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
ISO 26262 Teil 6, 10.4.3:2018
Diese Tests prüfen die Funktionalität direkt gemäß den jeweiligen Anforderungen. Testautomatisierungswerkzeuge müssen die bidirektionale Rückverfolgbarkeit von Anforderungen zu ihren Tests und den Berichten zur Testabdeckung 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 Mechanismus der Funktionsstubs, um Fehlerbedingungen in die Ergebnisse der Analyse des getesteten Codeablaufs einzufügen und kann zum Schreiben zusätzlicher Tests verwendet werden.
Die Testautomatisierung bietet große Vorteile für eingebettete Automobilsoftware . Der Verzicht auf Testsuiten, die viel manuelle Eingriffe erfordern, ermöglicht schnellere, einfachere und häufigere Tests.
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.
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.
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 stellt die mit Abstand größte Herausforderung beim Unit-Testing dar. Testfälle sind insbesondere in der Entwicklung sicherheitskritischer Software von großer Bedeutung, da sie die funktionalen Anforderungen gewährleisten und unvorhersehbares Verhalten sowie Sicherheits- und Schutzanforderungen prüfen müssen. All dies unter Einhaltung der Testabdeckungskriterien.
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 bei Bedarf hinzugefügt werden.
Entdecken Sie die Kapitel