Impact Aware Test Maintenance

Automatisierte Analyse, Bewertung und Priorisierung von Test-Auswirkungen bei Code-Änderungen mit KI-gestützter Anpassungsfunktionalität.

Text

Ausgangslage

Software entwickelt sich ständig weiter. Mit jeder Code-Änderung stellt sich die Frage: Welche Tests müssen angepasst werden? Studien zeigen, dass bis zu 50 % des Testaufwands auf manuelle Test-Wartung entfällt. Bei grossen Projekten wird das schnell fehleranfällig und zeitintensiv.

Zielsetzung

Es soll ein Tool entwickelt werden, welches Code-Änderungen automatisiert analysiert um zu erkennen, welche Tests betroffen sind und gleichzeitig zu evaluieren ob ein Anpassungsbedarf besteht. Falls dem so ist, sollen notwendige Anpassungen KI-gestützt vorgeschlagen und angewendet werden können.

Dashbaord

FHNW

Die interaktive Dashboard-Ansicht gibt einen konsolidierten Überblick über alle aus dem diff extrahierten Code-Änderungen, davon betroffenen Tests sowie deren berechnetes Risikolevel.

Schichtarchitektur

FHNW

Die sechs Schichten: Git Integration, AST Analysis, Impact Calculation, Spread Calculation, Risk Classification und CLI, bauen sequenziell aufeinander auf: Vom Git-Diff über die Methoden-Erkennung, Schweregrad- und betroffene Tests bis zur FMEA-Klassifikation und der interaktiven Ausgabe im Terminal.

KI Testanpassung

FHNW

Die Generate-Ansicht listet pro Methode-Test-Paar die KI-gestützte Testanpassungs-Vorschläge an. Mit dem apply-Command wird dieser anschliessend direkt in die zugehörige Testdatei geschrieben.

Ergebnisse

Im Rahmen dieser Arbeit wurde ein hybrider Prototyp zur automatisierten Code Change Impact Analysis entwickelt und evaluiert. Das entwickelte Tool, eine Java-basierte CLI-Anwendung, kombiniert deterministische statische Analyseverfahren mit KI-gestützten Methoden, um bei Code-Änderungen in Java-Projekten automatisch betroffene Unit- und Integrationstests zu identifizieren, zu priorisieren und Anpassungsvorschläge zu generieren

  • Automatische Erkennung von Methoden-Änderungen auf Basis von Git-Diffs, kategorisiert nach ADDED, MODIFIED und REMOVED.
  • Traversierung des Call Graphs zur transitiven Bestimmung aller direkt sowie indirekt durch eine Änderung betroffenen Tests.
  • FMEA-inspirierte Risikoklassifikation der Änderungen, um eine differenzierte Priorisierung zu ermöglichen.
  • Unterscheidung zwischen semantischen Änderungen (verhaltensändernde Breaking Changes, Testanpassung erforderlich) und nicht-semantischen Änderungen (Refactorings, keine Testanpassung nötig).
  • LLM-gestützte Analyse, die Code-Änderungen semantisch bewertet und bei Bedarf konkrete Testanpassungsvorschläge generiert (unterstützte Provider: OpenAI, Claude, Gemini, Ollama)
  • Interaktive CLI-Anwendung mit Befehlen zum Analysieren, Filtern, Visualisieren und Exportieren von Impact-Ergebnissen sowie zum direkten Anwenden generierter Testanpassungen in den Sourcecode.

Das Tool richtet sich an Entwicklerinnen und Entwickler, die bei Code-Änderungen schnell und fundiert einschätzen möchten, welche Tests betroffen sind und wo Handlungsbedarf besteht. Die erweiterbare Architektur stellt sicher, dass das System mit wachsenden Anforderungen wie etwa neuen LLM-Providern, weiterwachsen kann

Technische Schlüsselbegriffe

  • Statische AnalyseAnalyse von AST und Call Graphen um die Reichweite und den Typ von Codeänderungen zu bestimmen
  • Call GraphBaumdarstellung aller möglichen Aufrufebeziehungen im Quellcode
  • FMEASystematische Methode zur Risikoanalyse. Im CLI-Tool adaptiert für die zweidimensionale Risikoklassifikation: Kombiniert Severity und Spread zu den Risikoklassen LOW, MODERATE, HIGH und VERY HIGH
  • SeverityMass für die Schwere einer Code-Änderung basierend auf dem Änderungstyp im AST (z.B. Return-Statement geändert)
  • SpreadMass für die relative Anzahl betroffener Tests einer Code-Änderung basierend auf dem Call Graphen

Kunde

FHNW
Fachhochschule Nordwestschweiz FHNW
Bahnhofstrasse 6
5210 Windisch
https://www.fhnw.ch/

Team

Jorge Gaetano Lopez Diaz
Xeno Suter

Betreuerin
Marting Kropp
Fabian Affolter