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

Regressionstests

Im Rahmen der meisten Softwareentwicklungsprozesse werden nach Änderungen an der Software Regressionstests durchgeführt. Diese Tests ermitteln, ob die neuen Änderungen Auswirkungen auf den bestehenden Betrieb der Software hatten.

DO-178C erwähnt Regressionstests nicht ausdrücklich, aber sie sind eine bewährte technische Praxis und werden in der Luft- und Raumfahrtindustrie häufig eingesetzt, um die Stabilität und Korrektheit der Software während ihres gesamten Entwicklungslebenszyklus zu überprüfen. Anforderungen rund um den Software- und Hardwareintegrationsprozess implizieren die Notwendigkeit, nach allen Änderungen eine aktuelle Überprüfung und Validierung aufrechtzuerhalten.

Symbol in einem blauen Kreis, das den weißen Umriss einer Richtlinien-Checkliste zeigt.

Anforderungsbasiertes Testen der Hardware-/Software-Integration, Abschnitt 6.4.3

Integrationstests sind eine Teststufe in DO-178C, die die Interaktionen zwischen verschiedenen Softwareeinheiten überprüft. Wenn Änderungen an Softwarekomponenten oder -einheiten vorgenommen werden, sind Regressionstests erforderlich, um sicherzustellen, dass sich die Änderungen nicht negativ auf das integrierte System ausgewirkt haben.

Symbol in einem blauen Kreis, das den weißen Umriss einer Richtlinien-Checkliste zeigt.

Integrationsprozess, Abschnitt 5.4

Konzentriert sich auf die Integration von Softwarekomponenten und betont, dass der Integrationsprozess geplant und kontrolliert werden sollte. Die Integration neuer oder geänderter Softwareeinheiten erfordert Regressionstests, um sicherzustellen, dass das Gesamtverhalten des Systems korrekt bleibt und keine unbeabsichtigten Nebeneffekte auftreten.

Symbol in einem blauen Kreis, das den weißen Umriss einer Richtlinien-Checkliste zeigt.

Ergebnisse der Softwareüberprüfung, Abschnitt 11.14

Umfasst die Dokumentation und Aufzeichnung von Verifizierungsergebnissen, einschließlich der Ergebnisse von Testaktivitäten. Wenn Regressionstests durchgeführt werden, sollten die Ergebnisse dokumentiert werden, um nachzuweisen, dass die Änderungen keine negativen Auswirkungen auf das System hatten.

Regressionstests sind notwendig, zeigen jedoch nur an, dass aktuelle Codeänderungen nicht zu fehlgeschlagenen Tests geführt haben. Es gibt keine Garantie dafür, dass diese Änderungen funktionieren. Darüber hinaus kann die Art der Änderungen, die Regressionstests erforderlich machen, über die aktuelle Anwendung hinausgehen und Änderungen an Hardware, Betriebssystem und Betriebsumgebung umfassen.

Software-Regressionstests in luftgestützten Systemen

Bei der Entwicklung sicherheitskritischer Software ist die Validierung entscheidend, um die korrekte Funktionalität und Sicherheit nachzuweisen. Tests sind aus zwei Hauptgründen erforderlich.

  1. Bestätigen Sie sämtliche Änderungen an der Anwendung, um die Funktionalität sicherzustellen.
  2. Stellen Sie sicher, dass es keine unvorhergesehenen Auswirkungen auf das restliche System gibt.

Wenn ein Testfall zuvor erfolgreich war, nun aber fehlschlägt, wurde eine mögliche Regression festgestellt. Der Fehler könnte durch eine neue Funktionalität verursacht werden, bei der der Testfall möglicherweise aktualisiert werden muss, damit er Änderungen an Eingabe- und Ausgabewerten berücksichtigt.

Regressionstests eingebetteter Systeme umfassen auch die Ausführung der folgenden Arten von Testfällen:

  • Einheit
  • Integration
  • System
  • Kennzahlen
  • Stress und mehr

