Testabdeckung im Softwaretest: Wie man sie misst
⚡ Intelligente Zusammenfassung
Die Testabdeckung in der Softwareprüfung misst, wie viel einer Anwendung durch eine Reihe von Tests tatsächlich abgedeckt wird. Sie deckt ungetestete Anforderungen, Codepfade und Risiken auf, sodass Teams gezielte Testfälle hinzufügen und mit messbarer Sicherheit veröffentlichen können.
Was ist Testabdeckung?
Die Testabdeckung ist im Softwaretest als eine Metrik definiert, die den Umfang der von einer Testreihe durchgeführten Tests misst. Dazu gehört das Sammeln von Informationen darüber, welche Teile eines Programms beim Ausführen der Testsuite ausgeführt werden, um festzustellen, welche Zweige bedingter Anweisungen verwendet wurden.
Einfach ausgedrückt handelt es sich um eine Technik, mit der Sie sicherstellen können, dass Ihre Tests Ihren Code testen bzw. wie viel von Ihrem Code Sie durch die Ausführung des Tests beansprucht haben.
Was bewirkt die Testabdeckung?
In einem laufenden Projekt unterstützt die Testabdeckung vier praktische Aktivitäten:
- Ermitteln des Bereichs einer Anforderung, der nicht durch eine Reihe von Testfällen umgesetzt wird
- Hilft bei der Erstellung zusätzlicher Testfälle, um die Abdeckung zu erhöhen
- Ermittlung eines quantitativen Maßes für die Testabdeckung, eine indirekte Methode zur Qualitätsprüfung
- Identifizieren bedeutungsloser Testfälle, die die Abdeckung nicht erhöhen
Vorteile der Testabdeckung in der Softwareentwicklung
Diese Aktivitäten führen zu konkreten technischen Vorteilen.
- Es kann die Qualität des Tests sicherstellen
- Es kann dabei helfen, herauszufinden, welche Teile des Codes tatsächlich für die Veröffentlichung oder den Fix berührt wurden
- Es kann alle Entscheidungspunkte und Pfade in Ihrer Anwendung ermitteln, die nicht getestet wurden, wodurch Sie die Testabdeckung erhöhen können.
- Vorbeugen Defekt Leckage
- Zeit, Umfang und Kosten können unter Kontrolle gehalten werden
- Fehlerprävention in einem frühen Stadium des Projektlebenszyklus
- Lücken in Anforderungen, Testfällen und Fehler auf Unit-Ebene und Code-Ebene können auf einfache Weise gefunden werden
Arten der Test-Abdeckung
Die Reichweite lässt sich nie in einer einzigen Zahl messen. Teams tracEs gibt mehrere Typen gleichzeitig, da jeder eine andere Frage zur selben Suite beantwortet. Die folgende Tabelle gruppiert die Typen, denen Sie am häufigsten begegnen.
| Deckungstyp | Was es misst | am besten geeignet für |
|---|---|---|
| Aussage (Zeilenabdeckung) | Die ausführbaren Zeilen werden mindestens einmal ausgeführt. | Unit-Tests und Überprüfung von Legacy-Code |
| Zweig- oder Entscheidungsabdeckung | Wahre und falsche Ergebnisse jeder Entscheidung | Bedingte und Validierungslogik |
| Abdeckung der Bedingungen | Jeder boolesche Teilausdruck kann als wahr oder als falsch interpretiert werden. | Zusammengesetzte UND- oder ODER-Ausdrücke |
| Pfadabdeckung | Einzigartige Routen, die durch ein Modul beschritten werden | Sicherheitskritische und finanzielle Zahlungsströme |
| Funktionsabdeckung | Funktionen oder Methoden, die von Tests aufgerufen werden | API- und Serviceschichten |
| Anforderungen an die Abdeckung | Anforderungen, die mindestens einem Test zugeordnet sind | Akzeptanz und Konversiontractual sign-off |
| Risikoabdeckung | Identifizierte Hochrisikogebiete durchgeführt | Kurze Releasezyklen |
Die ersten fünf Typen sind Maßnahmen auf Codeebene und gehören zu White-Box-TestsAnforderungen und Risikoabdeckung werden hingegen auf der Ebene des Testplans festgelegt.
Was sind die Hauptunterschiede zwischen Code Abdeckung und Testabdeckung?
Code Berichterstattung und Testabdeckung sind Messtechniken, mit denen Sie die Qualität Ihres Anwendungscodes beurteilen können.
Hier sind einige entscheidende Unterschiede zwischen den Ständen dieser Abdeckungsmethoden:
| Kenngrößen | Code Abdeckung | Testabdeckung |
|---|---|---|
| Definition | Code Der Begriff „Abdeckung“ wird verwendet, wenn Anwendungscode während der Ausführung einer Anwendung ausgeführt wird. | Unter Testabdeckung versteht man den gesamten Testplan. |
| Ziel | Code Abdeckungsmetriken können dem Team helfen, seine automatisierten Tests zu überwachen. | Die Test-Abdeckung gibt Aufschluss darüber, in welchem Ausmaß der schriftliche Code einer Anwendung getestet wurde. |
| Untertypen | Code Die Abdeckung wird in Untertypen unterteilt, wie z. B. Anweisungsabdeckung, Bedingungsabdeckung und Zweigabdeckung. Toggle-Abdeckung, FSM-Abdeckung. | Kein Untertyp der Testabdeckungsmethode. |
Testabdeckungsformel
Um die Testabdeckung zu berechnen, müssen Sie die folgenden Schritte ausführen:
Schritt 1) Zu Zählen Y, die Gesamtzahl der Codezeilen in dem Softwarestück, das Sie testing
Schritt 2) Zu Zählen X, die Anzahl der Codezeilen, die alle Testfälle aktuell ausführen
Jetzt müssen Sie (X dividiert durch Y) multipliziert mit 100 ermitteln. Das Ergebnis dieser Berechnung ist Ihr Testabdeckungsprozentsatz.
Beispielsweise:
Wenn die Anzahl der Codezeilen in einer Systemkomponente 500 beträgt und die Anzahl der in allen vorhandenen Testfällen ausgeführten Zeilen 50 beträgt, dann ist Ihre Testabdeckung:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Beispiele für Testabdeckung
Der Prozentsatz allein ist nie die ganze Geschichte, wie die folgenden Beispiele zeigen.
Beispiel 1:
Wenn Sie beispielsweise ein Messer testen möchten, sollten Sie zunächst prüfen, ob es Gemüse oder Obst präzise schneidet. Dabei spielen aber auch andere Aspekte eine Rolle, etwa die einfache Handhabung.
Beispiel 2:
Wenn Sie beispielsweise die Notepad-Anwendung testen möchten, ist die Überprüfung ihrer grundlegenden Funktionen unerlässlich. Sie müssen jedoch auch andere Aspekte berücksichtigen, wie z. B. das erwartungsgemäße Verhalten der Anwendung in Kombination mit anderen Anwendungen, die intuitive Bedienbarkeit und das Fehlen von Abstürzen bei ungewöhnlichen Aktionen.
Testabdeckungstechniken
Beide Beispiele führen zum selben Schluss: Das Erreichen eines Testabdeckungsziels hängt weniger von der Anzahl der geschriebenen Tests ab, sondern vielmehr von der Wahl der richtigen Testdesigntechnik. Die folgenden Techniken erweitern die Testabdeckung und erhalten gleichzeitig die Testabdeckung aufrecht.ping Die Suite ist klein.
- Grenzwertanalyse: Wählt Eingaben an den Rändern jedes gültigen Bereichs aus, wo die Fehler am stärksten gehäuft auftreten. Siehe Grenzwertanalyse für bearbeitete Fälle.
- Äquivalenzzerlegung: Gruppiert Eingaben, die von der Anwendung identisch behandelt werden, sodass ein einzelner Fall sicher eine ganze Klasse von Werten repräsentieren kann.
- Testen von Entscheidungstabellen: Umfasst Kombinationen von Bedingungen und deren erwartete Ergebnisse innerhalb eines einzigen Rasters.
- Zustandsübergangstests: Prüft jeden gültigen und ungültigen Übergang zwischen Anwendungszuständen.
- Basispfadprüfung: Leitet aus dem Kontrollflussgraphen die minimale Menge unabhängiger Pfade ab.
- Risikobasiertes Testen: Die Funktionen werden nach ihrer geschäftlichen Auswirkung geordnet und die risikoreichsten zuerst behandelt.
- Versuchsforschung: Deckt Lücken auf, die in inszenierten Fällen und Berichterstattungen nie sichtbar werden.
Wie kann eine umfassende Testabdeckung erreicht werden?
Sobald die Techniken ausgewählt sind, gewährleisten vier etablierte Routen die Netzabdeckung.
- Die Testabdeckung kann durch die Anwendung statischer Überprüfungstechniken wie Peer-Reviews, Inspektionen und Komplettlösungen erreicht werden
- Durch die Umwandlung der Ad-hoc-Fehler in ausführbare Testfälle
- Auf Code- oder Unit-Test-Ebene kann die Testabdeckung durch den Einsatz der automatisierten Code-Coverage- oder Unit-Test-Coverage-Tools erreicht werden
- Eine funktionale Testabdeckung kann mit Hilfe geeigneter Testmanagement-Tools erfolgen
Wie man die Testabdeckung verbessert
Die Sicherstellung der Testabdeckung ist der Ausgangspunkt; deren Erweiterung ist ein wiederholbarer Prozess. Führen Sie diese Schritte zu Beginn jedes Release-Zyklus durch.
- Als Ausgangspunkt dient der aktuelle Wert. Erstellen Sie einen Abdeckungsbericht und erfassen Sie die Abdeckung von Anweisungen, Verzweigungen und Anforderungen separat, damit Lücken pro Modul sichtbar bleiben und nicht in einem projektweiten Durchschnitt verborgen bleiben.
- Ordnen Sie Tests den Anforderungen zu. Build a tracEine Anforderungsmatrix, die jede Anforderung mit mindestens einem Testfall verknüpft. Jede leere Zeile stellt eine bestätigte Lücke dar, keinen Verdacht.
- Module nach Risiko einordnen. Zahlungs-, Authentifizierungs- und Datenmigrationslogik verdienen eine wesentlich ausführlichere Beschreibung als ein statischer Hilfebildschirm. Investieren Sie das Budget daher dort, wo ein Fehler am meisten schaden würde.
- Negative Fälle und Grenzfälle hinzufügen. Leere Eingabefelder, zu große Werte, Netzwerk-Timeouts und Berechtigungsfehler führen zu Verzweigungen, die bei Tests im Normalfall nie berührt werden.
- Die Testebenen werden übereinandergelegt. Kombinieren Unit-Test, Integrationstestsund durchgängige Prüfungen, da jede Ebene das abdeckt, was die anderen strukturell nicht können.
- Automatisieren Sie die Regressionssuite. Promodie stabilen Fälle in Automatisierungstests und führen Sie sie im Inneren aus CI / CD-Pipeline nach jedem Commit.
- Überflüssige Fälle aussortieren. Löschen Sie doppelte Tests, die zusätzliche Ausführungsminuten hinzufügen, ohne eine einzige nicht abgedeckte Zeile hinzuzufügen.
- RevBeobachte den Trend bei jedem Sprint. Track-Abdeckung neben DefektdichteSteigende Leckagen bei gleichzeitig flacher Abdeckung sind ein frühes Warnsignal für einen toten Winkel.
⚠️ Warnung: 100 Prozent sollten nicht als Ziel angesehen werden. Eine Testsuite mit 85 Prozent strengen Zusicherungen schützt eine Veröffentlichung weitaus besser als 95 Prozent oberflächliche Prüfungen, die Code ausführen, ohne das Ergebnis zu überprüfen.
Nachteile der Testabdeckung
Der Versicherungsschutz bleibt wertvoll, hat aber Grenzen, die vor der Angabe eines Prozentsatzes erwähnt werden sollten.
- Die meisten Aufgaben in der Testabdeckung erfolgen manuell, da es keine Tools zur Automatisierung gibt. Daher ist die Analyse der Anforderungen und die Erstellung von Testfällen mit großem Aufwand verbunden.
- Mit der Testabdeckung können Sie Features zählen und diese dann anhand mehrerer Tests messen. Es gibt jedoch immer Raum für Beurteilungsfehler.

