Holen Sie sich die UMFANGREICHSTE Abdeckung für die Einhaltung von MISRA C! Erfahren Sie mehr >>

Beschleunigen Sie Ihre Code-Coverage-Aufgabe mit einem Coverage-Berater

Von Ricardo Camacho

3. Dezember 2020

4  min lesen

Beim Aufbau kritischer Systeme wird die strukturelle Codeabdeckung zu einer Notwendigkeit. Dieser Beitrag zeigt, wie Parasoft C/C++test Testteams mit automatisierten Produktivitätsfunktionen wie dem Coverage Advisor helfen kann.

Softwaretests sind ein wesentlicher Bestandteil der Softwareentwicklung. Jede Branche, die Code entwickelt und ausführt, kann von der Verwendung von Tools zum Testen der strukturellen Codeabdeckung profitieren. Diese Tools sind besonders nützlich in Branchen für die eingebettete Entwicklung sicherheitskritischer Anwendungen, bei denen Softwaresysteme nicht ausfallen können – oder Menschenleben verloren gehen. Abdeckungsratgeber von Parasoft C/C++test hilft Benutzern, diesen schwer fassbaren Testfall zu erstellen, der schwierig und zeitaufwändig zu erstellen ist.

Code-Abdeckung ist eine wichtige Notwendigkeit

Das Erhalten von 100% igen Codeabdeckungsmetriken in eingebetteten sicherheitskritischen Systemen dient mehreren Zwecken. Der Hauptzweck ist die Anpassung an Verifizierung und Validierung (V & V) Anforderungen definiert in Prozessstandards wie DO-178C, IEC 62304Und andere.

Die Vorteile

Der Wert, den die Codeabdeckung bietet, ist eine zusätzliche V & V-Aktivität, die Fehler im Code beseitigt. Es stellt sicher, dass jede Codezeile ausgeführt und somit durch Testen überprüft wurde. Dies gibt Ihnen ein zusätzliches Sicherheitsnetz für Codequalität und Zuverlässigkeit.

Wenn Sie alle Ihre Testfälle ausführen und nur 60% erhalten, wird deutlich, dass Sie nicht genügend Testfälle erstellt haben. Infolgedessen können versteckte Mängel in diesen unberührten Bereichen lauern.

Ein weiteres Problem ist "toter Code". Das bedeutet Code, der niemals ausgeführt werden würde, weil kein Pfad dazu existiert. Dies kann passieren, wenn eine Funktion / Fähigkeit implementiert ist, aber irgendwann die Anforderung für die Funktion entfernt wird. Wenn Sie den Code nicht vollständig entfernen, kann dies zu einem toten Code führen. Das Auffinden von totem Code in Funktionen oder Operationen kann auch eine fehlerhafte Codelogik hervorheben, die Sie beheben müssen. In dieser Situation zeigt der tote Code an, dass kein erreichbarer logischer Pfad vorhanden ist.

So erfüllen Sie Ihre Anforderungen an die Codeabdeckung

Sie können die Codeabdeckung durch verschiedene Testmethoden oder eine Kombination aus:

  • Einheit
  • Integration
  • Systemtests

Ich habe an den folgenden zwei Ansätzen teilgenommen, die Parasoft problemlos unterstützt:

  • Eine Kombination aus System- und Unit-Tests. Instrumentieren Sie zunächst den Code und führen Sie alle Systemtestfälle aus, wodurch sich viele Abdeckungsmetriken ergeben. Wenden Sie zuletzt Unit-Tests an, um die Abdeckung des verbleibenden nicht abgedeckten Codes zu erhalten.
  • Verwenden von Unit-Tests, um eine 100% ige Abdeckung des Strukturcodes zu erreichen. Dieser Ansatz ist unkompliziert. Der Benutzer erstellt Testfälle auf Einheitenebene, um die Abdeckung jeder Funktion / Operation sicherzustellen.

Code-Coverage-Metriken

Es sind verschiedene Abdeckungsmetriken zu berücksichtigen. Zu wissen, welcher spezifische Typ angewendet werden soll, hängt von der Software-Integritätsstufe (SIL) ab, wie in definiert IEC 61508. Ein weiteres Beispiel ist Design Assurance Level (DAL) für DO-178B / C.. Bei eingebetteten Systemen sind die Steuerungsmetriken, auf die verwiesen wird, Anweisungen, Verzweigungen, Abdeckungen für modifizierte Zustandsentscheidungen (MC / DC), und für die strengsten Anforderungen gibt es Objekt- / Baugruppencode. Parasoft unterstützt das Sammeln all dieser Abdeckungsmetriken, einschließlich der Begriffe, die andere Branchen verwenden, wie Blockieren, Aufrufen, Funktion, Pfad, Entscheidung und mehr.

