Empfohlenes Webinar: Vereinfachen Sie Compliance-Workflows mit dem neuen C/C++test 2024.2 und KI-gesteuerter Automatisierung Zum Video
Testen von Softwaresystemen
Bei Systemtests wird das System als Ganzes getestet. Sobald alle Komponenten integriert sind, wird das gesamte System gründlich getestet, um sicherzustellen, dass es die angegebenen funktionalen, sicherheitsbezogenen und sonstigen nicht funktionalen Anforderungen erfüllt.
Spezialisierte Testteams führen diese Art von Tests für sicherheitskritische Software durch. Systemtests fallen in den Bereich der Black-Box-Tests. Daher sollten hierfür keine Kenntnisse über den inneren Aufbau des Codes oder der Logik erforderlich sein.
Ein wichtiger Unterschied beim Testen auf Systemebene besteht darin, dass das System in einer Umgebung getestet wird, die der Produktionsumgebung, in der die Anwendung bereitgestellt wird, nahe kommt. In dieser Phase werden bestimmte Sicherheitsfunktionen validiert und systemweite Sicherheitstests durchgeführt.
Automotive-Systemtests auf Serviceebene
Einzelne Systeme in einem Auto werden möglicherweise nicht als Teil eines Dienstes betrachtet. Aufgrund der Vernetzung mit größeren Systemen sollten sie es jedoch sein. In einem Auto beispielsweise besteht die Aufgabe der Motorsteuerung (ECU) allein darin, eine ordnungsgemäße Verbrennung und Emissionswerte im Motor sicherzustellen, das Auto überwacht jedoch mithilfe der ECU den Kraftstoffverbrauch und meldet ihn über eine drahtlose Verbindung an einen zentralen Server.
Diese Kilometerdaten werden dann zur Routenplanung und zur Schätzung der Betriebskosten verwendet. Plötzlich ist die ECU ein kritischer Endknoten in einem geschäftlichen Entscheidungsprozess.
Anstatt die Systemqualität im Hinblick auf die Erfüllung der Anforderungen einzelner Geräte zu betrachten, wird der Rahmen erweitert, um die Qualität der bereitgestellten Dienste zu berücksichtigen. Tests auf Dienstebene stellen sicher, dass nichtfunktionale Anforderungen erfüllt werden. Beispielsweise sind Leistung und Zuverlässigkeit auf Geräteebene oder während des Software-Unit-Tests schwer zu beurteilen. Dienstbasierte Tests können die Betriebsumgebung eines Geräts simulieren, um realistische Belastungen bereitzustellen. Im HVAC-Beispiel kann der neue Temperatursensor mit unterschiedlichen Anforderungsraten getestet werden, um festzustellen, ob er die Leistungsanforderungen erfüllt.
Sicherheit ist ein wichtiges Anliegen bei Automobilsystemen. Cyberangriffe gehen höchstwahrscheinlich vom Netzwerk selbst aus, indem sie die freigelegten APIs angreifen. Servicebasierte Tests können simulierte Umgebungen für robuste Sicherheitstests erstellen, entweder durch Fuzzing (zufällige und fehlerhafte Dateneingaben) oder Denial-of-Service-Angriffe. Ein neuer Temperatursensor im HVAC-Beispiel funktioniert möglicherweise bei erwarteten Anfragen ordnungsgemäß, stürzt jedoch bei Überlastung ab. Ein Angreifer könnte dies ausnutzen, um das System zu überlasten und einen Ausfall zu verursachen.
Virtuelle Testumgebung und Service Level Testing
Ein echtes Testlabor erfordert eine möglichst genaue physische Darstellung der Umgebung, in der ein Auto eingesetzt werden soll. Selbst im modernsten Labor ist es schwierig, eine realistische Umgebung zu skalieren. Ein virtuelles Labor löst dieses Problem.
Virtuelle Labore sind nicht mehr auf schwer zu findende (oder nicht vorhandene) Hardwareabhängigkeiten angewiesen. Sie nutzen eine ausgefeilte Service-Virtualisierung mit anderen wichtigen Testautomatisierungstools.
Service-Virtualisierung
Simuliert alle Abhängigkeiten, die das zu testende Gerät benötigt, um einen vollständigen Systemtest durchzuführen. Dazu gehören alle vom Gerät verwendeten Verbindungen und Protokolle mit realistischen Reaktionen auf die Kommunikation. Zum Beispiel: Service-Virtualisierung kann ein Unternehmensserver-Backend simulieren, mit dem ein Auto kommuniziert. Ebenso kann die Virtualisierung ein abhängiges System, wie etwa Verkehrs- oder Wetterdaten, auf realistische Weise simulieren.
Service- und API-Tests
Bieten Sie eine Möglichkeit, das zu testende System so zu steuern, dass die von ihm bereitgestellten Dienste (und bereitgestellten APIs) einwandfrei funktionieren. Diese Tests können über die Automatisierungsplattform manipuliert werden, um bei Bedarf Leistungs- und Sicherheitstests durchzuführen.
Testlabormanagement und -analyse
Übernehmen Sie die übergreifende Kontrolle über die virtuellen Labore. Nach der Virtualisierung kann das gesamte Labor-Setup nach Bedarf repliziert und Testläufe automatisiert und wiederholt werden. Analysen bieten die notwendige Übersicht über Aktivitäten und Ergebnisse.
Laufzeitüberwachung
Erkennt Fehler in Echtzeit auf dem getesteten System und erfasst wichtige Ablaufverfolgungsinformationen.
Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.
Entdecken Sie die Kapitel
- Einführung "
- 1. Übersicht »
- 2. Statische Analyse »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERT »
- 6. CWE »
- 7. Unit-Tests »
- 8. Regressionstests »
- 9. Software-Integrationstests »
- 10. Testen von Softwaresystemen »
- 11. Strukturelle Codeabdeckung »
- 12. Anforderungsrückverfolgbarkeitsmatrix »
- 13. Werkzeugqualifizierung »
- 14. Berichterstattung und Analyse »