Tatsächlich müssen alle zuvor erstellten Testfälle ausgeführt werden, um sicherzustellen, dass keine Regressionen auftreten und eine neue, zuverlässige Softwareversion erstellt wird. Dies ist von entscheidender Bedeutung, da jede neue Version eines Softwaresystems oder -subsystems darauf aufbaut. Wenn Sie keine solide Grundlage haben, kann das Ganze zusammenbrechen.

Der Parasoft C/C++-Test unterstützt die Erstellung von Regressionstest-Baselines als organisierte Testsammlung und überprüft automatisch alle Ergebnisse. Diese Tests werden regelmäßig automatisch ausgeführt, um zu überprüfen, ob Codeänderungen die in den Regressionstests erfasste Funktionalität ändern oder beeinträchtigen. Wenn Änderungen eingeführt werden, werden diese Testfälle das Team nicht auf das Problem aufmerksam machen. Bei nachfolgenden Tests meldet der C/C++-Test Aufgaben, wenn er Änderungen am im ersten Test erfassten Verhalten erkennt.

So entscheiden Sie, was Sie einem Regressionstest unterziehen möchten

Die größte Herausforderung bei Regressionstests besteht darin, zu bestimmen, welche Teile einer Anwendung getestet werden sollen. Es ist üblich, standardmäßig alle Regressionstests auszuführen, wenn Zweifel darüber bestehen, welche Auswirkungen die letzten Codeänderungen hatten – der Alles-oder-Nichts-Ansatz.

Das Foto zeigt die Vorderansicht eines kleinen Verkehrsflugzeugs auf einer Landebahn im Morgengrauen. Davor steht ein Einweiser und weist dem Flugzeug die Parkposition.

Bei großen Softwareprojekten wird dies zu einem riesigen Unterfangen und mindert die Produktivität des Teams. Diese Unfähigkeit, Tests zu fokussieren, behindert viele der Vorteile iterativer und kontinuierlicher Prozesse, was bei eingebetteter Software, bei der Testziele eine begrenzte Ressource sind, möglicherweise noch verstärkt wird.

Hier sind einige Aufgaben erforderlich.

  • Identifizieren Sie, welche Tests erneut ausgeführt werden müssen.
  • Konzentrieren Sie Ihre Testbemühungen (Unit-Tests, automatisierte Funktionstests und manuelle Tests) auf die Validierung der Funktionen und des zugehörigen Codes, die von den aktuellsten Änderungen betroffen sind.

Entwickler und Tester können sich mithilfe der Process Intelligence Engine (PIE) in Parasoft DTP (Development Testing Platform) in Kombination mit den proprietären Coverage-Analyse-Engines von Parasoft ein klares Bild von den Änderungen in der Codebasis zwischen den Builds machen:

Mit dieser Kombination können Teams ihre Effizienz steigern und das Versprechen von Agile erfüllen. Diese Form der intelligenten Testausführung wird als Testauswirkungsanalyse bezeichnet. Sie wird manchmal auch als änderungsbasiertes Testen bezeichnet.

Verstehen Sie die Auswirkungen von Codeänderungen auf das Testen mit der Testauswirkungsanalyse

Testauswirkungsanalyse verwendet während Testläufen gesammelte Daten und Codeänderungen zwischen Builds, um festzustellen, welche Dateien geändert wurden und welche spezifischen Tests diese Dateien berührt haben. Die Analyse-Engine von Parasoft kann:

  • Analysieren Sie das Delta zwischen zwei Builds.
  • Identifizieren Sie die Teilmenge der Regressionstests, die ausgeführt werden müssen.
  • Machen Sie sich mit den Abhängigkeiten von den geänderten Einheiten vertraut, um zu ermitteln, welche Auswirkungen die Änderungen auf andere Einheiten hatten.

Parasoft Jtest und dotTEST bieten Einblick in die Auswirkungen von Softwareänderungen. Jede Lösung empfiehlt, wo Tests hinzugefügt werden sollten und wo weitere Regressionstests erforderlich sind.

Screenshot von Parasoft DTP Change Based Testing – Dateibericht mit einer Liste der Codebereiche, die getestet werden und die nicht getestet werden.
Ein Beispiel für einen änderungsbasierten Testbericht von Parasoft DTP, der die getesteten und die nicht getesteten Codebereiche zeigt.
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.