Empfohlenes Webinar: KI-gestütztes API-Testing: Ein No-Code-Ansatz zum Testen | Zum Video
Regressionstests
Als Teil der meisten C- und C++-Softwareentwicklung Prozesse, Regressionstests werden durchgeführt, nachdem Änderungen an der Software vorgenommen wurden. Diese Tests bestimmen, ob die neuen Änderungen den bestehenden Betrieb der Software beeinträchtigen.
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.
Regressionstests in sicherheitskritischer Software
In sicherheitskritische C- und C++-Softwareentwicklung, Validierung ist entscheidend, um korrekte Funktionalität, Sicherheit und Schutz nachzuweisen. Tests sind erforderlich, um alle Änderungen an der Anwendung zu bestätigen, die Funktionalität sicherzustellen und sicherzustellen, dass es keine unvorhergesehenen Auswirkungen auf den Rest des Systems gibt.
Wenn ein zuvor erfolgreicher Testfall nun fehlschlägt, wurde eine mögliche Regression identifiziert. Neue Funktionen könnten die Ursache des Fehlers sein. Wenn dies der Fall ist, muss der Testfall möglicherweise unter Berücksichtigung dieser Änderungen bei den Eingabe- und Ausgabewerten aktualisiert werden.
Regressionstests von eingebetteten Systemen umfasst außerdem die Ausführung von:
- Integrationstestfälle
- Systemtestfälle
- Leistungstestfälle
- Stresstestfälle und mehr
Alle zuvor erstellten Testfälle müssen möglicherweise ausgeführt werden, um sicherzustellen, dass keine Regressionen vorliegen und eine neue, zuverlässige Softwareversion erstellt wird. Dies ist von entscheidender Bedeutung, da auf jeder neuen Version eines Softwaresystems oder -subsystems aufgebaut oder diese weiterentwickelt wird. Wenn Sie keine solide Grundlage haben, kann das Ganze zusammenbrechen.
Parasoft DTP 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 beschädigen.
Wenn Änderungen vorgenommen werden, werden diese Testfälle das Team nicht auf das Problem aufmerksam machen. Bei nachfolgenden Tests meldet DTP Aufgaben, wenn es Änderungen am im ersten Test erfassten Verhalten erkennt.
Wie entscheide ich mich für einen Regressionstest?
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.
Bei großen C- und C++-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.
Verstehen Sie die Auswirkungen von Codeänderungen auf das Testen mit der Testauswirkungsanalyse
Entwickler und Tester können mithilfe der Process Intelligence Engine (PIE) in Parasoft DTP in Kombination mit unseren proprietären Abdeckungsanalyse-Engines ein klares Verständnis der Änderungen in der Codebasis zwischen Builds erhalten:
Mit diesen Kombinationen können Teams ihre Effizienz steigern und das Versprechen von Agile erfüllen.
Diese Form der intelligenten Testausführung wird als Testauswirkungsanalyse bezeichnet. Manchmal wird sie auch als änderungsbasiertes Testen bezeichnet.
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 haben.
Parasofts Jtest für Java-Tests und dotTEST für C# und VB.NET-Softwaretestlösungen bieten Einblick in die Auswirkungen von Softwareänderungen. Jede Lösung empfiehlt, wo Tests hinzugefügt werden sollten und wo weitere Regressionstests erforderlich sind. Siehe unten das Beispiel eines änderungsbasierten Testberichts.
Verbessern Sie Ihre Softwaretests mit Parasoft-Lösungen.
Entdecken Sie die Kapitel
- Einführung "
- 1. Übersicht »
- 2. Statische Analyse »
- 3. MISRA »
- 4. AUTOSAR C++ 14 »
- 5. SEI/CERT »
- 6. CWE »
- 7. Unit-Tests »
- 8. Regressionstests »
- 9. Software-Integrationstests »
- 10. Testen von Softwaresystemen »
- 11. Strukturelle Codeabdeckung »
- 12. Anforderungsrückverfolgbarkeitsmatrix »
- 13. Werkzeugqualifizierung »
- 14. Berichterstattung und Analyse »