Gehen Sie einen schnelleren, intelligenteren Weg zur KI-gestützten C/C++-Testautomatisierung. Erfahren Sie mehr >>
Erfahren Sie mehr über Parasoft C/C++test.
Nehmen Sie an unserer monatlichen 30-minütigen Produktdemo teil.
Jetzt registrierenWeiterführende Inhalte
WEBINAR
Die Codeabdeckung misst, wie viel vom Quellcode einer Anwendung mit verschiedenen Methoden wie Unit-Tests, manuellen Tests und automatisierten Funktionstests getestet wird. Prozentuale Codeabdeckungsziele können subjektiv sein. Die Vollständigkeit der Abdeckung in sicherheitskritischen Systemen hängt vom branchenüblichen SIL-Metrikwert (Application Safety Integrity Level) und dem in der Avionik üblichen Design Assurance Level (DAL) ab. Bei der Entwicklung sicherheitskritischer Anwendungen, bei denen ein Ausfall zum Tod führen kann, verlangen gesetzliche Vorschriften und Industriestandards eine 100-prozentige strukturelle Codeabdeckung.
Diese Präsentation befasst sich mit dem wichtigen Thema der Codeabdeckung für eingebettete C/C++-Systeme und erläutert deren Bedeutung, verschiedene Messarten und die praktische Anwendung. Wir untersuchen, wie gründliche Tests, insbesondere in sicherheitskritischen Umgebungen, durchgeführt werden können, und stellen Tools vor, die den Prozess vereinfachen.
Die Codeabdeckung ist eine Kennzahl, die angibt, wie viel Quellcode Ihrer Anwendung während des Tests ausgeführt wurde. Sie beantwortet die Frage: „Haben wir genug getestet?“ Durch die Hervorhebung ungetesteten Codes können potenzielle Fehler aufgedeckt und toter Code identifiziert werden. Die gängigste Methode hierfür ist die Code-Instrumentierung. Dabei wird zusätzlicher Code hinzugefügt, um die Ausführung von Anweisungen, Entscheidungen oder Verzweigungen zu verfolgen. Diese Instrumentierung protokolliert anschließend die Ausführung, sodass ein Prozentsatz der Codeabdeckung berechnet und visualisiert werden kann. Code wird dabei häufig grün (ausgeführt) oder rot (nicht ausgeführt) hervorgehoben.
Die Präsentation umfasste eine Demonstration, in der Folgendes gezeigt wurde:
In der Embedded-Welt werden C und C++ häufig in sicherheitskritischen Systemen verwendet. Branchen wie die Automobilindustrie (ISO 26262), die Avionik (DO-178C) und die Medizintechnik (IEC 62304) unterliegen strengen gesetzlichen Anforderungen und Prozessstandards. Diese Standards weisen Softwarekomponenten häufig Sicherheitsintegritätsstufen (SIL) oder Design Assurance Level (DAL) zu. Höhere Stufen, die ein höheres Risiko bei einem Softwarefehler bedeuten, erfordern in der Regel strengere Tests. Beispielsweise empfiehlt SIL 4 in IEC 61508 dringend eine 100-prozentige Abdeckung für Anweisungen, Verzweigungen und MC/DC. Der rote Faden, der sich durch diese Standards zieht, ist der Fokus auf die Abdeckung von Anweisungen, Verzweigungen und MC/DC, da diese von Branchenexperten als Best Practices zur Gewährleistung von qualitativ hochwertigem, sicherem und zuverlässigem Code angesehen werden.
Erreichen der Codeabdeckung kann durch verschiedene Testmethoden erfolgen:
Viele Organisationen kombinieren die Ergebnisse dieser verschiedenen Testmethoden, um ihre Gesamtabdeckungsziele zu erreichen. Beispielsweise kann die Abdeckung durch Unit-Tests mit der Abdeckung durch Systemtests zusammengeführt werden.
Die Codeabdeckung ist ein wichtiger Bestandteil einer Continuous Integration/Continuous Delivery (CI/CD)-Pipeline. Tools automatisieren die Instrumentierung, Ausführung und Berichterstattung von Abdeckungsdaten und lassen sich nahtlos in Build-Systeme und CI/CD-Plattformen wie Jenkins, GitLab und Azure DevOps integrieren. Dies liefert Echtzeit-Feedback zur Codequalität und hilft, Risiken effektiv zu managen.
Letztendlich ist die Codeabdeckung eine leistungsstarke Methode, um die Qualität und Zuverlässigkeit eingebetteter C/C++-Systeme sicherzustellen, insbesondere in sicherheitskritischen Bereichen. Durch das Verständnis der verschiedenen Abdeckungskriterien und den Einsatz geeigneter Tools können Entwicklungsteams ihre Testziele effizienter erreichen.