Logo für GIGAOM 365x70

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

DO-178C-Softwarekonformität für die Luft- und Raumfahrt sowie Verteidigung

Softwareintegrationstests

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.

  • Falsche Interrupt-Behandlung
  • Nichterfüllung der Anforderungen an die Ausführungszeit
  • Falsche Softwarereaktion auf Hardware-Transienten oder Hardwarefehler, z. B. Startsequenzierung, vorübergehende Eingangslasten und Eingangsleistungstransienten
  • Datenbus und andere Ressourcenkonflikte, z. B. Speicherzuordnung
  • Unfähigkeit des integrierten Tests, Fehler zu erkennen
  • Fehler in Hardware-/Software-Schnittstellen
  • Fehlerhaftes Verhalten von Regelkreisen
  • Falsche Steuerung der Speicherverwaltungshardware oder anderer Hardwaregeräte unter Softwaresteuerung
  • Stapelüberlauf
  • Fehlerhafte Funktionsweise der Mechanismen zur Bestätigung der Richtigkeit und Kompatibilität der vor Ort ladbaren Software
  • Verstöße gegen die Softwarepartitionierung
  • Falsche Initialisierung von Variablen und Konstanten
  • Fehler bei der Parameterübergabe
  • Datenbeschädigung, insbesondere globaler Daten
  • Unzureichende numerische Auflösung von Ende zu Ende
  • Falsche Reihenfolge der Ereignisse und Vorgänge

Bottom-Up-Integration

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.

Top-Down-Integration

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.

Diagramm, das den V-Modell-Entwicklungsprozess und die Beziehung zwischen den einzelnen Phasen sowie die in jeder Testphase abgeleitete Verifizierung und Validierung zeigt.
Der V-Modell-Entwicklungsprozess zeigt die Beziehung zwischen den einzelnen Phasen und die in jeder Testphase abgeleitete Verifizierung und Validierung.

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.

  • Rezensionen
  • Walkthroughs
  • Code-Analyse
  • Rückverfolgbarkeit
  • Test
  • Codeabdeckung und mehr

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.

Integrations- und Systemtests als Teil eines kontinuierlichen Testprozesses

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.

Ein Diagramm, das den kontinuierlichen Testzyklus zeigt
Ein kontinuierlicher Testzyklus

Analyse und Berichterstattung zur Unterstützung von Integrations- und Systemtests

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:

Symbol in einem blauen Kreis mit weißen öffnenden und schließenden Klammern und einem Schrägstrich dazwischen zur Darstellung des Codes.

Quellcode

Symbol einer Zwischenablage mit einem Häkchen in der Mitte

Anforderungsdokumente

Symbol in einem blauen Kreis mit vier vertikalen weißen Linien unterschiedlicher Höhe, die ein Diagramm darstellen.

Testergebnisse

Symbol einer Glühbirne

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.

Foto einer MQ-9B SeaGuardian, die über den Wolken fliegt.

Zweiseitige Rückverfolgbarkeit

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.


Automatisierung der bidirektionalen Rückverfolgbarkeit

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.

Screenshot von Parasoft DTP, der das DO-178C-Berichts-Dashboard mit dem Projektteststatus zeigt.
Ein Beispiel für ein DO-178C-Berichts-Dashboard, das den Teststatus und den Fortschritt des Projekts bis zur Fertigstellung erfasst.

Parasoft DTP korreliert die eindeutigen Kennungen des Verwaltungssystems mit:

  • Ergebnisse der statischen Analyse
  • Codeabdeckung
  • Ergebnisse aus Unit-, Integrations- und Funktionstests

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.

Screenshot von Parasoft DTP mit der Codebeamer-Rückverfolgbarkeitsmatrix. Sie listet die Systemanforderungen von der höchsten bis zur niedrigsten Ebene zusammen mit Testfällen und Testergebnissen auf.
Codebeamer-Rückverfolgbarkeitsmatrix, die die Systemanforderungen von der oberen bis zur unteren Ebene zusammen mit Testfällen und Testergebnissen auflistet.

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.

