Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Entdecken Sie die Kapitel
Im Rahmen der meisten Softwareentwicklungsprozesse in C und C++ werden Regressionstests durchgeführt, nachdem Änderungen an der Software vorgenommen wurden. Diese Tests ermitteln, ob die neuen Änderungen die bestehende Funktionsweise 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.
Bei der Entwicklung sicherheitskritischer Software in C und C++ ist die Validierung unerlässlich, um korrekte Funktionalität, Sicherheit und Schutz zu gewährleisten. Tests sind notwendig, um jegliche Änderungen an der Anwendung zu bestätigen, die Funktionalität sicherzustellen und unvorhergesehene Auswirkungen auf das übrige System auszuschließen.
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 umfassen auch die Ausführung von:
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 verändern oder beeinträchtigen.
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.
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.
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:
Für Java
Für C# und VB.NET
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.
Die Testauswirkungsanalyse nutzt Daten, die während Testläufen erfasst wurden, sowie Codeänderungen zwischen Builds, um zu ermitteln, welche Dateien geändert wurden und welche Tests diese Dateien betroffen haben. Die Analyse-Engine von Parasoft kann die Unterschiede zwischen zwei Builds analysieren und die auszuführenden Regressionstests identifizieren. Sie berücksichtigt außerdem die Abhängigkeiten der geänderten Einheiten, um die Auswirkungen der Änderungen auf andere Einheiten zu bestimmen.
Die Softwaretestlösungen Jtest für Java und dotTEST für C# und VB.NET von Parasoft bieten Einblicke in die Auswirkungen von Softwareänderungen. Jede Lösung gibt Empfehlungen, wo zusätzliche Tests und weitere Regressionstests erforderlich sind. Ein Beispiel für einen änderungsbasierten Testbericht finden Sie unten.
Ein Beispiel für einen Change Based Testing-Bericht von Parasoft DTP zeigt getestete und nicht getestete Bereiche des Codes.
Entdecken Sie die Kapitel