• Software-Modernisierung

KI-gestützte Testgenerierung: Die besten Tools für Software-Modernisierung

Eine hohe Testabdeckung ist essenziell, um Software zuverlässig weiterzuentwickeln. Besonders bei Software-Modernisierung oder der Migration von Legacy-Software können KI-gestützte Tools helfen, Testfälle automatisiert zu generieren. Doch welche Tools liefern wirklich gute Ergebnisse? Wir haben GitHub Copilot, Diffblue Cover, JetBrains AI Assistant und weitere getestet – mit spannenden Erkenntnissen! Erfahre, wie KI die Testautomatisierung verbessern kann und wo man besser manuell nachjustiert. 🔍✨

Einleitung

In der modernen Softwareentwicklung ist eine solide Testabdeckung entscheidend, um die Qualität und Zuverlässigkeit von Anwendungen sicherzustellen. Unser Projekt zielte darauf ab, den Einsatz von KI-gestützten Tools zur automatisierten Testgenerierung zu erforschen.

Gerade bei Software-Modernisierung und der Migration von Legacy-Software ist es oft schwierig, eine umfassende Testsuite aufzubauen. Unser Ziel war es, mit minimalem Aufwand eine Testabdeckung zu erreichen, die manuell nur mit erheblichem Zeitaufwand realisierbar wäre.

Ein LF-Sprint zur Auswahl geeigneter Tools und Projekte wurde durchgeführt. Jedes Tool wurde von einem LF-Teilnehmer an verschiedenen Testprojekten getestet. Die Testprozedur umfasste das Ermitteln von Metriken, das Löschen bestehender Tests, das Generieren neuer Tests und die Beurteilung der Testqualität.

Der Testprozess: So sind wir vorgegangen

Der generelle Ablauf des Projekts war wie folgt:

  • Testprojekt vorbereiten: Zunächst wurden bestehende Testprojekte ausgecheckt und die aktuellen Testmetriken (wie Test-Coverage, Test-Stärke und Mutation-Coverage) mittels PiTest erfasst.
  • Tests entfernen: Alle vorhandenen Tests wurden entfernt, um einen neutralen Ausgangspunkt für die KI-generierte Test-Erstellung zu schaffen.
  • KI-Testgenerierung: Verschiedene KI-Tools wurden angewendet, um automatisch neue Tests zu erstellen.
  • Erneute Analyse: Nach der Generierung wurden die neuen Tests wieder mit PiTest (erfahre mehr über Pi-Test in unserem Blogartikel) und SonarQube hinsichtlich Metriken und Codequalität bewertet.
  • Ergebnispräsentation: Abschließend wurden die Resultate in einem gemeinsamen Meeting diskutiert.

Gerade in CI/CD-Pipelines kann eine zuverlässige Testautomatisierung helfen, Fehler frühzeitig zu erkennen und den Entwicklungsprozess effizienter zu gestalten.

Die getesteten Tools

Im Projekt wurden vier unterschiedliche Ansätze zur Testgenerierung untersucht:

GitHub Copilot

GitHub Copilot agiert als intelligenter Pair Programmer, der direkt in der Entwicklungsumgebung Vorschläge macht.

Vorteile

Gute Abdeckung von Edge Cases und Unterstützung beim initialen Setup, vor allem durch hilfreiche Mocking-Vorschläge.

Nachteile

Die generierten Tests waren oft nicht sofort lauffähig und erforderten manuellen Anpassungsaufwand.

JetBrains AI Assistant

Dieser Assistent integriert sich nahtlos in die IDE und generiert auf Basis von AI-basierter Analyse automatisch Unit-Tests.

Vorteile

Spart erheblich Zeit im Vergleich zur manuellen Test-Erstellung und bietet eine intuitive Benutzerführung.

 

Nachteile

Eignet sich weniger für die komplette automatisierte Test-Erzeugung eines gesamten Projekts, da einige manuelle Eingriffe weiterhin notwendig sind.

 

Gemini

Gemini überzeugt durch eine schnelle Testgenerierung – in nur 10 Minuten konnte eine Teststärke von 79 % erreicht werden.

Vorteile

Sehr effiziente Testgenerierung mit beachtlichen Metriken in kurzer Zeit.

 

