www.wikidata.de-de.nina.az
Als Testabdeckung bezeichnet man das Verhaltnis an tatsachlich getroffenen Aussagen eines Tests gegenuber den theoretisch moglich treffbaren Aussagen bzw der Menge der gewunschten treffbaren Aussagen Die Testabdeckung spielt als Metrik zur Qualitatssicherung und zur Steigerung der Qualitat insbesondere im Maschinenbau und der Softwaretechnik eine grosse Rolle In der Praxis wird die Testabdeckung durch verschiedene Kriterien beeinflusst Die Testabdeckung lasst sich durch eine Erhohung der Zahl an Messungen Stichproben und Testfallen verbessern Begrenzt wird die Testabdeckung in der Praxis jedoch durch die Kosten die mit jedem Test verbunden sind Inhaltsverzeichnis 1 Testabdeckung im Maschinenbau 2 Testabdeckung in der Softwaretechnik 2 1 Normen 2 2 Tools zur Messung der Codeabdeckung 2 3 Tools fur Mutationstests 3 Weblinks 4 Siehe auchTestabdeckung im Maschinenbau BearbeitenJe nach Art Aufwand und Nutzen der Tests werden einige Tests stichprobenartig andere Tests vollstandig durchgefuhrt Ein einfach und automatisch durchzufuhrender Test wird mit jedem Produkt durchgefuhrt da seine Kosten die Produktionskosten nur geringfugig erhohen Ein Crashtest mit einem Fahrzeug wird jedoch naturlich nur mit Stichproben durchgefuhrt da das getestete Produkt anschliessend unbrauchbar wird Fur 1000 produzierte Fahrzeuge konnte dies z B bedeuten dass besonders aufwendige Tests und Crashtests nur mit einem einzigen Fahrzeug durchgefuhrt werden wahrend weniger aufwendige Tests mit einer grosseren Zahl oder gar allen Fahrzeugen durchgefuhrt werden Notwendige aber aufwendige Tests werden in ihrer Haufigkeit und damit der Testabdeckung variiert Liefert ein Test uberwiegend oder ausschliesslich positive Ergebnisse wird seine Zahl verringert Liefert ein Test negative Ergebnisse wird er haufiger eingesetzt bis die Veranderungen an der Produktion zu einer deutlichen Steigerung positiver Ergebnisse und damit wieder einer hoheren Produktqualitat gefuhrt hat Die Kosten Nutzen Rechnung solcher Tests wird mit Hilfe der Stochastik durchgefuhrt Wird z B nur mit 5 von 1000 Fahrzeugen ein Test durchgefuhrt ob die elektrischen Fensterheber einwandfrei funktionieren lasst sich mit Hilfe der Stochastik die statistische Relevanz und die Wahrscheinlichkeit einer Fehleinschatzung aufgrund des Testergebnisses berechnen Testabdeckung in der Softwaretechnik BearbeitenFur die Testabdeckung in der Softwaretechnik engl Test Coverage bzw Code Coverage spielt die Stochastik praktisch keine Rolle da es sich bei Computerprogrammen nicht um seriengefertigte Einzelprodukte handelt bei denen Tests mit Stichproben durchgefuhrt werden Stattdessen werden Tests anhand der Spezifikation Eigenschaften der Schnittstelle oder der inneren Struktur einer zu testenden Software Einheit definiert In der Softwaretechnik wird die Testabdeckung fur unterschiedliche Bereiche der Software ermittelt Zu diesen gehort die Abdeckung des Codes der Daten oder der Fachlichkeit Um eine moglichst hohe Testabdeckung zu erreichen mussen je nach abzudeckendem Bereich unterschiedliche Testfalle geschrieben werden Nicht fur alle kontrollflussorientierten Testverfahren ist beim Softwaretest die Angabe eines Masses fur die Testabdeckung moglich da die Bestimmung der Anzahl der moglichen Testfalle fur reale Probleme oft nicht moglich ist Eine vollstandige Testabdeckung der Fachlichkeit stellt eine Ausnahme dar weil die Anzahl moglicher Testfalle sehr schnell ungeheuer gross wird durch kombinatorische Explosion Ein vollstandiger Funktionstest fur eine einfache Funktion die zwei 16 Bit Werte als Argument erhalt wurde schon 2 16 16 displaystyle 2 16 16 nbsp also ca 4 Milliarden Testfalle bedeuten um die Spezifikation vollstandig zu testen Stattdessen beschrankt man sich auf eine Auswahl sinnvoll erscheinender Tests fur Grenzfalle Beispiel Eine Wurzelfunktion fur rationale Zahlen konnte z B mit samtlichen Elementen der Menge m a x 1 e 0 0 e 1 m a x displaystyle left mathit max 1 varepsilon 0 0 varepsilon 1 mathit max right nbsp getestet werden Als sinnvolle Auswahl von Testfallen fur eine angemessene Testabdeckung gelten in der Regel verschiedenartige gultige Argumente fur Komponenten mit Robustheitsanforderung zusatzlich Grenzelemente gerade noch gultige Argumente und gerade ungultige Argumente Es hat sich zudem als erfolgreich erwiesen im Fehlerfall das den Fehler auslosende Argument in die Menge der Testelemente aufzunehmen Eine weitgehend vollstandige Testabdeckung des Codes hingegen ist haufig das Ziel fur Modultests bzw Komponententests Durch hochgradige Testabdeckung fur kleine Funktionseinheiten ergibt sich die Anzahl der insgesamt erforderlichen Testfalle lediglich aus der Addition dieser Testfalle und nicht aus der Kombinatorik der grosseren Funktionalitat Doch auch hier kann dieses Ziel wegen verbleibender Restrisiken unerwartete Fernwirkung von Fehlern und auch aus Kosten Nutzen Grunden in den meisten Fallen nicht zu 100 erreicht werden Da eine hohe Codeabdeckung auch mit Tests erreicht werden kann die nichts uberprufen hat die Codeabdeckung fur die Qualitat der Tests eine nur eingeschrankte Aussagekraft Um die Qualitat von Tests sicherzustellen wird daher ublicherweise mit Mutationstests gearbeitet Dazu werden in den zu testenden Code automatisch Fehler bzw Mutationen eingebaut und dann die Tests ausgefuhrt Schlagen daraufhin Tests fehl die davor funktioniert haben so wurde die Mutation erkannt Die Qualitat der Tests kann aus dem Anteil der erkannten Mutationen abgeleitet werden Die damit errechnete Testabdeckung bestimmt also die Abdeckung des Codes der bei einer Mutation zu einem Fehlschlagen eines der Tests gefuhrt hatte Normen Bearbeiten Die Codeabdeckung wird auch von diversen internationalen Normen fur Empfehlungen bzw Mindestanforderungen herangezogen IEEE 1008 Software Unit Testing 100 Statement Abdeckung als Anforderung fur Fertigstellung der Modultests 100 Verzweigungs Abdeckung fur Module mit kritischem Code oder ungenugende Spezifikation ISO 26262 Road vehicles Functional safety Je nach Kritikalitat wird entsprechende Testabdeckung fur Modultests und Integrationstests empfohlen bzw stark empfohlen IEC 61508 Functional Safety of Electrical Electronic Programmable Electronic Safety Related Systems Empfiehlt bzw empfiehlt stark eine 100 Abdeckung von Eingangen Statements Verzweigungen Bedingungen je nach Sicherheitsanforderungsstufe beispielsweise wird bei der kleinsten Stufe eine 100 Testabdeckung der Eingange stark empfohlen die der Statements Verzweigungen und Bedingungen empfohlen DO 178B Software Considerations in Airborne Systems and Equipment Certification Verlangt eine 100 Testabdeckung von Statements Entscheidungen Veranderten Entscheidungen je nach Auswirkung eines Systemfehlers Beispielsweise wird ab Verletzungsgefahr von Passagieren eine 100 Testabdeckung der Statements verlangt Tools zur Messung der Codeabdeckung Bearbeiten Programmiersprache ToolsAda gcovC BTC EmbeddedTester Cantata froglogic Squish Coco gcov TESSY Testwell ctc C Bullseye Coverage Cantata froglogic Squish Coco gcov LDRA Testbed OpenCppCoverage TESSY Testwell ctc C froglogic Squish Coco Testwell ctc Cobol CC ANALYZER CodeCoverGroovy CloverIEC 61131 3 Applikationscode z B im Maschinen und Anlagenbau CODESYS ProfilerJava Clover Cobertura CodeCover EMMA JaCoCo Testwell ctc Simulink BTC EmbeddedTesterJavaScript coveraje JSCoverage script cover Net Framework JetBrains dotCover NCover PartCoverPerl Devel CoverPHP XDebugPython coverage pyRuby rcovShell shcovSimulink Modelle Simulink Verification and ValidationVerilog Code CoverageVHDL Code CoverageVisual Basic VBWatchTools fur Mutationstests Bearbeiten PIT JavaWeblinks BearbeitenGurkan Aydin und Hartmut Pohl Code Coverage Tools PDF 1 1 MB In Hackin9 06 2012 Prof Dr Daniel Fischer Code Coverage auf Embedded Systemen PDF 920 kB Vortrag auf dem Embedded Software Engineering Kongress 2012Siehe auch BearbeitenKontrollflussorientierte Testverfahren Abgerufen von https de wikipedia org w index php title Testabdeckung amp oldid 236560288