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.
