← Neueste Arbeiten
💻 computer science

LLM-based Mockless Unit Test Generation for Java

Dieser Beitrag stellt MocklessTester vor, einen neuartigen LLM-basierten Ansatz zur Generierung von Mock-freien Java-Unit-Tests, der kontextangereicherte Generierung und durch Constraints erzwungene Korrektur kombiniert, um Halluzinationen und Abhängigkeitsprobleme zu überwinden und auf Benchmark-Datensätzen die Coverage- und Mutationswerte gegenüber dem aktuellen Stand der Technik deutlich zu übertreffen.

Ursprüngliche Autoren: Qinghua Xu, Guancheng Wang, Lionel Briand, Zhaoqiang Guo, Kui Liu

Veröffentlicht 2026-05-27
📖 5 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Qinghua Xu, Guancheng Wang, Lionel Briand, Zhaoqiang Guo, Kui Liu

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

Stellen Sie sich vor, Sie sind Qualitätsprüfer in einer Fabrik, die komplexe Maschinen baut. Ihre Aufgabe besteht darin, eine Checkliste (einen „Test") zu erstellen, um sicherzustellen, dass jeder Teil der Maschine korrekt funktioniert.

In der Welt der Software sind diese Maschinen Java-Programme, und die Checklisten sind Unit-Tests.

Der alte Weg: Das Problem der „falschen Teile"

Traditionell verwenden Prüfer, wenn sie einen bestimmten Teil einer Maschine testen (wie ein Zahnrad), oft nicht den echten Motor oder die echte Kraftstoffpumpe, die damit verbunden sind. Stattdessen verwenden sie Mocks – gefälschte, gummiartige Nachbildungen dieser Teile.

  • Die Analogie: Stellen Sie sich vor, Sie testen einen Automotor, indem Sie einen Pappauschnitt einer Kraftstoffpumpe anschließen. Sie können prüfen, ob sich der Motor dreht, aber Sie werden nie wissen, ob die echte Kraftstoffpumpe verstopft oder defekt ist, da Sie sie nie tatsächlich verwendet haben.
  • Das Problem: Dies ist schnell und einfach, hinterlässt jedoch eine „oberflächliche" Abdeckung. Es werden Fehler übersehen, die auftreten, wenn die echten Teile interagieren.

Die neue Herausforderung: Der Albtraum der „echten Teile"

Die Autoren dieses Papers wollten auf Pappauschnitte verzichten. Sie wollten die echten Kraftstoffpumpen und Motoren testen (echte Abhängigkeiten).

  • Das Problem: Dies ist unglaublich schwierig. Wenn Sie versuchen, eine echte Kraftstoffpumpe anzuschließen, müssen Sie genau wissen, wie man sie anschließt, in welcher Reihenfolge man die Schalter betätigt und welche Art von Kraftstoff zu verwenden ist.
  • Der Kampf der KI: Die Forscher nutzten eine superintelligente KI (ein Large Language Model, oder LLM), um diese Tests zu schreiben. Doch die KI machte ständig zwei Arten von Fehlern:
    1. „Nicht-Wissen": Die KI wusste nicht, wie die echte Fabrik diese Teile tatsächlich anschloss. Sie riet und erstellte gefälschte Verbindungen, die im echten Code nicht existierten.
    2. „Nicht-Befolgen": Selbst wenn man der KI die Regeln sagte (z. B. „Schalten Sie den Schalter vor dem Starten des Motors ein"), ignorierte sie diese manchmal und handelte in der falschen Reihenfolge, wodurch die Maschine explodierte (abstürzte).

Die Lösung: Lernen Sie „MocklessTester" kennen

Das Team entwickelte ein neues System namens MocklessTester. Stellen Sie es sich vor wie einen Meisterprüfer mit einem Super-Notizbuch.

Anstatt die KI einfach zu bitten, einen Test zu schreiben, gibt MocklessTester der KI zwei spezielle Werkzeuge, um ihre Fehler zu beheben:

