Programmierung und Softwareentwicklung

Microsoft startet einen Open-Source-Agenten zur Generierung und Validierung von Unit-Tests

Microsoft hat den Open-Source-Agenten code-testing-generator angekündigt, der in der Lage ist, ein Projekt-Repository zu verstehen, das Test-Framework zu bestimmen, Unit-Tests zu schreiben und deren Erstellung sowie Ausführung zu überprüfen. In einem internen Test mit 152 Aufgaben erreichte der Agent eine Abschlussrate von 92,1 %, gegenüber 78,9 % für das standardmäßige Copilot mit demselben Modell.

2026-07-31
5 Min. Lesezeit
10 Aufrufe
فريق تحرير certi.news
Microsoft startet einen Open-Source-Agenten zur Generierung und Validierung von Unit-Tests

Microsoft hat code-testing-generator angekündigt, einen mehrsprachigen Open-Source-Agenten zur Generierung von Unit-Tests. Der Agent erstellt nicht nur Tests, die korrekt aussehen, sondern lernt zunächst aus dem Projekt-Repository. Anschließend bestimmt er den zu testenden Code, das verwendete Test-Framework, den Ablageort der Dateien sowie die Build- und Ausführungsbefehle, bevor er überprüft, dass die Tests im üblichen Testpfad des Repositorys erkannt werden.

Der Agent ist als dotnet-test-Erweiterung im Repository dotnet/skills verfügbar. Er kapselt den zu testenden Code und erstellt Mocks für externe Dienste und andere Abhängigkeiten. Sein derzeitiger Umfang umfasst keine Integrationstests, End-to-End-Tests, Browser-Tests oder Performancetests.

Er beginnt mit dem Verständnis des Repositorys, bevor er Tests schreibt

Statt direkt mit der Codegenerierung zu beginnen, sucht der Agent nach dem zu testenden Bereich, erkennt die Sprache und das Test-Framework und prüft vorhandene Tests, um herauszufinden, wo neue Tests abgelegt und wie sie geschrieben werden sollen. Außerdem bestimmt er die Build- und Testausführungsbefehle.

Dieser Ansatz hilft, eine Situation zu vermeiden, in der ein neues Testprojekt zwar beim separaten Erstellen und Ausführen erfolgreich ist, aber nicht in die von der Continuous-Integration-Umgebung verwendete Lösung oder den Testbefehl eingebunden wird. Daher untersucht der Agent, wie das Repository Tests erkennt, und stellt sicher, dass die neuen Tests darin erscheinen.

Der Agent wählt abhängig vom Umfang der Anfrage eine Arbeitsebene:

  • Direkt: Den betreffenden Code lesen, die Tests schreiben und anschließend das Ergebnis überprüfen.
  • Ein Durchlauf: Einmalig recherchieren und planen, danach den Plan ausführen.
  • Iterativ: Die Recherche-, Planungs- und Ausführungszyklen wiederholen, um eine umfangreiche Anfrage abzudecken oder ein bestimmtes Abdeckungsziel zu erreichen.

Er überprüft den Nutzen der Tests und nicht nur deren Erfolg

Bei größeren Aufgaben listet der Agent den Code auf, der Tests benötigt, und beginnt mit den einfacheren Teilen, bevor er zu Code mit mehr Abhängigkeiten übergeht. Außerdem ordnet er jedes Verhalten einer Testdatei zu, hält sich an die lokalen Konventionen des Projekts und führt die Tests während der Arbeit aus.

Wenn der erzeugte Code nicht erstellt werden kann, korrigiert ihn der Agent. Ist eine Assertion nicht korrekt, kehrt er zur Quelle zurück und korrigiert den Test. Während der Testgenerierung ändert er keinen Produktionscode. Außerdem vermeidet er Unit-Tests, die externe Adressen aufrufen, Ports öffnen oder von präzisem Timing abhängen.

Vor dem Abschluss führt der Agent eine Reihe von Prüfungen durch. Dazu gehören kleine Änderungen, die die Tests voraussichtlich fehlschlagen lassen – eine vereinfachte Form von Mutationstests –, die Suche nach schwachen oder fehlenden Assertions sowie die Überprüfung, dass für jedes erforderliche Szenario ein Test vorhanden ist. Außerdem erstellt er den gesamten Arbeitsbereich, führt die vollständige Testsuite aus und überprüft, ob der Testbefehl des Repositorys die neuen Tests finden kann.

