Code Abdeckungstool: Anweisungs-, Verzweigungs- und Entscheidungstests
โก Intelligente Zusammenfassung
Code Die Testabdeckung ist eine White-Box-Messung, die den Grad angibt, in dem der Quellcode von einer Testsuite abgedeckt wurde.ping Teams spรผren ungetestete Anweisungen, Verzweigungen, Bedingungen und Pfade auf, die von versteckten Fehlern belegt sein kรถnnten.

Was ist Code Abdeckung?
Code Berichterstattung ist ein Maร, das den Grad der Testung des Quellcodes eines Programms beschreibt. Es ist eine Form von White-Box-Tests Diese Funktion ermittelt die Bereiche eines Programms, die von den Testfรคllen nicht abgedeckt werden. Sie hilft auรerdem dabei, zusรคtzliche Testfรคlle zu erstellen, um die Testabdeckung zu erhรถhen und ein quantitatives Maร fรผr die Codeabdeckung zu bestimmen.
In den meisten Fรคllen sammelt ein Codeabdeckungssystem Informationen รผber das laufende Programm. Diese werden dann mit Quellcodeinformationen kombiniert, um einen Bericht รผber die Codeabdeckung der Testsuite zu erstellen.
Warum verwenden Code Abdeckungstests?
Hier sind einige Hauptgrรผnde fรผr die Verwendung der Codeabdeckung:
- Es hilft Ihnen, die Effizienz der Testdurchfรผhrung zu messen.
- Es bietet eine quantitative Messmรถglichkeit fรผr Tests.
- Es definiert den Grad, in dem der Quellcode getestet wurde.
Code Abdeckungsmethoden
Im Folgenden werden die wichtigsten Methoden zur Codeabdeckung vorgestellt:
- Aussagedeckung
- Entscheidungsabdeckung
- Zweigstellenabdeckung
- Toggle Abdeckung
- FSM-Abdeckung
Aussagedeckung
Aussagedeckung Die Anweisungsabdeckung ist eine White-Box-Testmethode, bei der alle ausfรผhrbaren Anweisungen im Quellcode mindestens einmal ausgefรผhrt werden. Sie dient dazu, die Anzahl der ausgefรผhrten Anweisungen im Quellcode zu berechnen. Hauptziel der Anweisungsabdeckung ist es, alle mรถglichen Pfade, Zeilen und Anweisungen im Quellcode abzudecken.
Mithilfe der Anweisungsabdeckung werden Szenarien auf Basis der Struktur des zu testenden Codes abgeleitet.
Beim White-Box-Test konzentriert sich der Tester auf die Funktionsweise der Software. Anders ausgedrรผckt: Er untersucht die internen Ablรคufe des Quellcodes anhand von Kontrollflussdiagrammen oder Ablaufdiagrammen.
Im Allgemeinen findet man in jeder Software im Quellcode eine Vielzahl von Elementen wie Operatoren, Funktionen usw.pingAusnahmebehandlungsroutinen usw. Abhรคngig von den Programmeingaben werden manche Codeabschnitte mรถglicherweise nicht ausgefรผhrt. Ziel der Anweisungsabdeckung ist es, alle mรถglichen Pfade, Zeilen und Anweisungen im Code abzudecken.
Um dies zu verdeutlichen, betrachten wir ein Beispiel zur Berechnung der Deckungsquote von Finanzberichten. Hierfรผr untersuchen wir zwei verschiedene Szenarien und ermitteln den jeweiligen Deckungsgrad.
Quelle Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Szenario 1: Wenn A = 3, B = 9
Die gelb markierten Anweisungen werden gemรคร dem Szenario ausgefรผhrt. Anzahl der ausgefรผhrten Anweisungen = 5, Gesamtzahl der Anweisungen = 7, daher betrรคgt die Anweisungsabdeckung 5/7 = 71 %.
Szenario 2: Wenn A = -3, B = -9
Die gelb markierten Anweisungen werden gemรคร dem Szenario ausgefรผhrt. Anzahl der ausgefรผhrten Anweisungen = 6, Gesamtzahl der Anweisungen = 7, daher betrรคgt die Anweisungsabdeckung 6/7 = 85 %.
Insgesamt betrachtet sind jedoch alle Aussagen in beiden Szenarien abgedeckt. Daher kรถnnen wir schlussfolgern, dass die Gesamtabdeckung der Aussagen 100 % betrรคgt.
Was ist durch die Kontoauszugsdeckung abgedeckt?
- Unbenutzte Aussagen
- Dead Code
- Unbenutzte Zweige
- Fehlende Aussagen
Testen der Entscheidungsabdeckung
Entscheidungsabdeckung Entscheidungsabdeckungstests sind eine White-Box-Testmethode, die das Ergebnis (wahr oder falsch) jedes booleschen Ausdrucks im Quellcode ausgibt. Ziel dieser Tests ist es, den gesamten zugรคnglichen Quellcode abzudecken und zu validieren, indem geprรผft wird, ob jeder Zweig an jedem mรถglichen Entscheidungspunkt mindestens einmal ausgefรผhrt wird.
Bei dieser Art der Codeabdeckung kรถnnen Ausdrรผcke komplex werden, was eine vollstรคndige Abdeckung erschwert. Daher werden verschiedene Methoden verwendet, um diese Metrik zu ermitteln. Diese Methoden priorisieren die wichtigsten Kombinationen. Obwohl sie der Zweigabdeckung รคhnelt, bietet sie eine hรถhere Sensitivitรคt gegenรผber Kontrollflรผssen.
Beispiel fรผr Entscheidungsabdeckung
Betrachten Sie den folgenden Code:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Szenario 1: Der Wert von a ist 2. Das Ergebnis der Entscheidung ist โNeinโ. Wenn (a>5) ausgewรคhlt ist, betrรคgt die Entscheidungsabdeckung 50 %.
Szenario 2: Der Wert von a ist 6. Das Ergebnis der Entscheidung ist โJaโ, wenn (a>5) ausgewรคhlt ist, also betrรคgt die Entscheidungsabdeckung 50%.
| Testfall | Wert von A | Ausgang | Entscheidungsabdeckung |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Testen der Filialabdeckung
Zweigstellenabdeckung Die Zweigabdeckung ist eine White-Box-Testmethode, bei der jedes Ergebnis eines Codeabschnitts (Anweisung oder Schleife) geprรผft wird. Ziel der Zweigabdeckung ist es, sicherzustellen, dass jede Entscheidungsbedingung jedes Zweigs mindestens einmal ausgefรผhrt wird. Sie hilft, den Anteil unabhรคngiger Codeabschnitte zu messen und Abschnitte ohne Zweige zu identifizieren.
Wenn die Ergebnisse beispielsweise binรคr sind, mรผssen Sie sowohl die Ergebnisse โWahrโ als auch โFalschโ testen.
Die Formel zur Berechnung der Filialabdeckung:
Beispiel fรผr Filialabdeckung
Um die Zweigabdeckung zu verstehen, betrachten wir dasselbe Beispiel wie zuvor. Die Zweigabdeckung berรผcksichtigt auch den unbedingten Zweig.
| Testfall | Wert von A | Ausgang | Entscheidungsabdeckung | Zweigstellenabdeckung |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Vorteile der Filialabdeckung:
- Ermรถglicht die Validierung aller Zweige im Code.
- Hilft Ihnen dabei sicherzustellen, dass keine Verzweigung zu einer Anomalie im Programmablauf fรผhrt.
- Behebt Probleme, die aufgrund von Anweisungsabdeckungstests auftreten.
- Ermรถglicht es Ihnen, Bereiche zu finden, die von anderen Testmethoden nicht erfasst werden.
- Ermรถglicht es Ihnen, ein quantitatives Maร fรผr die Codeabdeckung zu finden.
- Die Zweigabdeckung ignoriert Verzweigungen innerhalb boolescher Ausdrรผcke.
Testen der Zustandsabdeckung
ZustandsabdeckungDie Bedingungsabdeckung, auch Ausdrucksabdeckung genannt, ist eine Testmethode, mit der Variablen oder Teilausdrรผcke in einer Bedingungsanweisung geprรผft und ausgewertet werden. Ziel der Bedingungsabdeckung ist es, die einzelnen Ergebnisse jeder logischen Bedingung zu รผberprรผfen. Die Bedingungsabdeckung bietet eine hรถhere Sensitivitรคt fรผr den Kontrollfluss als die Entscheidungsabdeckung. Bei dieser Abdeckung werden nur Ausdrรผcke mit logischen Operanden berรผcksichtigt.
Wenn ein Ausdruck beispielsweise boolesche Operationen wie UND, ODER oder XOR enthรคlt, gibt dies die Gesamtzahl der Mรถglichkeiten an. Die Bedingungsabdeckung garantiert jedoch keine vollstรคndige Entscheidungsabdeckung.
Die Formel zur Berechnung der Bedingungsabdeckung:
Fรผr einen Ausdruck mit zwei Operanden gibt es vier mรถgliche Kombinationen: TT, FF, TF und FT. Betrachten Sie die Eingabe X=3, Y=4 (x b) FALSCH, was eine Bedingungsabdeckung von 1/4 = 25 % ergibt.
Finite-State-Machine-Abdeckung
Die Codeabdeckung mittels endlicher Zustandsautomaten ist zweifellos die komplexeste Methode. Das liegt daran, dass sie das Verhalten des Designs analysiert. Bei dieser Methode wird untersucht, wie oft bestimmte Zustรคnde besucht oder durchlaufen werden. Auรerdem wird geprรผft, wie viele Sequenzen in einem endlichen Zustandsautomaten enthalten sind.
Welche Art von Code Auswahl des Versicherungsschutzes
Dies ist mit Sicherheit die schwierigste Frage. Um eine Testabdeckungsmethode auszuwรคhlen, muss der Tester prรผfen, ob Folgendes zutrifft:
- Der zu testende Code weist einen oder mehrere unentdeckte Fehler auf.
- Kosten der mรถglichen Strafe,
- Kosten des Reputationsverlustes
- Kosten durch Umsatzeinbuรen usw.
Je hรถher die Wahrscheinlichkeit ist, dass Defekte zu kostspieligen Produktionsausfรคllen fรผhren, desto hรถher ist die Deckungssumme, die Sie wรคhlen mรผssen.
Code Abdeckung vs. funktionale Abdeckung
| Code Abdeckung | Funktionsabdeckung |
|---|---|
| Zeigt an, wie gut der Quellcode von Ihrer Testumgebung geprรผft wurde. | Misst, wie gut die Funktionalitรคt des Designs von Ihrem Testsystem abgedeckt wurde. |
| Verwendet niemals eine Designspezifikation. | Verwendet eine Designspezifikation. |
| Von Entwicklern erstellt. | Durchgefรผhrt von Testern. |
Code Abdeckungswerkzeuge
Hier ist eine Liste wichtiger Codeabdeckungstools:
| Werkzeugname | Beschreibung |
|---|---|
| Cobertura | Ein Open-Source-Tool zur Codeabdeckung. Es misst die Testabdeckung, indem es eine Codebasis instrumentiert und analysiert, welche Codezeilen beim Ausfรผhren der Testsuite ausgefรผhrt werden und welche nicht. |
| Clover | Klee (OpenClover) verkรผrzt auรerdem die Testzeit, indem nur die Tests ausgefรผhrt werden, die den seit dem vorherigen Build geรคnderten Anwendungscode abdecken. |
| DevPartner | DevPartner ermรถglicht Entwicklern die Analyse Java Code fรผr Codequalitรคt und Komplexitรคt. |
| Emma | EMMA unterstรผtzt die Codeabdeckung auf Klassen-, Methoden-, Zeilen- und Basisblockebene, aggregiert auf Quelldatei-, Klassen- und Methodenebene. |
| Kalistick | Kalistick ist eine Drittanbieteranwendung, die den Code aus verschiedenen Perspektiven analysiert. |
| CoView und CoAnt | Ein Codeabdeckungstool fรผr Metriken, Erstellung von Mock-Objekten, Testbarkeit des Codes, Pfad- und Zweigabdeckung und mehr. |
| Volltreffer fรผr C++ | BullseyeCoverage ist ein Code-Coverage-Tool fรผr C++ und C. |
| Echolot | Sonar ist ein Open-Source-Tool zur Codeabdeckung, das Ihnen bei der Verwaltung der Codequalitรคt hilft. |
Vor- und Nachteile der Verwendung Code Abdeckung
| Vorteile | Nachteile |
|---|---|
| Hilfreich zur Bewertung eines quantitativen Maรes fรผr die Codeabdeckung. | Selbst wenn eine bestimmte Funktion im Design nicht implementiert ist, meldet die Codeabdeckung dennoch eine Abdeckung von 100%. |
| Ermรถglicht das Erstellen zusรคtzlicher Testfรคlle, um die Testabdeckung zu erhรถhen. | Mithilfe der Codeabdeckung lรคsst sich nicht feststellen, ob alle mรถglichen Werte eines Merkmals getestet wurden. |
| Ermรถglicht es Ihnen, die Bereiche eines Programms zu finden, die von einer Reihe von Testfรคllen nicht abgedeckt werden. | Code Die Abdeckung sagt nichts darรผber aus, wie umfangreich und wie gut Sie Ihre Argumentation abgedeckt haben. |