Nachteile

Aufgrund von Lizenzrestriktionen konnten nur wenige Tests erzeugt werden, was den Anwendungsbereich einschränkt.

 

Randoop

Randoop setzt auf eine randomisierte Testgenerierung, die ohne großen AI-Einsatz arbeitet und Wegwerftests auf Basis von JUnit4 erstellt.

Vorteile
  • Automatisierte Erzeugung diverser Testfälle durch zufällige Methodensequenzen; nützlich, um unerwartete Edge Cases aufzudecken.
  • Randoop produziert in kurzer Zeit eine große Anzahl von Testfällen.

 

Nachteile
  • Die Ergebnisse waren im direkten Vergleich oft weniger robust, und die generierten Tests mussten häufig als „Wegwerftests“ eingestuft werden.
  • Keine integrierte JUnit5 Migration
  • Der Klassenpfad muss stets manuell bereitgestellt werden, was in komplexen Projekten mühsam sein kann
  • Die generierten Tests können schwer verständlich und wartbar sein

 

Diffblue Cover

Vorteile
  • Diffblue Cover integriert sich nahtlos in die IDE.
  • Es ist mit Sicherheit das stärkste Tool im Test. Alles was notwendig ist, ist, sich die Tests für ein gesamtes Projekt/Package via Kontextmenüeintrag generieren zu lassen.
  • Die erzeugten Tests überzeugen sowohl in ihrer Funktion als auch in ihrer Lesbarkeit.
  • Diffblue generiert problemlos mehrere hundert Testklassen in kurzer Zeit.
  • Fast alle generierten Tests funktionieren auf Anhieb und ohne Korrektur durch den Entwickler:innen.
Nachteile
  • Negativ zu sehen ist hier lediglich der Preis des Tools, welcher auch in kleinen Teams schnell mal auf über 30.000,– $ pro Jahr steigt.

Fazit: KI hilft – ersetzt aber nicht den Menschen

Der Einsatz von KI-Tools kann die Effizienz steigern und Zeit sparen, jedoch ist die Qualität der generierten Tests stark vom Tool und der Projektkomplexität abhängig. Automatisierte Testgenerierung ersetzt nicht die Notwendigkeit einer manuellen Überprüfung.

Empfehlung für Entwickler:innen & kleine Teams:

Für den kommerziellen Einsatz:
Unternehmen, die eine umfassende und zuverlässige Testabdeckung benötigen, können sich vor allem überlegen, auf leistungsstarke Tools wie Diffblue Cover zu setzen – trotz der hohen Lizenzkosten. Ergänzend dazu können Tools wie JetBrains AI Assistant und GitHub Copilot zum Einsatz kommen, um schnell initiale Testfälle zu generieren, die anschließend manuell verfeinert werden können. Diese Kombination ermöglicht es, den gesamten Entwicklungsprozess effizient zu unterstützen und die Qualität der Software nachhaltig zu sichern.

Für private Nutzer:innen:
Für Einzelentwickler:innen oder kleine Teams, die ihre Projekte testen möchten, bieten sich Tools wie Gemini oder JetBrains AI Assistant an. Diese Tools ermöglichen eine kosteneffiziente, wenn auch weniger umfassende Testgenerierung. Sie sind besonders geeignet, um erste Erfahrungen mit automatisierter Testgenerierung zu sammeln und einzelne Module oder Algorithmen abzudecken, ohne dabei in hohe Lizenzkosten zu investieren.

Übrigens: Alle kursiven Teile dieses Blogartikels wurde von einer KI erstellt – keine Sorge, sie hat nicht vor, die Weltherrschaft zu übernehmen! Unsere KI tippt fleißig, während sie heimlich Kaffee trinkt und auf Urlaub in der Cloud geht. Vielleicht übernimmt sie demnächst auch eure Hausaufgaben – seid also auf der Hut!

PS: Dieser Abschlusstext auch 😉

Hast du näheres Interesse?

Wir freuen uns auf deine Kontaktaufnahme.

Kontakt aufnehmen
Termin vereinbaren
geschrieben von:
Mattias, Andreas, Sascha, Egor, AI
WordPress Cookie Plugin von Real Cookie Banner