Masterarbeit und Full-Stack Developer, 02/2022 bis 10/2024
Unit-Tests automatisch erzeugen mit einem LLM
Masterarbeit bei der INFOMOTION GmbH: ein Maven-Plugin, das Unit-Tests für Java-Spring-Boot-Projekte schreibt
- Testabdeckung
- 9 → 42 %
- mit JaCoCo gemessen
- Schreibaufwand
- 1.440 → 30 min
- je Projekt, gegenüber manueller Entwicklung
- pro Testsuite
- 2,13 €
- statt rund 566 € Entwicklerzeit
Ausgangslage
Unit-Tests für Spring-Boot-Services zu schreiben ist wiederkehrende Arbeit, die Teams aufschieben, weshalb die Abdeckung über die Zeit sinkt. Vorhandene Generatoren erzeugten strukturell gültige, inhaltlich aber leere Tests, und keiner davon griff in den Maven-Build ein, den das Team ohnehin ausführte. Eine Literaturrecherche zu Testwerkzeugen und LLM-Anwendungen in der Softwaretechnik fand keinen Ansatz, der Abdeckungsanalyse, Testerzeugung und Build-Lebenszyklus für Java Spring Boot zusammenbringt.
Lösung
- Nach Design Science Research gearbeitet, mit Relevanz-, Rigorositäts- und Designzyklus, damit das Artefakt gegen ein benanntes reales Problem entsteht und nicht gegen ein gedachtes.
- Prompt-Strategien systematisch entwickelt und verglichen: Zero-Shot, One-Shot und Few-Shot, jeweils daraufhin bewertet, ob kompilierbare und inhaltlich sinnvolle JUnit-5-Tests entstehen.
- UTestGenLLM gebaut, ein Maven-Plugin, das sich in konfigurierbare Build-Phasen einhängt, die Klassen des Projekts analysiert und Tests erzeugt, ohne den normalen Build zu verlassen.
- JaCoCo eingebunden, damit das Plugin die vorhandene Abdeckung liest, ungetestete Klassen und Methoden erkennt und die Erzeugung nach den tatsächlichen Lücken priorisiert statt blind zu generieren.
- Das Modell gegen eine privat in Azure gehostete GPT-Instanz laufen lassen, damit firmeneigener Quellcode keinen öffentlichen Endpunkt erreicht.
- Über mehrere Projekte validiert, mit quantitativen Abdeckungskennzahlen und einer Expertenbewertung.
Ergebnisse
- Die Testabdeckung stieg über die untersuchten Projekte von 9 auf 42 Prozent, gemessen mit JaCoCo
- Der Schreibaufwand für Tests sank je Projekt von 1.440 auf 30 Minuten gegenüber manueller Entwicklung
- Die Kosten pro erzeugter Testsuite fielen von rund 566 € Entwicklerzeit auf etwa 2,13 € API-Kosten
- Prompt Engineering beeinflusst die Qualität erzeugten Fachcodes messbar, nicht nur gefühlt
- Ein wiederverwendbarer Rahmen für die Einbindung von LLMs in Entwicklungsprozesse im Unternehmen
Technologie-Stack
- Java
- Maven
- Spring Boot
- JUnit 5
- JaCoCo
- OpenAI GPT-3.5 und GPT-4
- Azure OpenAI
Ähnliche Prozesse in Ihrem Unternehmen?
Schreiben Sie mir, welcher Ablauf bei Ihnen am meisten Zeit kostet. Den Rest klären wir im Gespräch.
Kostenloses Erstgespräch