TNG KI UnitTestGen
Automatisierte Unit-Test-Generierung für Java, Kotlin, C# und TypeScript
Unser TNG AI UnitTestGen Tool generiert automatisch Unit-Tests für Projekte in Java, Kotlin, C# und TypeScript. Durch die Nutzung von Large Language Modellen (LLMs) erstellt es Tests, die auf der Logik des Quellcodes basieren. So wird sichergestellt, dass Änderungen an der Codebasis die Funktionalität nicht unbeabsichtigt verändern.
Funktionsweise
Unser Ansatz nutzt Feedback-Schleifen aus Kompilierung und Ausführung der generierten Tests, um deren Funktionalität zu gewährleisten. Dieser Prozess verläuft vollständig autonom, d. h. ohne Eingriff einer Entwicklerin oder eines Entwicklers. Die Ausführung des generierten Codes erfolgt in einer isolierten Docker-Umgebung, wodurch potenzielle Risiken durch die Ausführung von LLM-generiertem Code minimiert werden. Das Tool beschafft automatisch den notwendigen Kontext für den zu testenden Code und stellt sicher, dass das LLM alle relevanten Informationen aus dem Repository erhält. Erweiterungen für JetBrains IDEs und VS Code vereinfachen die Einrichtung und optimieren den Workflow direkt im bevorzugten Editor.
Unser Tool unterstützt Java (mit Maven und Gradle), Kotlin (mit Gradle), C# (mit .NET 6 und höher) sowie TypeScript (mit den Paketmanagern npm und pnpm und den Testframeworks Vitest und Jest).
Wesentliche Vorteile
TNG AI UnitTestGen übertrifft andere LLM-basierte Ansätze für die Testgenerierung unter der Berücksichtigung folgender Aspekte:
Unabhängigkeit von manueller Aufsicht: Die Unit-Test-Generierung kann effizient und vollständig unabhängig von manueller Steuerung durch Nutzerinnen und Nutzer ablaufen.
Qualitätssicherung: Wir bewerten die Qualität der generierten Tests nicht nur anhand der Code-Abdeckung, sondern zusätzlich durch Mutationstests.
Sicherheit und Isolation: Durch die Ausführung des generierten Codes in einer Docker-Umgebung stellen wir einen sicheren und effizienten Testgenerierungsprozess sicher. Lediglich die finale Testversion erfordert eine manuelle Überprüfung.
Effizienz: Interne Benchmarks haben gezeigt, dass unser Tool vergleichbare Ergebnisse wie andere Ansätze erzielt, jedoch in deutlich kürzerer Zeit (30-50 % der Laufzeit) und mit weniger Eingabetokens (<50 %).
Erkennung unzureichender Abdeckung: Ein optionaler, erster Analyse-Schritt zeigt, welche Test-Suiten erweitert werden sollten und für welche Teile des Quellcodes Tests übersprungen werden können.
TNG AI UnitTestGen unterstützt Entwicklerinnen und Entwickler dabei, robuste und zuverlässige Software zu erstellen, indem ein zentraler, jedoch mühsamer Bestandteil des Entwicklungsprozesses automatisiert wird. So bleibt mehr Zeit für andere Aspekte der Projektentwicklung.
Mutationstests
Unser Tool nutzt Mutationstests, um die tatsächliche Effektivität der Tests in Bezug auf die Logik des Quellcodes des Users zu bewerten. Dabei werden sowohl die Codeabdeckung als auch die Testqualität berücksichtigt. Beispielsweise können Tests ohne Assertions zwar einen Großteil des Codes abdecken, aber dessen Funktionalität nicht überprüfen. Mutationstests prüfen, ob eine Änderung des Quellcodes die Testresultate verändert. So wird sichergestellt, dass die Tests umfassend sind und über einfache Ausführungsmetriken hinausgehen.
CLI-Workflow
Folgende Abbildung zeigt einen typischen CLI-Workflow zur Generierung einer Unit-Test-Suite mit TNG AI UnitTestGen. Der Prozess beginnt damit, das Repository in ein temporäres Verzeichnis zu kopieren, um sicherzustellen, dass die ursprüngliche Codebasis während der Generierung nicht verändert wird. Anschließend wird die angegebene Datei aufgerufen, auf vorhandene Tests überprüft und – da keine gefunden werden – eine neue Test-Suite von Grund auf erstellt. Die erste Version der Suite lässt sich nicht kompilieren, daher führt TNG AI UnitTestGen mehrere Korrektur- und Kompilierungszyklen durch, bis alle Kompilierungsfehler behoben sind. Daraufhin werden die Tests ausgeführt, eventuelle fehlschlagende Tests erkannt und ein zusätzlicher Debugging-Zyklus ausgeführt, bis alle Tests erfolgreich sind. Im Anschluss werden Mutationstests durchgeführt. Nicht beitragende Tests (d.h. solche, die die Mutationsabdeckung nicht verbessern) werden entfernt und die Mutationstests erneut durchgeführt. Da die resultierende Mutationsabdeckung den konfigurierten Schwellenwert von 80 % überschreitet, wird der Durchlauf als erfolgreich betrachtet, und die generierten Tests werden in die ursprüngliche Codebasis transferiert.

Interessiert?
Um Ihnen den Einstieg mit TNG AI UnitTestGen zu erleichtern, bietet TNG begleiteten Zugriff auf das Tool sowie umfassende Unterstützung bei der Integration. Auf Wunsch stellen wir auch Beratungsleistungen durch unser Expertenteam bereit, um einen reibungslosen Übergang zu gewährleisten. Gerne unterstützen wir Sie auch bei der Auswahl des passenden LLM-Backends. Auf Wunsch bieten wir gerne eine auf Ihren Anwendungsfall individualisierte Demonstration an.
Kontaktieren Sie uns unter info@tngtech.com oder über unsere weiteren Kontaktmöglichkeiten, um mehr über unser Tool zu erfahren.