1. Das Werkzeug „Echtwelt-Beispiele" (Kontextangereicherte Generierung)

Um das Problem des „Nicht-Wissens" zu beheben, durchsucht das System die gesamte Historie der Fabrik.

  • Die Analogie: Anstatt zu raten, wie die Kraftstoffpumpe anzuschließen ist, schaut die KI in das Logbuch der Fabrik, um genau zu sehen, wie andere Arbeiter diese Pumpe in der Vergangenheit erfolgreich angeschlossen haben. Sie kopiert diese echten, funktionierenden Muster.
  • Ergebnis: Die KI hört auf, gefälschte Verbindungen zu erfinden, und beginnt, die echten im Code gefundenen zu verwenden.

2. Das Werkzeug „Strenges Regelbuch" (Einschränkungs enforced Korrektur)

Um das Problem des „Nicht-Befolgens" zu beheben, agiert das System wie ein strenger Sicherheitsinspektor, der die Arbeit in zwei Phasen überprüft.

  • Phase 1 (Der Entwurf): Die KI schreibt einen Test.
  • Phase 2 (Die Prüfung): Bevor der Test akzeptiert wird, überprüft das System ihn gegen drei strenge Regeln:
    • Symbol-Check: „Haben Sie einen Teil erfunden, der nicht existiert?" (Wenn ja, ersetzen Sie ihn durch einen echten).
    • Protokoll-Check: „Haben Sie den Motor gestartet, bevor Sie den Schalter betätigt haben?" (Wenn ja, zwingen Sie die KI, die Reihenfolge zu korrigieren).
    • Speicher-Check: „Haben Sie denselben Korrekturversuch bereits früher unternommen und versagt?" (Wenn ja, versuchen Sie einen anderen Ansatz).
  • Der Twist: Wenn die KI die Prüfung nicht besteht, muss sie eine Begründung verfassen, die erklärt, warum ihre neue Korrektur den Regeln folgt. Dies zwingt die KI, sorgfältig nachzudenken, bevor sie erneut handelt.

Die Ergebnisse: Bessere Tests, etwas mehr Zeit

Die Forscher testeten dieses neue System an zwei Sätzen von Softwareprojekten:

  1. Defects4J: Eine Standard-Sammlung älterer Java-Projekte.
  2. Deps4J: Eine brandneue Sammlung moderner, komplexer Projekte, die die KI noch nie gesehen hatte (um sicherzustellen, dass die KI nicht einfach „betrug", indem sie alte Antworten auswendig gelernt hatte).

Die Erkenntnisse:

  • Tiefere Abdeckung: MocklessTester fand 20 % mehr Fehler und deckte 25 % mehr Codezeilen ab als die bisher beste Methode. Entscheidend ist, dass es tatsächlich die echten verbundenen Teile der Maschine testete, nicht nur das isolierte Zahnrad.
  • Die Kosten: Es benötigte etwas mehr Zeit und „Gehirnleistung" (Computing-Tokens), um dies zu tun. Die KI musste öfter versuchen, es richtig zu machen.
  • Das Urteil: Die zusätzliche Zeit war es wert. Die Tests waren von viel höherer Qualität und fingen reale Probleme auf, die die Tests mit „falschen Teilen" übersehen hatten.

Kurz gesagt

Das Paper zeigt, dass wir durch die Bereitstellung von echten Beispielen dafür, wie Code verwendet wird, und durch das Erzwingen, dass die KI strikte Regeln mit einer zweiten Chance zur Erklärung ihrer Arbeit befolgt, endlich das Testen komplexer Software automatisieren können, ohne sich auf gefälschte, stempelnde „Mock"-Teile zu verlassen. Es ist der Unterschied zwischen dem Testen eines Autos mit einem Pappmotor und dem Testen mit dem echten Ding.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →