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 >>
Integrationstests folgen auf Unittests mit dem Ziel, den Architekturentwurf zu validieren. Sie stellen sicher, dass sich höherstufige Funktionsfunktionen in Softwarekomponenten, einschließlich Subsystemen und nicht Units, wie erwartet verhalten und funktionieren. Das Testen von Softwareintegrationen kann in vielen Softwareorganisationen mit einer Kombination von Ansätzen Bottom-up und Top-down durchgeführt werden.
Integrationstests sind ein kritischer Aspekt des Software-Verifizierungsprozesses in DO-178CDie expliziten Anforderungen an Integrationstests finden sich vor allem im Abschnitt 5.4 „Integrationsprozess“ und im Abschnitt 6.4 „Softwaretests“.
Abschnitt 6.4.3 Anforderungsbasierte Testmethoden in DO-178C erfordert anforderungsbasierte Tests für Hardware und Software, die Integrationstests umfassen. Abschnitt 6.4.3 b ist spezifischer und beschreibt anforderungsbasierte Integrationstests als Methode, die sich auf die „Wechselbeziehungen zwischen den Softwareanforderungen“ und auf die „Umsetzung der Anforderungen durch die Softwarearchitektur“ konzentriert.
DO-178C listet die folgenden typischen Fehler auf, die bei Integrationstests aufgedeckt werden.
Bei diesem Ansatz wird zunächst ein Unit-Testfall verwendet und Stubs und/oder Mocks entfernt, um zusätzliche Softwareeinheiten zu integrieren und so eine höherstufige Funktionalität zu erstellen, die getestet werden kann. Die Funktionalität entspricht einer hochstufigen Anforderung oder ist mit dieser gleichzusetzen. Integrationstestfälle werden verwendet, um hochstufige Anforderungen zu überprüfen und zu validieren.
Bei diesem Test werden zuerst die Softwarekomponenten oder Module auf höchster Ebene getestet. Anschließend werden Module auf niedrigerer Ebene getestet oder funktionale Funktionen den Anforderungen auf höherer Ebene zugeordnet. Bei diesem Ansatz wird davon ausgegangen, dass wichtige Subsysteme vollständig genug sind, um als Ganzes getestet zu werden.
Das V-Modell eignet sich gut zur Veranschaulichung der Beziehung zwischen den Entwicklungsphasen und den Validierungsphasen. In jeder Testphase werden vollständigere Teile der Software anhand der Phase validiert, die sie definiert.
Für manche könnte das V-Modell eine Wasserfall-Entwicklungsmethode bedeuten. Dies ist jedoch nicht der Fall. DO-178C und frühere Versionen des Standards geben keine Entwicklungsmethodik an. Das V-Modell zeigt einen erforderlichen Satz von Entwicklungsphasen. Organisationen legen fest, wie diese Phasen angegangen werden. Teams können eine Wasserfall-, Agile-, Spiral- oder jede andere Entwicklungsmethodik übernehmen und den Standard einhalten.
Während das Ausführen von Tests und das Erfassen ihrer Ergebnisse als Softwarevalidierung gilt, wird es durch einen parallelen Verifizierungsprozess unterstützt, der die folgenden Aktivitäten umfasst, um sicherzustellen, dass die Teams den Prozess und das Produkt richtig erstellen.
Die Hauptaufgabe der Überprüfung besteht darin, sicherzustellen, dass die Erstellung der gelieferten Artefakte von der vorherigen Phase bis zur Spezifikation den Unternehmens- und Branchenrichtlinien entspricht.
Ein gewisses Maß an Testautomatisierung ist die Grundlage für kontinuierliches Testen. Viele Organisationen beginnen damit, einfach manuelle Integrations- und Systemtests (Top-down) oder Unittests (Bottom-up) zu automatisieren.
Um kontinuierliches Testen zu ermöglichen, müssen sich Unternehmen auf die Entwicklung einer skalierbaren Testautomatisierungspraxis konzentrieren, die auf isolierten und schneller auszuführenden Unit-Tests basiert. Sobald die Unit-Tests vollständig automatisiert sind, sind Integrationstests und schließlich Systemtests der nächste Schritt.
Kontinuierliches Testen nutzt Automatisierung und aus Tests gewonnene Daten, um eine objektive Bewertung der Risiken eines in der Entwicklung befindlichen Systems in Echtzeit zu ermöglichen. Einheitlich angewendet, ermöglicht es sowohl den kaufmännischen als auch den technischen Managern, bessere Kompromissentscheidungen zwischen Release-Umfang, -Zeit und -Qualität zu treffen.
Kontinuierliches Testen ist eine leistungsstarke Testmethode, die eine kontinuierliche Codequalität während des SDLC sicherstellt. Es erzwingt die Einhaltung der Vorschriften bei der statischen Codeanalyse und identifiziert während der Commit-Aktion jedes Entwicklers stets Sicherheitsmängel, indem auch Unit-, Integrations- und Systemtests in die Schleife integriert werden.
Das folgende Diagramm veranschaulicht, wie verschiedene Testphasen Teil eines kontinuierlichen Prozesses sind, der auf einer Feedbackschleife aus Testergebnissen und Analysen basiert.
Die Testautomatisierungstools von Parasoft unterstützen die Validierung (tatsächliche Durchführung von Testaktivitäten) im Hinblick auf Testautomatisierung und kontinuierliches Testen. Diese Tools unterstützen auch die Verifizierung dieser Aktivitäten, was bedeutet, dass sie den Prozess und die Standardanforderungen unterstützen. Wichtige Aspekte der sicherheitskritischen Softwareentwicklung sind die Rückverfolgbarkeit der Anforderungen und die Codeabdeckung.
DO-178C betrachtet die Rückverfolgbarkeit als eine Schlüsselaktivität und ein Artefakt des Entwicklungsprozesses. Die Abschnitte 5.4 Softwareentwicklungsprozess und 6.4 Softwaretests erfordern eine bidirektionale Rückverfolgbarkeit zwischen Anforderungen auf hoher und niedriger Ebene sowie die Implementierung, Überprüfung und Validierung von Assets, darunter:
Quellcode
Anforderungsdokumente
Testergebnisse
Bebauungspläne und mehr
Die Anforderungsanalyse erfordert: „Alle Softwareanforderungen sollten so identifiziert werden, dass die Rückverfolgbarkeit zwischen der Anforderung und dem Testen des Softwaresystems nachgewiesen werden kann.“ Die Bereitstellung einer Anforderungsverfolgbarkeitsmatrix trägt dazu bei, diese Anforderung zu erfüllen.
Anforderungen an sicherheitskritische Software sind der wichtigste Treiber für Produktdesign und -entwicklung. Diese Anforderungen umfassen funktionale Sicherheit, Anwendungsanforderungen und nicht funktionale Anforderungen, die das Produkt vollständig definieren. Dieses Vertrauen auf dokumentierte Anforderungen ist ein zweischneidiges Schwert, denn schlechte Anforderungen sind eine der Hauptursachen für Sicherheitsvorfälle in Software. Mit anderen Worten: Nicht die Implementierung war schuld, sondern schlechte oder fehlende Anforderungen.
Die Pflege von Rückverfolgbarkeitsdatensätzen in beliebigem Umfang erfordert Automatisierung. Tools zur Verwaltung des Anwendungslebenszyklus umfassen ausgereifte Funktionen zur Anforderungsverwaltung, die in der Regel als zentrale Anlaufstelle für die Rückverfolgbarkeit dienen.
Integrierte Softwaretesttools wie Parasoft vervollständigen die Überprüfung und Validierung von Anforderungen, indem sie eine automatisierte bidirektionale Rückverfolgbarkeit zum ausführbaren Testfall ermöglichen. Dies umfasst das Bestehens- oder Nichtbestehensergebnis und führt bis zum Quellcode zurück, der die Anforderung implementiert.
Parasoft lässt sich in marktführende Anforderungsmanagement-Tools oder ALM-Systeme integrieren, darunter:
Wie im Bild unten zu sehen, jede von Parasofts Testautomatisierungslösungen (C/C++test, C/C++test CT, Jtest, dotTEST, S0Atest und Selenic), die im Entwicklungslebenszyklus verwendet werden, unterstützen die Zuordnung von Tests zu in diesen Systemen definierten Arbeitselementen wie Anforderungen, Defekten und Testfällen oder Testläufen. Das zentrale Berichts- und Analyse-Dashboard Parasoft DTP verwaltet die Rückverfolgbarkeit.
Parasoft DTP korreliert die eindeutigen Kennungen des Verwaltungssystems mit:
Die Ergebnisse werden in den Rückverfolgbarkeitsberichten von Parasoft DTP angezeigt und an das Anforderungsmanagement zurückgesendet. Sie bieten vollständige bidirektionale Rückverfolgbarkeit und Berichterstattung als Teil der Rückverfolgbarkeitsmatrix des Systems.
Die Rückverfolgbarkeitsberichte in Parasoft DTP sind hochgradig anpassbar. Das folgende Bild zeigt eine Vorlage für eine Anforderungsrückverfolgbarkeitsmatrix für in Polarion erstellte Anforderungen und Spuren zu den Testfällen, den Ergebnissen der statischen Analyse, den Quellcodedateien und den manuellen Codeüberprüfungen.
Die bidirektionale Korrelation zwischen Testergebnissen und Arbeitselementen bildet die Grundlage für Rückverfolgbarkeit der Anforderungen. Parasoft DTP fügt Test- und Code-Coverage-Analysen hinzu, um die Vollständigkeit der Tests zu bewerten. Die Aufrechterhaltung dieser bidirektionalen Korrelation zwischen Anforderungen, Tests und den Artefakten, die sie implementieren, ist ein wesentlicher Bestandteil der Rückverfolgbarkeit.
Codeabdeckung drückt das Ausmaß aus, in dem der Quellcode der Anwendung allen Testverfahren unterzogen wird, einschließlich Unit-, Integrations- und Systemtests (sowohl automatisiert als auch manuell).
Durch das Sammeln von Abdeckungsdaten während des gesamten Lebenszyklus können genauere Qualitäts- und Abdeckungsmesswerte ermittelt und gleichzeitig nicht oder unzureichend getestete Teile der Anwendung offengelegt werden.
Wie die Rückverfolgbarkeit ist die Codeabdeckung eine wichtige Kennzahl bei der Entwicklung von Bordsystemen. DO-178C enthält in Abschnitt 6.4.4 Test Coverage Analysis spezifische Anforderungen. Diese Anforderungen gehen über die Codeabdeckung hinaus und umfassen die Testabdeckung aller High-Level- und Low-Level-Anforderungen sowie die Testabdeckung der gesamten Softwarestruktur.
Abschnitt 6.4.4.2 Strukturelle Codeanalyse erfordert die Testabdeckung des Quellcodes über das hinaus, was möglicherweise bereits durch anforderungsbasierte Tests abgedeckt ist. Dadurch wird sichergestellt, dass der gesamte Code vor der Zertifizierung durch Tests ausgeführt wird. Diese Codeabdeckungsanalyse kann Probleme wie fehlende Tests und toten oder deaktivierten Code aufdecken. Abschnitt 6.4.4.3 Strukturelle Abdeckungsanalyse Die Lösung erfordert die Behebung dieser während der Abdeckungsanalyse entdeckten Diskrepanzen.
Die Anwendungsabdeckung kann Unternehmen auch dabei helfen, ihre Testbemühungen zu konzentrieren, wenn sie aufgrund von Zeitbeschränkungen nicht alle manuellen Regressionstests durchführen können. Das Erfassen von Abdeckungsdaten zum laufenden System auf seiner Zielhardware während der Integrations- und Systemtests vervollständigt die Codeabdeckung aus den Unittests.
Erfasste Abdeckungsdaten werden im Rahmen des kontinuierlichen Integrationsprozesses (CI) sowie des Arbeitsablaufs des Testers genutzt. Parasoft DTP führt erweiterte Analysen der Codeabdeckung aller Tests, Quellcodeänderungen, statischen Analyseergebnisse und Testergebnisse durch. Die Ergebnisse helfen dabei, ungetesteten und unzureichend getesteten Code und andere Hochrisikobereiche in der Software zu identifizieren.
Das Analysieren von Code, Ausführen von Tests, Verfolgen der Abdeckung und Berichten der Daten in einem Dashboard oder Diagramm ist ein nützlicher erster Schritt zur Risikobewertung. Die Teams müssen jedoch dennoch viel Zeit und Ressourcen darauf verwenden, die Zeichen der Zeit zu interpretieren und zu hoffen, dass sie die Daten richtig interpretiert haben.
Um die potenziellen Risiken der Anwendung zu verstehen, sind erweiterte Analyseprozesse erforderlich, die die Daten zusammenführen und korrelieren. Dies bietet einen besseren Einblick in die tatsächliche Codeabdeckung und hilft bei der Identifizierung von Testlücken und sich überschneidenden Tests. Wie hoch ist beispielsweise die tatsächliche Abdeckung für die getestete Anwendung, wenn Ihre Tools unterschiedliche Abdeckungswerte für Komponententests, automatisierte Funktionstests und manuelle Tests melden?
Die Prozentsätze können nicht einfach addiert werden, da sich die Tests überschneiden. Dies ist ein entscheidender Schritt, um das mit der zu entwickelnden Anwendung verbundene Risikoniveau zu verstehen.
Testauswirkungsanalyse verwendet während Testläufen und Codeänderungen zwischen Builds gesammelte Daten, um zu bestimmen, welche Dateien geändert wurden und welche spezifischen Tests diese Dateien berührt haben. Die Analyse-Engine von Parasoft kann das Delta zwischen zwei Builds analysieren und die Teilmenge der Regressionstests identifizieren, die ausgeführt werden müssen. Sie versteht auch die Abhängigkeiten von den geänderten Einheiten, um die Welleneffekte zu bestimmen, die die Änderungen auf andere Einheiten hatten.
Parasoft Jtest und dotTEST bieten Einblick in die Auswirkungen von Softwareänderungen und empfehlen, wo Tests hinzugefügt werden sollten und wo weitere Regressionstests erforderlich sind.
Die Software-Testautomatisierungstools von Parasoft beschleunigen die Verifizierung, indem sie die vielen mühsamen Aspekte der Aufzeichnung, Dokumentation, Berichterstattung, Analyse und Berichterstattung automatisieren.