Jetzt weiß ich, dass die Leute diese Frage doppelt oder oft in Betracht ziehen könnten. In diesem Fall würde ich mich über einen Link zu relevanten Fragen mit Antwort auf meine Frage freuen.
Ich war kürzlich mit einigen Leuten über die Codeabdeckung nicht einverstanden. Ich habe eine Gruppe von Leuten, die möchten, dass unser Team sich nicht mehr mit der Codeabdeckung befasst, basierend auf dem Argument, dass 100% Abdeckung keine Tests mit guter Qualität und damit Code mit guter Qualität bedeutet.
Ich konnte zurückschieben, indem ich das Argument verkaufte, dass Code Coverage mir sagt, was nicht sicher getestet wurde, und uns dabei helfen, uns auf diese Bereiche zu konzentrieren.
(Das Obige wurde in ähnlicher Weise in anderen SO-Fragen wie dieser diskutiert - /programming/695811/pitfalls-of-code-coverage )
Das Argument dieser Leute ist - dann würde das Team schnell Tests mit geringer Qualität erstellen und damit Zeit verschwenden, ohne signifikante Qualität hinzuzufügen.
Obwohl ich ihren Standpunkt verstehe, suche ich nach einer Möglichkeit, die Codeabdeckung robuster zu machen, indem ich robustere Tools / Frameworks einführe , die mehr Abdeckungskriterien berücksichtigen(Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)
.
Was ich suche, ist ein Vorschlag für eine Kombination solcher Tools und Praktiken / Prozesse zur Codeabdeckung, die mir helfen können, solchen Argumenten entgegenzuwirken, während ich mich bei meiner Empfehlung wohl fühle.
Ich würde auch alle begleitenden Kommentare / Vorschläge begrüßen, die auf Ihren Erfahrungen / Kenntnissen darüber basieren, wie Sie einem solchen Argument entgegenwirken können, da die Codeabdeckung meinem Team zwar subjektiv, aber dabei geholfen hat, sich der Codequalität und des Werts von Tests bewusster zu werden.
Bearbeiten: Um Verwirrung über mein Verständnis der Schwäche der typischen Codeabdeckung zu vermeiden, möchte ich darauf hinweisen, dass ich mich nicht auf Statement Coverage
Tools (oder Codezeilen, die ausgeführt werden) beziehe (es gibt viele). In der Tat ist hier ein guter Artikel über alles, was daran falsch ist: http://www.bullseye.com/statementCoverage.html
Ich suchte nach mehr als nur Aussage- oder Zeilenabdeckung und ging mehr auf mehrere Abdeckungskriterien und -stufen ein.
Siehe: http://en.wikipedia.org/wiki/Code_coverage#Coverage_criteria
Die Idee ist, dass, wenn ein Tool uns unsere Abdeckung anhand mehrerer Kriterien mitteilen kann, dies zu einer angemessenen automatisierten Bewertung der Testqualität wird. Ich versuche keineswegs zu sagen, dass die Leitungsabdeckung eine gute Einschätzung ist. In der Tat ist das die Voraussetzung meiner Frage.
Edit:
Ok, vielleicht habe ich es ein bisschen zu dramatisch projiziert, aber du verstehst, worum es geht. Das Problem besteht darin, Prozesse / Richtlinien im Allgemeinen in allen Teams auf homogene / konsistente Weise festzulegen. Und die Befürchtung ist allgemein, wie Sie die Qualität der Tests sicherstellen, wie Sie die garantierte Zeit zuweisen, ohne Maßnahmen zu ergreifen. Daher mag ich eine messbare Funktion, die es uns ermöglicht, die Codequalität zu verbessern, wenn wir sie mit geeigneten Prozessen und den richtigen Tools sichern, ohne zu wissen, dass Zeit nicht für verschwenderische Prozesse aufgewendet wird.
EDIT: Soweit ich aus den Antworten habe:
- Codeüberprüfungen sollten Tests abdecken, um die Qualität der Tests sicherzustellen
- Die Test First-Strategie hilft dabei, nachträglich geschriebene Tests zu vermeiden, um die Abdeckung einfach zu erhöhen.
- Erkundung alternativer Tools, die andere Testkriterien als nur Anweisung / Zeile abdecken
- Die Analyse des abgedeckten Codes / der Anzahl der gefundenen Fehler würde dazu beitragen, die Bedeutung der Abdeckung zu erkennen und einen besseren Fall zu finden
- Vertrauen Sie vor allem auf die Beiträge des Teams, um das Richtige zu tun und für ihre Überzeugungen zu kämpfen
- Abgedeckte Blöcke / Anzahl der Tests - Umstritten, enthält aber einen gewissen Wert
Vielen Dank für die tollen Antworten. Ich schätze sie wirklich. Dieser Thread ist besser als stundenlanges Brainstorming mit den vorhandenen Kräften.