Ergebnisse des internen Tests

Im jüngsten internen Benchmark schloss der Agent 140 von 152 Aufgaben ab, eine Rate von 92,1 %, gegenüber 120 Aufgaben und einer Rate von 78,9 % für das standardmäßige Copilot bei Verwendung desselben Modells. Microsoft zufolge ging die Zahl der Fehlschläge um 63 % zurück.

Die größten Unterschiede zeigten sich bei vagen Anfragen, die die meisten Entscheidungen dem Agenten überlassen. Der spezialisierte Agent war bei 79 von 89 Aufgaben erfolgreich, gegenüber 59 Aufgaben für das standardmäßige Copilot; die Zahl der Fehlschläge sank von 30 auf 10. Bei detaillierten Anfragen lagen die Ergebnisse dagegen nahe beieinander: Der Agent war bei 61 von 63 Aufgaben erfolgreich.

Bei 15 Aufgaben, in denen Tests für eine bestimmte Codeänderung angefordert wurden, war der Agent bei allen Aufgaben erfolgreich, während das standardmäßige Copilot keine einzige davon erfolgreich abschloss. Bei den gemeinsamen Ergebnissen waren beide Systeme bei 119 Aufgaben erfolgreich, während nur der spezialisierte Agent bei 21 Aufgaben erfolgreich war, nur das standardmäßige Copilot bei einer Aufgabe erfolgreich war und beide Systeme bei 11 Aufgaben scheiterten.

Der Agent erzeugte 6.963 Tests, gegenüber 7.129 Tests für das standardmäßige Copilot. Die durchschnittliche endgültige Zeilenabdeckung betrug 72,4 % gegenüber 72,2 %, die durchschnittliche Branch-Abdeckung 49,8 % gegenüber 49,1 %. Die durchschnittliche Aufgabendauer lag beim spezialisierten Agenten bei 359 Sekunden und beim standardmäßigen Copilot bei 380 Sekunden. Microsoft zufolge entstand der Vorteil durch höhere Zuverlässigkeit und nicht durch die Erzeugung einer größeren Zahl von Tests.

Unterstützung mehrerer Sprachen und Verfügbarkeit der Erweiterung

Die beigefügten Anleitungen umfassen Unterstützung für .NET, Python, TypeScript, JavaScript, Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell und C++. Die Tests zeigten, dass der Agent die Konventionen jedes Repositorys erlernt, anstatt C#-Muster auf alle Projekte anzuwenden.

In einem weiteren Test mit 44 Aufgaben aus dem SWE-Atlas-Benchmark schloss der Agent 16 Aufgaben ab, eine Rate von 36,4 %, gegenüber 12 Aufgaben und einer Rate von 27,3 % für das standardmäßige Copilot. Die generierten Tests bestanden außerdem 550 Fälle und konnten 360 injizierte Fehler erkennen, gegenüber 493 beziehungsweise 316 beim Standardsystem. Microsoft räumt ein, dass dieser Benchmark schwieriger ist und die Abschlussraten darin deutlich niedriger sind.

Die Erweiterung kann in GitHub Copilot CLI verwendet werden. Außerdem ist sie in Visual Studio Code und VS Code Insiders über die Erweiterungsunterstützung verfügbar, die sich weiterhin in der Vorschauphase befindet. Microsoft arbeitet auch an der Unterstützung für Visual Studio. Um die Erweiterung in GitHub Copilot CLI zu installieren, fügt der Benutzer den Erweiterungs-Marktplatz mit dem Befehl /plugin marketplace add dotnet/skills hinzu, installiert sie anschließend mit /plugin install dotnet-test@dotnet-agent-skills, startet die CLI neu und wählt den Agenten code-testing-generator aus.

Nachrichtenquelle
ف
Autor

فريق تحرير certi.news

Aus derselben Kategorie

Das könnte Sie interessieren

Alle Nachrichten anzeigen