19 August 2020










Machen Unit-Tests ohne Messung der Code Coverage Sinn?
Die Code Coverage zeigt Ihnen, welche Teile Ihrer Software getestet worden sind. Wenn Sie Unit-Tests machen, ohne die Code Coverage zu messen, fehlt Ihnen der Überblick über das, was Sie getestet haben und was noch fehlt. Es ist wahrscheinlich, dass Sie einige Codeteile mehrfach testen – und damit Zeit und Geld verschwenden – und andere Teile Ihrer Software vernachlässigt werden, in denen möglicherweise schwere (und teure) Fehler stecken. Treten später beim Kunden Fehler auf, haben Sie keinen Überblick darüber, wo sie diese suchen sollen. Denn sie wissen ohne Code Coverage nicht, was bereits gemacht wurden. Unit-Testing ohne Coverage ist wie Fischen im Trüben oder Umherirren im Nebel ...Für die sicherheitskritische Software in Bereichen wie Luftfahrt, Automobil oder Medizin ist die Messung und der Nachweis der Code Coverage daher zwingend vorgeschrieben.
Aber auch im Softwaretest ohne Bindung an irgendwelche Normen ist es sinnvoll, die Code-Coverage zu messen. Es kann hierdurch deutliche Erhöhung der Testqualität erreicht werden. Die Code Coverage alleine garantiert zwar noch keine guten Tests, es ist aber klar, dass ohne ausreichende Coverage eine Software mit Sicherheit unzureichend bzw. "auf Zufallsbasis" getestet ist und Ihre Software wie eine Banane quasi erst beim Kunden reift ...
"Einige denken, gute Requirements und Tests zu haben, stellen aber bei der Coverage Analyse fest, dass diese großartigen Tests nur einen geringen Anteile des Codes abdecken. Offensichtlich hatten sie schwache Requirements oder aber schwache Tests von Requirements oder viel warscheinlicher: BEIDES.
Code Coverage ist ein Aha-Erlebnis. Offen gesagt, auch nicht sicherheitskritische Bereiche sollten eine strukturierte Coverage durchführen. Nicht um 100% zu erlangen, keineswegs: sondern eher um sicherzugehen, dass sie zumindest 75% abdecken um damit zu bekräftigen, dass sie gute Requirements und Tests dieser Requirements machen." (Vance Hilderman, Technischer Leiter, AFuzion Inc. / Autor der Bücher "Avionics Certification" und "The Avionics Development Ecosystem").
Für einen Tester ist es übrigens sehr motivierend, über die Code Coverage den Fortschritt seiner Arbeit zu sehen.
Durch Code Coverage können – wie bereits erwähnt – redundante Testfälle vermieden werden. Bei Änderungen der Software müssen die Testfälle angepasst werden. Bei zu vielen Testfällen – die man gar nicht gemacht hätte, hätte man die Code Coverage gemessen – ist dann ein hoher Zeitaufwand erforderlich. Das sind nicht nur hohe Kosten, sondern es kommt oft unerwartet im Projekt und führt dann dazu, dass die Unit-Tests abgeschaltet statt angepasst werden. Als Sofortmaßnahme gedacht führt dieses "Provisorium" am Ende zu einer dauerhaft geringeren Testabdeckung und schlechter Software-Qualität.
zurück zu FAQ
-
Ihre Vorteile mit Testwell CTC++
- Unterstützung von allen Compilern und Cross-Compilern
- Coverage auf allen embedded Targets und Microcontrollern
- Analyse von allen Testabdeckungsstufen bis zur MC/DC- und MCC-Coverage
- Einsetzbar für sicherheitskritische Entwicklungen (Safety)
- Tool-Qualification-Kit verfügbar
- Unterstützung von Penetrationtests (Security)
- Unterstützung von C, C++, Java und C#
- Coverage auf dem Kernel
- Integration in eine Vielzahl von Werkzeugketten und Testumgebungen
- Integration in viele Entwicklungsumgebungen
- unterstützt zahlreiche Betriebssysteme
- arbeitet mit allen Unit Testing Tools
- klare und aussagekräftige Reports
- sehr einfach zu nutzen
- Live-Präsentationen, Schulungen und Online-Präsentationen
- Tausende Lizenzen erfolgreich in sicherheitskritischen Projekten im Einsatz
- Positives Kundenfeedback
- kostenlose Evaluationslizenzen
Häufig gestellte Fragen / Frequently Asked Questions