Dashboard mit Kennzahlen und Trends zur Codeabdeckung
Abbildung 1: Metriken und Trends

Prozess automatisieren

Der Parasoft C / C ++ - Test hat enorme Auswirkungen auf die Produktivität bei der Automatisierung des Prozesses zur Erlangung der Codeabdeckung. Der erste ist die automatisierte Testfallgenerierung. Mit einem Klick und einer Menüauswahl analysiert die Testlösung den Code und generiert automatisch Smart-Unit-Testfälle. Diese Unit-Testfälle können dann ausgeführt werden. Je nach Codegröße und Komplexität können Teams sofort bis zu 90% erreichen.

Der Wert der Verwendung einer einheitlichen C/C++-Testlösung

Für komplexen Code gibt es immer schwer fassbare Code-Anweisungen, für die es äußerst schwierig ist, eine Abdeckung zu erhalten. Es ist wahrscheinlich, dass es mehrere Eingabewerte mit verschiedenen Permutationen und möglichen Pfaden gibt, die das Entschlüsseln umständlich und zeitaufwändig machen. Mit nur einer Kombination erhalten Sie jedoch die Abdeckung, die Sie benötigen. Der Parasoft C / C ++ - Test 2020.2 hat seinen Coverage Advisor erweitert und es einfacher gemacht, die Abdeckung der schwer erreichbaren Codezeilen zu erhalten.

So erhalten Sie Deckung in Coverage Advisor

Klicken Sie in Ihrem Editor mit der rechten Maustaste auf die Codezeile, für die Sie Berichterstattung wünschen, und wählen Sie Parasoft -> In Coverage Advisor anzeigen.

Menü mit Parasoft und dann In Coverage Advisor anzeigen
Abbildung 2: Im Coverage Advisor-Menü anzeigen

Abbildung 3 zeigt einen Analysebericht, der dem Benutzer eine Lösung bietet. Das Voraussetzungen Feld Express:

  • Der Bereich und die Eingabewerte für mainSensorSignal und coSensorSignal
  • Die erwarteten Ausgaben der externen Anrufe

Beim Erstellen des Komponententestfalls mit diesen festgelegten Parameterwerten und Stubs für externe Anrufe erhält der Benutzer eine Abdeckung der ausgewählten Leitung sowie der zusätzlichen Leitungen, die in der Tabelle angegeben sind Erwartete Abdeckung Feld.

Screenshot der Registerkarte Coverage Advisor mit Abhängigkeiten, Voraussetzungen und erwarteter Abdeckung
Abbildung 3: Parasoft C / C ++ - Test 2020.2 Feedback zur Coverage Advisor Line Coverage-Analyse

Zusammenfassung

Beim Erstellen ist eine strukturelle Codeabdeckung erforderlich eingebettete sicherheits- und sicherheitskritische Softwaresysteme. Zusammen mit der Abdeckung der Anforderungsprüfungen wird sichergestellt, dass:

  • Sie haben genügend Testfälle erstellt, um Ihre Software zu testen.
  • Es gibt keinen toten Code.
  • Jede Linie wird auf Konformitäts- und Zertifizierungsanforderungen überprüft.

Parasoft C/C++test ist eine einheitliche Testlösung, die Teams Testmethodenfähigkeiten und automatisierte Produktivitätsfunktionen wie Coverage Advisor bietet. Mit dieser Funktion können Entwickler ihre Codeabdeckungsziele schnell erreichen. Dementsprechend können Softwaredirektoren und -manager Geschäftsziele in Bezug auf Time-to-Market, Reduzierung der Arbeitskosten, Prüfungssicherheit und einfache Produktzertifizierung erreichen.

Erfahren Sie, wie Sie automatisierte Testtechniken wie statische Analyse, Komponententests und mehr kombinieren, um den Test-ROI zu maximieren.

Holen Sie sich das Whitepaper: Der Wert der Verwendung eines einheitlichen C / C ++ - Testtools

Von Ricardo Camacho

Sr. Technical Product Marketing Manager für die eingebetteten Testlösungen von Parasoft. Er verfügt über Erfahrung in der SDLC- und Testautomatisierung eingebetteter Echtzeit-, sicherheits- und sicherheitskritischer Anwendungen sowie in der Einhaltung von Industriestandards durch Software.

Erhalten Sie die neuesten Nachrichten und Ressourcen zum Testen von Software sofort.