Screenshot von Parasoft DTP, der die Polarian Requirements Traceability-Matrix zeigt.
Vorlage für die Anforderungsrückverfolgbarkeitsmatrix von Parasoft DTP, integriert mit Siemens Polarion.

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.

Code-Abdeckung

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.

Vorteile der aggregierten Codeabdeckung

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.

Screenshot von Parasoft DTP, der das Application Coverage-Dashboard mit aggregierter Codeabdeckung aus verschiedenen Testmethoden zeigt.
Aggregierte Codeabdeckung aus verschiedenen Testmethoden

Verstehen der Auswirkungen von Codeänderungen auf Tests mit der Testauswirkungsanalyse

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.

Beschleunigen Sie Integrations- und Systemtests mit Testautomatisierungstools

Die Software-Testautomatisierungstools von Parasoft beschleunigen die Verifizierung, indem sie die vielen mühsamen Aspekte der Aufzeichnung, Dokumentation, Berichterstattung, Analyse und Berichterstattung automatisieren.

Blauer Kreis mit einem weißen Symbol aus zwei übereinanderliegenden Pfeilen in der Mitte. Der obere zeigt nach links, der untere nach rechts.

Rückverfolgbarkeit in beide Richtungen

Die bidirektionale Rückverfolgbarkeit aller Artefakte stellt sicher, dass die Anforderungen über Code und Tests verfügen, die ihre Erfüllung nachweisen. Metriken, Testergebnisse und Ergebnisse statischer Analysen werden auf Komponenten zurückgeführt und umgekehrt.

Symbol in einem blauen Kreis, das einen weißen, nach unten zeigenden Pfeil zeigt.

Code- und Testabdeckung

Durch die Code- und Test-Abdeckung wird überprüft, ob alle Anforderungen implementiert sind, und sichergestellt, dass die Implementierung wie erforderlich getestet wird.

Blauer Kreis mit einem weißen Symbol einer Zielmarkierung in der Mitte.

Ziel- und hostbasierte Testausführung

Die ziel- und hostbasierte Testausführung unterstützt je nach Bedarf unterschiedliche Validierungstechniken.

Symbol in einem blauen Kreis, das eine weiße Uhr auf 4:00 Uhr zeigt

Smarte Testdurchführung

Durch die intelligente Testausführung werden Änderungen verwaltet, wobei der Schwerpunkt auf Tests nur für geänderten Code und alle davon betroffenen abhängigen Elemente liegt.

Blauer Kreis mit einem weißen Symbol in der Mitte von vier vertikalen, ungleichmäßigen Linien, die den Datenfluss darstellen.

Berichterstellung und Analyse

Berichte und Analysen liefern Einblicke für wichtige Entscheidungen und ermöglichen die Verfolgung des Fortschritts. Die Entscheidungsfindung muss auf Daten basieren, die aus den automatisierten Prozessen gesammelt werden.

Blauer Kreis mit einem weißen Symbol aus drei im Uhrzeigersinn zeigenden Pfeilen in einem Kreis, der „kontinuierlich“ darstellt.

Automatisierte Dokumentationserstellung

Die automatisierte Dokumentationserstellung aus Analyse- und Testergebnissen unterstützt die Einhaltung von Prozessen und Standards.

Symbol in einem blauen Kreis, das ein weiß umrandetes Sicherheitsschild mit einem Häkchen in der Mitte zeigt.

Automatisierung der Einhaltung von Standards

Die Automatisierung der Einhaltung von Standards reduziert den Aufwand und die Komplexität, indem die repetitivsten und langwierigsten Prozesse automatisiert werden. Die Tools können den Projektverlauf und die zugehörigen Ergebnisse anhand von Anforderungen, Softwarekomponenten, Tests und aufgezeichneten Abweichungen verfolgen.

Dunkelblaues Banner mit dem Bild eines Mannes, der in einem Serverraum mit einer Frau spricht, die ein Tablet in der Hand hält.
Bild eines Mannes und einer Frau mit einem Tablet in der Hand, die in einem Serverraum diskutieren.

Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.