Events

Transparenz für automatisierte und manuelle Tests - ein Erfahrungsbericht aus zwei Jahren Test-Gap-Analyse bei TRUMPF

Written by Dr. Andreas Göb | Oct 29, 2022 9:38:23 am
Zusammenfassung

Im Test möchten wir Fehler finden, bevor diese in Produktion gelangen. Trotzdem gelingt das nicht immer zu 100 Prozent. Studien zeigen, dass das Risiko für Fehler in den Bereichen eines Softwaresystems besonders hoch ist, die seit dem letzten Release geändert, aber nicht im Test ausgeführt wurden. Die Test-Gap-Analyse kombiniert statische und dynamische Verfahren, um bereits während der Entwicklung genau diese Bereiche zu identifizieren und so frühzeitig und kontinuierlich Feedback an Entwickler und Tester zu liefern. TRUMPF setzt die Test-Gap-Analyse bereits im Sommer 2017 im Bereich der .NET-Entwicklung ein, sowohl für automatisierte als auch für manuelle Tests, später wurde sie auch für C++ eingeführt.

In diesem Vortrag gibt Dr. Andreas Göb (CQSE GmbH) einen allgemeinen Überblick über die Test-Gap-Analyse und zeigt verschiedene Einsatzszenarien auf, die das von der CQSE entwickelte Werkzeug Teamscale unterstützt. Dr. Stefan Staudt (TRUMPF Werkzeugmaschinen GmbH + Co. KG) gibt einen Einblick in die Hintergründe zur Einführung der Test-Gap-Analyse bei TRUMPF und berichtet von Erfahrungen bei deren Einsatz. Diese beziehen sich nicht nur auf die Analyse und das Werkzeug, sondern umfassen insbesondere auch Herausforderungen und Lösungsansätze bei der Instrumentierung von C++-Anwendungen, um die Testausführung zu messen.

Nach positiven Erfahrungen mit der Test-Gap-Analyse im .NET-Umfeld sollte auch für ein bei TRUMPF entwickeltes CAD/CAM-System (Sprache C++, ca. 4,2 MLOC) eingesetzt werden. Da es sich um ein bereits Jahrzehnte existierendes System handelt (positiv ausgedrückt: historisch gewachsen und betriebsbewährt; ehrlich gesagt: an vielen Stellen erodiert), wurde als Ziel ausgegeben, für neuen / geänderten Code festzustellen, inwieweit er durch automatisierte Tests durchlaufen wird. Hierfür bietet Teamscale mit der Test-Gap-Analyse eine große Hilfestellung, da es die Möglichkeit bietet Abdeckung einzelner Tests festzustellen sowie Differenzanalysen unterstützt, um damit die Testabdeckung von neuem und geändertem Code zu bestimmen. Dieser Projektteil ist also ziemlich schnell zu erledigen (was sich auch bewahrheitete).

Als größere Herausforderung erwies sich das Gewinnen der Coverage-Informationen an sich: Hierfür wurden unter anderem die Microsoft-Profilerstellungstools wie VSINSTR, die Dynamic Coverage Tools (CodeCoverage.exe) von Microsoft, OpenCppCoverage sowie BullseyeCoverage evaluiert. Es zeigte sich ein überraschendes Spektrum von Problemen, angefangen von Abstürzen in Visual Studio, über falsche Daten bis hin zu Performance-Einbußen um einen Faktor 10. Nur eines der genannten Werkzeuge war überhaupt für das gegebene System praxistauglich einsetzbar, so dass dieses aktuell verwendet wird, um Daten für die Test-Gap-Analyse bereitzustellen.

Als nächste Schritte sollen der Ablauf automatisiert werden und in den täglichen Softwareerstellungsprozess eingebunden werden, um eine zeitnahe Auswertung über neue und geänderte Methoden zu erhalten, die nicht bei einem Test durchlaufen wurden.

Folien