Die Codeabdeckung ist ein Maß dafür, wie viele Linien / Blöcke / Bögen Ihres Codes ausgeführt werden, während die automatisierten Tests ausgeführt werden.
Die Codeabdeckung wird mithilfe eines speziellen Tools erfasst, um die Binärdateien zu instrumentieren, um Ablaufverfolgungsaufrufe hinzuzufügen und einen vollständigen Satz automatisierter Tests für das instrumentierte Produkt durchzuführen. Mit einem guten Tool erhalten Sie nicht nur den Prozentsatz des ausgeführten Codes, sondern können auch einen Drilldown in die Daten durchführen und genau sehen, welche Codezeilen während eines bestimmten Tests ausgeführt wurden.
Unser Team verwendet Magellan - ein internes Set von Tools zur Codeabdeckung. Wenn Sie ein .NET-Shop sind, verfügt Visual Studio über integrierte Tools zum Sammeln der Codeabdeckung. Sie können auch einige benutzerdefinierte Tools rollen, wie in diesem Artikel beschrieben.
Wenn Sie ein C ++ - Shop sind, hat Intel einige Tools , die für Windows und Linux ausgeführt werden, obwohl ich sie nicht verwendet habe. Ich habe auch gehört, dass es das gcov-Tool für GCC gibt, aber ich weiß nichts darüber und kann Ihnen keinen Link geben.
Wie wir es verwenden - die Codeabdeckung ist eines unserer Ausstiegskriterien für jeden Meilenstein. Wir haben tatsächlich drei Kennzahlen für die Codeabdeckung: Abdeckung durch Komponententests (vom Entwicklungsteam), Szenariotests (vom Testteam) und kombinierte Abdeckung.
Übrigens, während die Codeabdeckung eine gute Messgröße dafür ist, wie viele Tests Sie durchführen, ist sie nicht unbedingt eine gute Messgröße dafür, wie gut Sie Ihr Produkt testen. Es gibt andere Metriken, die Sie zusammen mit der Codeabdeckung verwenden sollten, um die Qualität sicherzustellen.
Die Codeabdeckung testet im Wesentlichen, wie viel von Ihrem Code unter Tests abgedeckt ist. Wenn Sie also eine Codeabdeckung von 90% haben, bedeutet dies, dass 10% des Codes nicht durch Tests abgedeckt sind. Ich weiß, dass Sie vielleicht denken, dass 90% des Codes abgedeckt sind, aber Sie müssen aus einem anderen Blickwinkel schauen. Was hindert Sie daran, 100% Code abzudecken?
Ein gutes Beispiel wird dies sein:
Im obigen Code gibt es nun zwei Pfade / Zweige. Wenn Sie immer auf den Zweig "JA" klicken, wird der andere Teil nicht abgedeckt, und er wird in den Ergebnissen der Codeabdeckung angezeigt. Das ist gut, denn jetzt wissen Sie, was nicht abgedeckt ist, und Sie können einen Test schreiben, um den anderen Teil abzudecken. Wenn es keine Codeabdeckung gab, sitzen Sie nur auf einer Zeitbombe, um zu explodieren.
NCover ist ein gutes Werkzeug zum Messen der Codeabdeckung.
quelle
Denken Sie daran, dass "100% Code-Abdeckung" nicht bedeutet, dass alles vollständig getestet wird - während dies bedeutet, dass jede Codezeile getestet wird, bedeutet dies nicht, dass sie in jeder (allgemeinen) Situation getestet werden.
Ich würde Code-Coverage verwenden, um Code-Bits hervorzuheben, für die ich wahrscheinlich Tests schreiben sollte. Wenn beispielsweise das Code-Coverage-Tool myImportantFunction () nicht ausgeführt wird, während meine aktuellen Unit-Tests ausgeführt werden, sollten sie wahrscheinlich verbessert werden.
Grundsätzlich bedeutet 100% Code-Abdeckung nicht, dass Ihr Code perfekt ist. Verwenden Sie es als Leitfaden, um umfassendere (Einheits-) Tests zu schreiben.
quelle
x
und zurückgegeben wurde,x/x
und den Test mit my_func (2) ausgeführt haben, haben Sie eine 100% ige Abdeckung (da der Code der Funktion ausgeführt wurde), aber Sie haben ein großes Problem übersehen, wenn 0 der Parameter ist. Das heißt, Sie haben auch bei 100% iger Abdeckung nicht alle erforderlichen Szenarien getestet.Ein paar Punkte zu vielen der vorherigen Antworten ergänzen:
Codeabdeckung bedeutet, wie gut Ihr Testsatz Ihren Quellcode abdeckt. dh inwieweit wird der Quellcode von den Testfällen abgedeckt?
Wie in den obigen Antworten erwähnt, gibt es verschiedene Abdeckungskriterien, wie Pfade, Bedingungen, Funktionen, Anweisungen usw. Es müssen jedoch zusätzliche Kriterien abgedeckt werden
Hinweis: Bei der statischen Code-Analyse wird festgestellt, ob nicht erreichbarer Code oder hängender Code vorhanden ist, dh Code, der von keinem anderen Funktionsaufruf abgedeckt wird. Und auch andere statische Abdeckung. Selbst wenn bei der statischen Code-Analyse angegeben wird, dass 100% Code abgedeckt ist, werden keine Berichte zu Ihrem Testsatz angezeigt, wenn die gesamte mögliche Codeabdeckung getestet wurde.
quelle
Die Codeabdeckung wurde in den vorherigen Antworten gut erklärt. Dies ist also eher eine Antwort auf den zweiten Teil der Frage.
Wir haben drei Tools verwendet, um die Codeabdeckung zu bestimmen.
Wir verwenden diese Tools, um
quelle
Die Codeabdeckung ist lediglich ein Maß für den getesteten Code. Es gibt eine Vielzahl von Abdeckungskriterien, die gemessen werden können. In der Regel sind es jedoch die verschiedenen Pfade, Bedingungen, Funktionen und Anweisungen innerhalb eines Programms, die die Gesamtabdeckung ausmachen. Die Metrik für die Codeabdeckung ist nur ein Prozentsatz der Tests, die jedes dieser Abdeckungskriterien ausführen.
In Bezug auf die Verfolgung der Abdeckung von Unit-Tests in meinen Projekten verwende ich statische Code-Analyse-Tools, um den Überblick zu behalten.
quelle
Für Perl gibt es das hervorragende Devel :: Cover- Modul, das ich regelmäßig für meine Module verwende.
Wenn der Build und die Installation von Module :: Build verwaltet werden, können Sie einfach
./Build testcover
eine schöne HTML-Site erstellen , die die Abdeckung pro Unterabschnitt, Zeile und Zustand angibt. Mit schönen Farben können Sie leicht erkennen, welcher Codepfad nicht abgedeckt wurde.quelle
In den vorherigen Antworten wurde die Codeabdeckung gut erklärt. Ich bin nur etwas Wissen Hinzufügen zu Werkzeugen aus , wenn Ihr auf arbeiten
iOS
undOSX
Plattformen, bietet Xcode , die Anlage zu testen und überwachen Codeabdeckung.Referenzlinks:
https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/07-code_coverage.html
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
Beide sind hilfreiche Links zum Erlernen und Erkunden der Codeabdeckung mit Xcode.
quelle
Für PHP sollten Sie sich den Github von Sebastian Bergmann ansehen
https://github.com/sebastianbergmann/php-code-coverage
quelle