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.
Zum Abschnitt springen
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.

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.

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.

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.