Was ist der Unterschied zwischen Codeabdeckung und Testabdeckung?

  • Zuerst dachte ich, dass es dasselbe war, aber bei Eclemma scheint es anders zu sein. Aber ich kann nichts darüber finden.

    11 May 2012
    Matt
5 answers
  • So verwende ich die Begriffe. Code Coverage ist ein Maß dafür, wie viel Code als Reaktion auf einen Stimulus (z. B. Ausführen eines Tests) ausgeführt wird. Testabdeckung ist ein Maß dafür, wie viel des Feature-Sets als Ergebnis eines Tests ausgeführt wurde.

    Andere haben andere Definitionen. Wenn jemand diese Begriffe verwendet und Sie sich nicht sicher sind, was er bedeutet, fragen Sie ihn.

    11 May 2012
    rjohnston
  • Testabdeckung und Codeabdeckung als generische Ausdrücke können eine Vielzahl unterschiedlicher Kennzahlen für das Abgedeckte bedeuten: Codezeilen, Unterkonditionen boolescher Ausdrücke, Zugriff auf Daten, Aufrufe von API-Funktionen, ...

    In der gebräuchlichen Volkssprache und für fast alle Tools, die Sie erhalten, sagen "Testabdeckung" und "Codeabdeckung", welcher Code von was auch immer ausgeführt wird Testprozess, den Sie verwenden (ob Einheitentest, Funktionstest, informeller Test, interaktiver Test, ...).

    Die einzige weit verbreitete Variante ist MC / DC (test / Code) Abdeckung, die Ihnen mitteilt, welche der booleschen Unterkonditionen in einem logischen Ausdruck auf eine Weise ausgeübt wurde, die das Ergebnis des booleschen Ausdrucks steuert. Das bieten nur wenige Tools.

    Ich bin sicher, Eclemma bietet Test / Code-Abdeckung des Standardtyps. Ob es etwas anderes bietet, weiß ich nicht.

    10 May 2012
    Ira Baxter
  • So verwende ich diese Begriffe (obwohl ich diese Begriffe fast nie verwende).

    Code-Abdeckung ist ein Maß für Wie viel Code wird während des Tests ausgeführt.

    Testabdeckung ist ein Maß dafür, wie viele Testfälle während des Tests ausgeführt wurden.

    Ihre Laufleistung kann variieren ...

    11 May 2012
    Joe Strazzere
  • Aufgrund der obigen Antworten variiert die Definition. Ich sage manchmal, dass die Codeabdeckung für mich keine Rolle spielt, die Testabdeckung jedoch.

    Unter Testabdeckung meine ich in diesem Zusammenhang, dass jedes mögliche Verhalten einer Klasse durch Tests dokumentiert werden sollte (dh, wenn Sie sich die Tests ansehen, sollten Sie in der Lage sein, einen Safe zu erstellen Annahme der Ausgaben und des Verhaltens einer beliebigen Methode dieser Klasse, sofern ein bestimmter Satz von Eingaben angegeben ist, der auch Annahmen über ungültige Eingaben enthält.

    Codezeilen, die sich nicht auf das Verhalten auswirken, sind Natürlich unerwünscht, aber wenn es sie gibt, ist das normalerweise weniger relevant. Für mich sind typische Beispiele für solche Ansätze kleine Best-Practice-Ansätze, die eigentlich nur selten verwendet werden. Daher teste ich möglicherweise nicht, ob ich eine Ausnahme erfasse, wenn eine Datei geschrieben wird und ob Es existiert vor dem Versuch, es zu schreiben. Diese Art von Überprüfung ist oft besser, als diesen Code nicht zu schreiben oder zu testen.

    19 May 2012
    Hans
  • Meine 2 Cent:

    Code-Abdeckung bezeichnet das Verhältnis von Code, der nicht von Testcode ausgeführt wird, der von automatisierten Tests ausgeführt wird. Jede Codezeile oder Anweisung, die irgendwie ausgewertet und ausgeführt wurde, zählt dazu.

    Testabdeckung bezeichnet das Verhältnis des logisch getesteten Verhaltens. "Verhalten" bedeutet in diesem Fall alles, was eine Methode gemäß ihrer Beschreibung tun soll: Validierung und Reaktion auf falsche Eingaben, Rückgabe des erwarteten Ergebnisses für alle korrekten Eingaben.

    Betrachten Sie a Methode add(a, b), die zwei Zahlen addieren und die Summe zurückgeben soll. Stellen Sie sich nun einen Test vor, der die Methode mit zwei positiven Zahlen aufruft, aber nur nach Fehlern sucht und das logische Ergebnis nicht überprüft. Dies würde wahrscheinlich 100% Codeabdeckung bedeuten (die gesamte Methode wurde ausgeführt), aber deutlich weniger Testabdeckung, da die Methode nur mit einem Fehlverhalten getestet wurde: Fehler bei korrekter Eingabe. Weder das Ergebnis wurde mit anderen Eingaben getestet, noch wurden falsche / unerwartete Eingaben getestet.

    16 August 2016
    Hubert Grzeskowiak