Wir haben in unserer Organisation einen Codeüberprüfungsprozess eingeführt, der anscheinend gut funktioniert. Ich möchte jedoch in der Lage sein, die Effektivität des Prozesses im Laufe der Zeit zu messen, dh finden wir keine Fehler, weil der Code sauber ist, oder werden Fehler nur nicht erkannt?
Derzeit haben wir keinen effektiven vollautomatisierten Testprozess. Wir verwenden hauptsächlich manuelle Tests, daher können wir uns nicht auf die in dieser Phase festgestellten Fehler verlassen, um sicherzustellen, dass der Codeüberprüfungsprozess funktioniert.
Ist jemand auf dieses Problem gestoßen oder hat er irgendwelche Gedanken darüber, was beim Messen von Codeüberprüfungen gut funktioniert?
code-reviews
quality
metrics
measurement
Johnv2020
quelle
quelle
Antworten:
Es gibt eine Reihe von Metriken, die aus Codeüberprüfungen gewonnen werden können, von denen sich einige sogar über den gesamten Lebenszyklus des Projekts erstrecken.
Die erste Metrik, die ich zur Erfassung empfehlen würde, ist die Effektivität der Fehlerbeseitigung (DRE) . Für jeden Fehler geben Sie an, in welcher Phase der Fehler eingeführt und in welcher Phase behoben wurde. Die verschiedenen von Ihnen verwendeten Fehlererkennungstechniken werden alle gleichzeitig bewertet, sodass sie für Anforderungsüberprüfungen, Entwurfsüberprüfungen, Codeüberprüfungen und Komponententests gleichermaßen gelten , und so weiter. Sie wären besonders an der Anzahl der in der Codephase festgestellten Fehler interessiert, da dies wahrscheinlich sowohl Ihre Komponententests als auch Codeüberprüfungen umfassen würde. Wenn viele Fehler aus der Codephase in die Integrationstestphase oder sogar in das Feld gelangen, sollten Sie die Post-Coding-Praktiken bewerten.
Verschiedene Meeting-Metriken wären ebenfalls relevant. Dazu gehören die Vorbereitungszeit, die Besprechungszeit, die gelesenen Codezeilen, die in der Überprüfung festgestellten Fehler usw. Aus diesen Daten können einige Beobachtungen gemacht werden. Ein Beispiel wäre, wenn Ihre Prüfer viel Zeit damit verbringen, den Code zu lesen, um sich auf die Prüfung vorzubereiten, aber nur sehr wenige Probleme zu finden. In Verbindung mit den DRE-Daten können Sie die Schlussfolgerung ziehen, dass sich Ihr Team auf die Überprüfungstechniken konzentrieren muss, um Probleme zu finden, wenn Fehler in Integrationstests oder im Feld getestet werden. Ein weiterer interessanter Hinweis wäre, dass die Codezeilen (oder andere Größenangaben) in einer Besprechung im Vergleich zur Besprechungszeit gelesen werden. Untersuchungen haben ergeben, dass die Geschwindigkeit einer typischen Codeüberprüfung 150 Codezeilen pro Stunde beträgt.
Bei jeder dieser Metriken ist es dann wichtig, ihre Auswirkungen auf den Prozess zu verstehen. Ursachenanalyse mit Techniken wie Warum- Weil- , Fünf-Warum- oder Ishikawa-Diagrammen kann verwendet werden, um die Gründe zu ermitteln, warum Codeüberprüfungen (oder andere Techniken zur Qualitätsverbesserung) (in) wirksam sind.
Dieser Artikel über Inspektionen von The Ganssle Group und ein Artikel von Capers Jones in Crosstalk über Fehlerpotentiale und DRE könnten Sie auch interessieren .
quelle
Während weitgehend ist es wahr, dass Code-Überprüfung Probleme abholen würde , die eher latent werden , dass das Testen oder nicht fangen können. Meiner Meinung nach haben Sie möglicherweise einen wirklich stabilen (praktisch fehlerfreien) Code, der jedoch immer noch so geschrieben ist, dass er extrem nicht lesbar oder nicht ganz wartbar ist. Daher kann es sein, dass die Codeüberprüfung KEINE Bugs findet, wenn der Code keine echten Probleme enthält.
Trotzdem würde ich wirklich fragen, warum man eine Codeüberprüfung machen möchte. Der einfache Grund, warum es wichtig ist, dass der Code verbessert werden sollte, um lesbarer, wartbarer und entwickelbarer zu werden. Viele Menschen sollten in der Lage sein, saubereren Code zu lesen und daraus einen Sinn zu ziehen. In diesem Sinne besteht das einfachste Ziel des Codeüberprüfungsprozesses darin, sauberen Code zu erzeugen. Das Maß für die Effektivität ist also, wie viel sauberer der Code jetzt ist.
Wie Sie eine messbare Wirksamkeit haben wollten - hier ist, was ich vorschlagen würde:
Metrik in Bezug auf den Umfang der Nacharbeit - Die Häufigkeit, mit der die Nacharbeit in einem bestimmten Modul / Objekt / Arbeitselement durchgeführt wird, ist ein Maß dafür, wie schlecht dieser Code in Bezug auf die Wartbarkeit ist. Wie oft können wir bei einer effektiven Codeüberprüfung den Nacharbeitsaufwand für dasselbe Modul reduzieren?
Metrik in Bezug auf den Änderungsbetrag, der bei jeder Änderungsanforderung anfällt. Jedes Mal, wenn eine Änderungsanforderung auftritt, ist bei einem Code mit unzureichendem Faktor immer eine größere Anzahl von Modulen betroffen. Eine Maßnahme würde wahrscheinlich zeigen , dass nach einem Code - Review - eine war , dass jede Verringerung dieser Ausbreitung des Wandels für eine ähnliche Änderungsanforderung in der Vergangenheit?
Metrik in Bezug auf die Durchschnittsgeschwindigkeit, mit der eine Änderungsanforderung beantwortet werden kann. Wenn der Code sauberer ist - schneller und besser -, muss auf erforderliche Änderungen reagiert werden. Nachdem der Code im Überprüfungsprozess bereinigt wurde, können wir die ähnliche Größenanforderung schneller beantworten.
Ich stelle keine exakten Maßeinheiten auf - mit diesem Ansatz können Sie wahrscheinlich genauere Maßeinheiten erstellen. Es kann mehr Erweiterungsformalismus in den obigen Ansätzen dazu geben.
Im Grunde geht es darum, dass der Codeüberprüfungsprozess nicht die Anzahl der Fehler überprüft, sondern diese ermittelt. Wir sollten die Wirksamkeit dahingehend messen, ob die Codeüberprüfung dazu geführt hat, dass der Code sauberer, schlanker und pflegeleichter wird. Daher können wir diese Wirksamkeit messen, wenn wir feststellen, dass ähnliche Änderungsanforderungen in Zukunft effizienter zu beantworten sind.
quelle