Grundlagen der Programmierung: Codemetriken

C.R.A.P.-Index

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Als Alternative zur Testabdeckung wird zunehmend der C.R.A.P.-Faktor genutzt, da er praxistauglicher zu sein scheint.
03:20

Transkript

Kommen wir nun zu etwas, das zukünftig wahrscheinlich noch an Bedeutung gewinnt, aktuell aber leider noch nicht ganz so verbreitet ist, ich spreche hierbei von der Metrik des C.R.A.P.-Index, den ich persönlich sehr praktikabel finde, auch sehr gerne nutze, aber wie gesagt, der ist noch nicht in allen Tools verfügbar. Der C.R.A.P.-Index hat als Ausgangspunkt sowohl die zyklomatische Komplexität als auch die Testabdeckung einer Methode. Das Ziel ist dabei, dass wir diese beiden Metriken so miteinander verbinden, dass sich eine praktikable Metrik ergibt. Also eine Metrik, die uns in der Praxis hilft und nicht einfach nur einen nicht nachvollziehbaren Zahlenwert zur Verfügung stellt. Denn das Problem ist, wenn wir eine Methode wie diese haben hier, bei der im Default-Zweig eine Exception geworfen wird, dann ist es nur schwer beziehungsweise nicht unbedingt ökonomisch sinnvoll, diesen Default-Zweig auch zu testen. Das sind Tests, die pflegen müssen, die die Menge an Tests erhöhen und damit deren Lesbarkeit verändern beziehungsweise den Aufwand bei Refaktorisierung auch erhöhen. Warum also diese Tests schreiben? Also das Ziel des C.R.A.P.-Index ist es demnach, dass wir anhand der Codeabdeckung und der Komplexität einer Methode ermitteln können, ob diese mittlerweile so komplex und so schlecht mit Tests abgedeckt ist, dass wir nahezu keine Änderungen mehr daran vornehmen können, ohne dass irgendetwas kaputt geht. Der C.R.A.P.-Index einer Methode, also das "m" steht an dieser Stelle für Methode, nutzt die zyklomatische Komplexität zum Quadrat dieser Methode, "CC" steht also für zyklomatische Komplexität und zieht von dieser die Codecoverage ab und verrechnet sie erneut mit der zyklomatischen Komplexität. Auf die Weise entsteht ein Zahlenwert, der einen Maximalwert nicht überschreiten sollte. Nehmen wir hier als Beispiel, wir haben eine Komplexität zwischen 0 und 5. Dann müssen wir rein theoretisch noch keine Tests schreiben, weil die Komplexität der Methode nicht so groß sein sollte, dass dann Änderungen zu Problemen führen. Der Schwellwert wird also nicht erreicht, als Schwellwert wird hierbei die Zahl 30 angenommen. Man sieht schon, wenn man eine Komplexität von zehn hat und das ist schon recht hoch, dann bräuchte man mindestens eine Testabdeckung von 42 %, damit der Schwellenwert nicht erreicht wird. Mit einer CC von 15 sind es entsprechend 57 % und ab einer Komplexität von 31 ist die Methode derart komplex, dass sie unbedingt aufgespalten werden sollte. Bitte beachten Sie an dieser Stelle, dass das nur Daumenregeln sind. Worauf ich hinaus möchte bei der Vorstellung des C.R.A.P.-Index, ist, dass es nicht unbedingt darum geht, dass wir 100 % Testabdeckung bekommen, sondern, dass wir uns eine Art Schwellenwert schaffen müssen, an der wir entscheiden, ob wir genügend Tests geschrieben haben oder nicht. Obwohl wir keine 100 % erreichen können, ist es durchaus sinnvoll, möglichst viele Tests vorliegen zu haben. Und der C.R.A.P.-Index erlaubt uns eine Aussage darüber, ob wir dieses "viel" schon erreicht haben.

Grundlagen der Programmierung: Codemetriken

Lernen Sie Methoden, Prinzipien und Werkzeuge kennen, mit deren Hilfe Sie die Qualität Ihrer Software dauerhaft sicherstellen können.

1 Std. 43 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!