Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>

Sehen Sie, welche API-Testlösung im GigaOm Radar Report am besten abgeschnitten hat. Holen Sie sich Ihren kostenlosen Analystenbericht >>
Durch die Codeabdeckung wird der Code in Ihrer Anwendung verfügbar gemacht, der getestet wurde und der nicht getestet wurde. Benutzer können Codeabdeckung auf verschiedenen Ebenen, Funktionen oder Einheiten, der gesamten Datei oder der gesamten Anwendung auf Zielhardware oder Hostumgebungen durchführen. Und Sie können die Abdeckung der verschiedenen Testmethoden wie Unit-Tests und Systemtests zusammenfassen.
Code-Abdeckung
Strukturelle Codeabdeckung ist die Identifizierung von Code, der ausgeführt und protokolliert wurde, um festzustellen, ob das System angemessen getestet wurde.
Die Codeabdeckung drückt den Grad aus, in dem der Quellcode der Anwendung von allen Testpraktiken, einschließlich Einheitentests, manuellen Tests, automatisierten Funktionstests und dergleichen, ausgeübt wird. Es auch:
Infolgedessen bietet die Anwendungsabdeckung einen äußerst aussagekräftigen Einblick in das Risiko. In den meisten Organisationen sind Unit-Tests das primäre Mittel für die Fahrabdeckung. Und obwohl Unit-Tests eine wertvolle Testpraxis sind, die auch mehrere prozessorientierte Vorteile bietet, ist es auch teuer in Bezug auf das Fachwissen und die Zeit, um die Tests zu erstellen, zu verwalten und zu warten.
Die Codeabdeckung kann als Teil des Continuous Integration (CI)-Prozesses sowie als Teil des Entwickler-Desktop-Workflows genutzt werden. Sie können auch erweiterte Analysen des Quellcodes durchführen und anhand der vom Entwickler vorgenommenen Codeänderungen ermitteln, welche Komponententests erneut ausgeführt werden müssen.
Diese Code-Coverage-Tools sind besonders nützlich in Branchen für die eingebettete Entwicklung von sicherheits- und sicherheitskritischen Anwendungen, in denen Softwaresysteme nicht ausfallen können oder Menschenleben verloren gehen.
Die Gründlichkeit der Abdeckung in sicherheitskritischen Systemen hängt von der in verschiedenen Branchen verwendeten Metrik für die Anwendungssicherheitsintegritätsstufe (SIL oder ASIL) und der in der Avionik üblichen Entwicklungssicherheitsstufe (DAL) ab. Gründlichkeit bezieht sich auf die strukturellen Elemente im Code. Diese werden typischerweise in Code-Anweisung, Verzweigung, modifizierte Bedingungsentscheidungen und aufgeschlüsselt Mit Parasoft können Sie auch auf eine viel feinere Ebene der Abdeckungsgranularität aufschlüsseln, wie der Objektcode oder die Assemblersprache.
Die Codeabdeckung wird häufig durch Codeinstrumentierung identifiziert oder gemessen. Dies erfolgt durch Anreichern des Quellcodes mit zusätzlichem Verfolgungscode, um während der Ausführung festzustellen, ob jede Anweisung, Verzweigung und/oder der Entscheidungspfad für modifizierte Bedingungen (MC/CD) ausgeführt wurde.
Es ist wichtig zu wissen, dass die Code-Instrumentierung Code-Bloat verursacht. Die Zunahme der Codegröße ist normalerweise kein Problem. Bei eingebetteten Zielen mit Speicherbeschränkungen kann sich die Erhöhung auf die Fähigkeit auswirken, den Code zum Testen auf Ihre Zielhardware zu laden.
Die prozentualen Ziele für die Codeabdeckung können in einigen Fällen subjektiv sein. In anderen Fällen sind sie obligatorisch. Beim Erstellen sicherheitskritischer Anwendungen, bei denen ein Versagen zum Tod führen kann, erfordern behördliche und branchenspezifische Standards eine 100-prozentige Abdeckung struktureller Vorschriften.
Bei Anwendungen, die nicht sicherheitskritisch sind, wird die Codeabdeckung in der Regel der Entwicklungsorganisation überlassen. Das übliche Komfortniveau für diese Art von Umständen ist das Erreichen eines Ziels von 80 % Codeabdeckung.
Die Codeabdeckung kann helfen, die Testvollständigkeit zu messen und garantiert, dass Sie jede einzelne Codezeile in Ihrer Anwendung während der Ausführung überprüft haben. Die Nutzung einer Kombination von Testmethoden wie statischer Analyse, Komponententests, Systemtests, Leistungstests und dergleichen ist der beste Weg, um die Codequalität sicherzustellen.
Erfüllen Sie die Code-Coverage-Anforderungen für funktionale Sicherheitsstandards wie DO-178B/C, ISO 26262, ISO 21434, IEC 62304, IEC 61508 und EN 50128. Die Code-Coverage-Anforderungen tragen dazu bei, die Sicherheit und Zuverlässigkeit von Codes zu gewährleisten, indem ungetesteter Code offengelegt und gelöscht wird Defekte.
In der Produktion gefundene Codefehler sind die teuersten. Verhindern Sie, dass sie durch die Ritzen rutschen, indem Sie Code hervorheben, der nicht getestet wurde, bevor Sie Ihre Anwendung freigeben. Dies kann am Arbeitsplatz des Entwicklers erfolgen oder im Rahmen der Continuous Integration (CI)-Pipeline automatisiert werden.
Für die absolut strengsten sicherheitskritischen Anforderungen an die Codeabdeckung, wie z. B. DO-178C Level A, bietet Parasoft Codeabdeckung auf Baugruppenebene. Sparen Sie mit unserer automatisierten Lösung Tage - sogar Wochen - arbeitsintensiven, fehleranfälligen manuellen Aufwand.
Gründliche Tests von Embedded Safety und sicherheitskritischen Anwendungen erfordern Tests auf der Zielhardware und in der Hostumgebung. Parasoft bietet Code-Instrumentierung, um strukturelle Code-Coverage für Statement, Branch, Modified Condition Decision Coverage (MC/DC) und mehr zu erfassen und zu melden.
Obwohl Sie durch Komponententests im Allgemeinen 100 % strukturelle Codeabdeckungsziele erreichen können, sparen Sie Zeit und Mühe, indem Sie die Ergebnisse der Codeabdeckung, die Sie automatisch aus Systemtests erhalten, aggregieren. Vervollständigen Sie dann den verbleibenden aufgedeckten Code mithilfe von Unit-Tests.
Stellen Sie die Produktsuite von Parasoft bereit, um die strukturelle Codeabdeckung von Anwendungen durchzuführen, die in C, C ++, Java, C # und VB.NET geschrieben wurden.
Sammeln Sie die Abdeckung von Unit-Tests, Systemtests, manuellen Tests sowie allen anderen verwendeten Testausführungsmethoden. Parasoft C/C++test unterstützt eine Reihe von Abdeckungsmetriken (Branch, Statement, MC/DC usw.), die Teams in der nativen und anwendungsübergreifenden Entwicklung verwenden können.
Erfassen und überwachen Sie die Codeabdeckung während manueller oder automatisierter Funktionstests, die in Ihrer Java-Anwendung durchgeführt werden. Benutzer können Abdeckungsdaten und Testergebnisse senden, um sie zur Analyse zusammenzuführen und zu korrelieren, was Einblicke in die Testqualität der Anwendung und Ihre Testqualität bietet.
Die Ermittlung der Codemenge, die während des Testens ausgeführt wird, ist eine leistungsstarke Metrik, um das in der Anwendung verbleibende Risikoniveau zu verstehen. Hier sind einige Best Practices, die Sie befolgen sollten.
Die Integration von Tests und Codeabdeckung in Ihr Build-System erhöht die Effizienz, fördert die Zusammenarbeit und bietet mehr Transparenz über Ihren gesamten Softwareentwicklungslebenszyklus.
Nutzen Sie Ihre Systemtests, um Codeabdeckung zu erhalten und fehlende Tests zu identifizieren, die versteckte Fehler aufdecken können.
Verlieren Sie keine Zeit damit, alle Eingabewerte und Vorbedingungen zu bestimmen, die in einem Testfall erforderlich sind, um eine schwer fassbare Anweisung, Verzweigung oder MC/CD-Codezeile abzudecken. Nutzen Sie den Deckungsratgeber.
Verwenden Sie die verschiedenen Testmethoden, die Sie durchführen müssen, um Ihre Abdeckungsanforderungen zu beschleunigen. Die aggregierte Abdeckung kann aus System-, Integrations-, Einheiten- und manuellen Tests erhalten werden.
Parasoft-Lösungen können Unit-Testfälle automatisch analysieren und generieren, um Null-Zeiger-Probleme, Grenzwertbedingungen, Division durch Null und viele andere Arten von Fehlern auszuschließen. Darüber hinaus können diese Testfälle aktiviert werden, um eine Codeabdeckung zu erzeugen und in einigen Fällen eine strukturelle Codeabdeckung von bis zu 90 % zu erreichen.
Code-Instrumentierung verursacht Code-Bloat und die Zunahme der Codegröße kann sich auf die Fähigkeit auswirken, den Code zum Testen auf Ihre speicherbeschränkte Zielhardware zu laden. Instrumentieren Sie Teile Ihres Codes gleichzeitig, führen Sie Ihre Tests durch und aggregieren Sie Ihre Abdeckungsmetriken aus jedem Lauf.
Wenn Sie eine 100%ige strukturelle Codeabdeckung erfüllen müssen, aber defensiven Code haben, der nur ausgeführt wird, wenn das System in einen Fehlerzustand eintritt, der Wochen, Monate oder sogar Jahre (oder vielleicht nie) dauern kann, verwenden Sie Ihren Debugger, um die erforderlichen Bedingungen zu simulieren und Durchführen einer visuellen Inspektion der Codeausführung/-abdeckung.
Wenn Code gefunden wird, weil er keinen Weg zu seiner Ausführung hat, stellen Sie aus Sicherheitsgründen sicher, dass er gelöscht wird und niemals ins Feld gelangt.
Parasoft-Codeabdeckung innerhalb der IDE- und DTP-Dashboard-Berichts- und Analyselösungen.
Um mit der Erfassung der Codeabdeckung zu beginnen, machen Sie sich mit Ihren Anforderungen an die Abdeckung vertraut. Vielleicht erfordern Ihre Branche und die Art der Anwendung keine Erfassung von Abdeckungsmetriken, Sie möchten jedoch die Codequalität sicherstellen oder verbessern, sodass 75 % möglicherweise Ihr ursprüngliches Ziel sind.
Wenn Ihre Branche die Einhaltung eines funktionalen Standards wie DO-178C für die Avionik oder ISO 26262 und ISO 21434 für die Automobilindustrie oder IEC 62304 für die Medizintechnik erfordert, bestimmen Sie, ob Sie eine 100-prozentige Codeabdeckung benötigen oder ob ein anderer Prozentsatz der Codeabdeckung empfohlen wird. Informieren Sie sich auch darüber, welchen strukturellen Codeabdeckungstyp Sie erfüllen müssen. Es könnte die Funktion, Zeile, Anweisung, Block, Aufruf, Pfad, Entscheidung, einfache Bedingung, MC/DC, Objekt/Assembly oder eine Kombination davon sein.
Eine der einfachsten Möglichkeiten, Codeabdeckung zu erhalten, ist während der Implementierung, wenn Ingenieure Unit-Testfälle erstellen, um ihren Code zu testen. Mit Lösungen wie Parasoft C/C++test, C/C++test CT und Jtest,
Beachten Sie, dass das Instrumentieren des Codes zu Code-Bloat führen kann, und wenn Sie auf Zielhardware testen, müssen Sie möglicherweise eine Teilinstrumentierung durchführen. Instrumentierter Code kann auch die Leistung der Ausführung verändern, daher sollten Sie sich mit verschiedenen Optimierungsfunktionen vertraut machen, die Ihnen zur Verfügung stehen.
Das Erfassen und Melden Ihrer Codeabdeckungsmetriken ist von entscheidender Bedeutung. Es gibt mehrere Methoden, je nachdem, ob Ihre Anwendung auf einem eingebetteten Ziel oder einem vollständig mit Ressourcen ausgestatteten System oder Server ausgeführt wird.
Letztendlich werden Sie Abdeckungsdaten abrufen oder zusammenführen, um Ihre vollständigen Metriken zur Codeabdeckung zu erhalten. Abdeckungsberichte können von Ihrer IDE generiert und in das Berichts- und Analyse-Dashboard DTP von Parasoft exportiert werden. In DTP können Benutzer die Bereiche mit hohem Risiko visuell inspizieren, verstehen, was als Nächstes angegangen werden sollte, und Compliance- und Auditberichte erstellen.
Die Lösung von Parasoft für die Code-Coverage liefert kritisches Feedback über die Vollständigkeit und Gründlichkeit des Testprozesses, indem sie Tests und strukturelle Code-Coverage-Ergebnisse korreliert. Sie können diese Ergebnisse oder Metriken verwenden, um die Vollständigkeit von Tests auf Unit-, Integrations- und Systemebene durch unsere Unterstützung aller wichtigen Arten der Codeabdeckung (Funktion, Aufruf, Zeile, Anweisung, Block, Pfad, Entscheidung, einfache Bedingung und MC/ DC), einschließlich Objekt-/Baugruppenabdeckung.
Coverage-Ergebnisse sind direkt in der IDE verfügbar, mit bequemen Ansichten und Hervorhebungen im Quellcode-Editor sowie in Form von statischen HTML- oder PDF-Berichten und dynamischen Berichten über das zentralisierte Berichts-Dashboard von Parasoft.
Benutzer können Anwendungen überwachen, die nativ auf dem Desktop, plattformübergreifend mithilfe von Simulatoren oder auf echter eingebetteter Hardware ausgeführt werden. Das Coverage-Modul von C/C++test und C/C++test CT ist optimiert, um die Auswirkungen auf die Ausführungsleistung und den Test-Binär-Footprint zu minimieren, wodurch es für den Einsatz mit serverbasierten High-End-Anwendungen geeignet ist sehr begrenzte Systeme, die auf 16-Bit-Mikrocontrollern basieren.
In Verbindung mit der Process Intelligence Engine von Parasoft profitieren Anwender von der Testauswirkungsanalyse. Für jeden durchgeführten Test, einschließlich manueller, systembasierter oder UI-basierter Tests, werden Tests nicht nur für Test/Fail und Ergebnisse, sondern auch für ihre Auswirkungen auf die Codebasis aufgezeichnet.
Jeder weitere Test wird mit diesen vorhandenen Informationen überlagert, wodurch ein vollständiges Bild von Testerfolg und -abdeckung entsteht. Wenn Code geändert wird, sind die Auswirkungen auf den zugrunde liegenden Datensatz deutlich sichtbar und heben Coverage-Tests hervor, die jetzt fehlschlagen oder Code, der jetzt nicht getestet wurde. Die Erhebung dieser Informationen in verschiedenen Detailgraden ermöglicht es Entwicklern und Testern, schnell zu erkennen, was für den nächsten Testlauf geändert/korrigiert werden muss.
Mit Parasoft können sich Teams auf die Codeabdeckung für die Bereiche der aktiven Entwicklung konzentrieren, anstatt auf die gesamte Codebasis, was insbesondere bei der Arbeit mit Legacy-Codebasen problematisch sein kann. Anstatt nur zu versuchen, eine Abdeckungsnummer für die gesamte Codebasis zu erreichen, hilft Ihnen Parasoft dabei, die Teile des Codes zu lokalisieren, die sich ändern.
Das Berichts-Dashboard von Parasoft korreliert die Daten aus C/C++test oder C/C++test CT mit beobachteten Änderungen in der Codebasis, um das Entwicklungsteam darauf zu konzentrieren, ein höheres Maß an Codeabdeckung für diese spezifischen, geänderten Teile der Codebasis zu erreichen. Mit Parasoft können Sie die Auswirkungen von Änderungen minimieren, indem Sie die Änderung selbst effizient verwalten.
Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.