[Semester 4] Woche 6 - Testing II & Software Metriken #24
Moritz-Czekalski
started this conversation in
Blogeintrag
Replies: 1 comment 1 reply
|
Guter Blogeintrag! Die Aufschlüsselung der Test-Coverage nach Test-Typen finde ich sehr übersichtlich, und die Einordnung der Branch-Coverage ist ehrlich nachvollziehbar. Zwei Anmerkungen:
Aber auch so muss ich sagen: Ein eigenes Skript zur Prüfung der RFC-Metrik ist ein sehr cooler Ansatz.👍🏻 |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Testing III
Zunächst haben wir diese Woche die krankheitsbedingt aufgeschobenen Test-Coverage aufgeholt:
Die geforderte Coverage über 80% ist für Lines, Statements und Functions erreicht. Branch Coverage liegt darunter, hauptsächlich wegen der vielen alternativen SVG-, Drag-and-Drop- und Editor-Interaktionspfade.
Software-Metriken
1. Zyklomatische Komplexität
Zyklomatische Komplexität misst die Anzahl unabhängiger Ausführungspfade in einer Funktion oder Methode und ist ein Indikator für Wartbarkeit und Testaufwand.
Im Projekt haben wir in
eslint.config.jsdie ESLint-Regelcomplexitymitmax: 10aktiviert; der Linter warnt bei Überschreitung.Befund: Die meisten Frontend-Module liegen unter dem Grenzwert, vereinzelt gibt es jedoch Funktionen mit hoher Komplexität, die refaktoriert werden sollten.
Vorgehen: betroffene Funktionen in kleinere Einheiten zerlegen, Unit-Tests erweitern und die Lint-Checks in der CI als Fehler erzwingen.
2. Kognitive Komplexität
Kognitive Komplexität misst, wie schwer ein Codeabschnitt für Menschen zu verstehen ist.
Je mehr verschachtelte if-Verzweigungen, Schleifen, switches, Bedingungen, Sonderfälle, frühe Returns, komplexe Abläufe,.. vorhanden sind, desto höher wird die Kognitive Komplexität.
Diese Metrik wird in SonarQube gemessen.
Hierbei haben die meisten Klassen einen sehr geringen Wert (<10). Jedoch gibt es auch noch ein paar Dateien mit höheren Werten, bis zu 66.
3. Response for a Class (RFC)
Die RFC‑Metrik misst die Anzahl von Methoden, die eine Klasse direkt bereitstellt, sowie die Methodenaufrufe, die als Reaktion auf Nachrichten an diese Klasse ausgelöst werden. Sie gibt Aufschluss darüber, wie viele verschiedene Antworten ein Objekt liefern kann. Ein hoher Wert deutet auf erhöhte Komplexität, engen Testaufwand und mögliche Kopplungsprobleme hin.
Im Projekt wurde das Skript
frontend/scripts/metrics/rfc.cjseingefügt, das RFC approximiert und Klassen gegen einen Grenzwert (RFC_MAX, Standard: 10) prüft.Befund: Alle Methoden befinden sich unter dem Maximum von 10.
Vorgehen: Klassen mit hohem RFC aufteilen, Schnittstellen klarer trennen und RFC‑Checks in die CI integrieren, um regressionsbasierte Komplexitätszunahme früh zu erkennen.
All reactions