Testabdeckung

Testabdeckung

Als Testabdeckung bezeichnet man das Verhältnis an tatsächlich getroffenen Aussagen eines Tests gegenüber den theoretisch möglich treffbaren Aussagen bzw. der Menge der gewünschten treffbaren Aussagen. Die Testabdeckung spielt als Metrik zur Qualitätssicherung und zur Steigerung der Qualität insbesondere im Maschinenbau und der Softwaretechnik eine große Rolle.

In der Praxis wird die Testabdeckung durch verschiedene Kriterien beeinflusst. Die Testabdeckung lässt sich durch eine Erhöhung der Zahl an Messungen, Stichproben und Testfällen verbessern. Begrenzt wird die Testabdeckung in der Praxis jedoch durch die Kosten, die mit jedem Test verbunden sind.

Inhaltsverzeichnis

Testabdeckung im Maschinenbau

Je nach Art, Aufwand und Nutzen der Tests werden einige Tests stichprobenartig, andere Tests vollständig durchgeführt. Ein einfach und automatisch durchzuführender Test wird mit jedem Produkt durchgeführt, da seine Kosten die Produktionskosten nur geringfügig erhöhen. Ein Crash-Test mit einem Fahrzeug wird jedoch natürlich nur mit Stichproben durchgeführt, da das getestete Produkt anschließend unbrauchbar wird.

Für 1000 produzierte Fahrzeuge könnte dies z.B. bedeuten, dass besonders aufwendige Tests und Crashtests nur mit einem einzigen Fahrzeug durchgeführt werden, während weniger aufwendige Tests mit einer größeren Zahl oder gar allen Fahrzeugen durchgeführt werden.

Notwendige aber aufwendige Tests werden in ihrer Häufigkeit und damit der Testabdeckung variiert. Liefert ein Test überwiegend oder ausschließlich positive Ergebnisse, wird seine Zahl verringert. Liefert ein Test negative Ergebnisse, wird er häufiger eingesetzt, bis die Veränderungen an der Produktion zu einer deutlichen Steigerung positiver Ergebnisse und damit wieder einer höheren Produktqualität geführt hat.

Die Kosten-Nutzen-Rechnung solcher Tests wird mit Hilfe der Stochastik durchgeführt. Wird z.B. nur mit 5 von 1000 Fahrzeugen ein Test durchgeführt, ob die elektrischen Fensterscheibenheber einwandfrei funktionieren, lässt sich mit Hilfe der Stochastik die statistische Relevanz und die Wahrscheinlichkeit einer Fehleinschätzung aufgrund des Testergebnisses berechnen.

Testabdeckung in der Softwaretechnik

Für 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 durchgeführt 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 für unterschiedliche Bereiche der Software ermittelt. Zu diesen gehört die Abdeckung des Codes, der Daten oder der Fachlichkeit. Um eine möglichst hohe Testabdeckung zu erreichen müssen je nach abzudeckendem Bereich unterschiedliche Testfälle geschrieben werden. Nicht für alle Testmethoden ist beim Softwaretest die Angabe eines Maßes für die Testabdeckung (Softwaremetrik) möglich, da die Bestimmung der Anzahl der möglichen Testfälle für reale Probleme oft nicht möglich ist.

Eine vollständige Testabdeckung der Fachlichkeit stellt eine Ausnahme dar, weil die Anzahl möglicher Testfälle sehr schnell ungeheuer groß wird (durch kombinatorische Explosion). Ein vollständiger Funktionstest für eine einfache Funktion, die zwei 16-Bit-Werte als Argument erhält, würde schon 2^(16+16), also ca. 4 Milliarden Testfälle bedeuten, um die Spezifikation vollständig zu testen. Stattdessen beschränkt man sich auf eine Auswahl sinnvoll erscheinender Tests für Grenzfälle. Beispiel: Eine Wurzelfunktion für rationale Zahlen könnte z.B. mit sämtlichen Elementen der Menge {-10; -1; -0,0000001; 0; 0,0000001; 1; 2; 3; 4; 5,25; 9; 10000} getestet werden. Als sinnvolle Auswahl von Testfällen für eine angemessene Testabdeckung gelten in der Regel verschiedenartige gültige Argumente, für Komponenten mit Robustheitsanforderung zusätzlich Grenzelemente (gerade noch gültige Argumente und gerade ungültige Argumente). Es hat sich zudem als erfolgreich erwiesen, im Fehlerfall das den Fehler auslösende Argument in die Menge der Testelemente aufzunehmen.

Eine weitgehend vollständige Testabdeckung des Codes hingegen ist häufig das Ziel für Modultests bzw. Komponententests: Durch hochgradige Testabdeckung für 'kleine' Funktionseinheiten ergibt sich die Anzahl der insgesamt erforderlichen Testfälle lediglich aus der Addition dieser Testfälle und nicht aus der Kombinatorik der größeren Funktionalität. Doch auch hier kann dieses Ziel wegen verbleibender Restrisiken (unerwartete 'Fernwirkung' von Fehlern) und auch aus Kosten-Nutzen-Gründen in den meisten Fällen nicht zu 100% erreicht werden.

Tools zur Messung der Codeabdeckung

Siehe auch


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Test-Driven development — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Test first development — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Testgesteuerte Programmierung — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Testgetriebene Programmierung — Als testgetriebene Entwicklung (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD), manchmal auch scherzhaft Extreme Testing) ist eine Methode, die häufig bei der agilen Entwicklung von… …   Deutsch Wikipedia

  • Softwaretest — Ein Softwaretest prüft und bewertet Software gegen die für ihren Einsatz definierten Anforderungen und misst ihre Qualität. Die gewonnenen Erkenntnisse werden zur Erkennung und Behebung von Softwarefehlern genutzt. Tests während der… …   Deutsch Wikipedia

  • Testgetriebene Entwicklung — (auch testgesteuerte Programmierung, engl. test first development oder test driven development (TDD)) ist eine Methode, die häufig bei der agilen Entwicklung von Computerprogrammen eingesetzt wird. Bei der testgetriebenen Entwicklung erstellt der …   Deutsch Wikipedia

  • Winrunner — ist ein Teil der „Functional test Software“ Komponenten dessen anderer Teil QuickTestProfessional ist. Ein automatisches GUI Testwerkzeug welches dem Benutzer das Aufnehmen und Wiederabspielen von Interaktionen mit der Benutzeroberfläche einer zu …   Deutsch Wikipedia

  • Scrum — (engl. „Gedränge“) ist ein Rahmenwerk (framework) zur Entwicklung komplexer Produkte, das derzeit vor allem in der Entwicklung von Software angewendet wird.[1] Der Ansatz von Scrum ist empirisch, inkrementell und iterativ. Er beruht auf der… …   Deutsch Wikipedia

  • Emma (Software) — Emma Entwickler Vlad Roubtsov Aktuelle Version 2.0.5312 (13. Juni 2005) Aktuelle Vorabversion 2.1.5320 (22. Juni 2005) …   Deutsch Wikipedia

  • Assert — Die Artikel Assertion (Informatik) und Zusicherung (Softwaretechnik) überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen. Bitte… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”