Problém, který zná každý vývojář
AI asistenti jako GitHub Copilot dnes chrlí kód rychleji, než ho kdo stíhá kontrolovat. Podle průzkumů, na které odkazuje DevOps.com, se průměrná důvěra vývojářů v AI generovaný kód pohybuje jen lehce nad polovinou pětibodové škály. A co je horší — více než polovina vývojářů přiznává, že AI kód nasazuje do produkce bez jediného testu.
Čísla o pokrytí kódu (code coverage) často vypadají na papíře dobře, jenže pod pokličkou bývají dutá: test zkontroluje, že výsledek není null, a tím končí. To je falešný pocit bezpečí, který v éře AI generovaného kódu nabírá na síle.
Co dělá code-testing-generator jinak
Microsoft na tuto mezeru odpovídá specializovaným agentem, který je součástí dotnet-test pluginu v repozitáři dotnet/skills (přes 5 000 hvězdiček na GitHubu). Na rozdíl od holého promptu „vygeneruj testy" prochází celým výzkumně-ověřovacím procesem:
- Průzkum repozitáře — detekuje jazyk, testovací framework, studuje existující testy a jejich konvence. Zjistí, jak repozitář testy spouští a jestli nové testy vůbec najde CI/CD pipeline.
- Škálování podle rozsahu — na jednu metodu stačí přímý průchod. Na celý modul plánuje iterativně, dokud nedosáhne cílového pokrytí.
- Psaní a ověřování za běhu — testy píše od jednoduchých částí kódu ke složitějším. Pokud se něco nezkompiluje, opraví to. Pokud aserce nesedí, čte zdrojový kód a opraví test.
- Kontrola užitečnosti testů — tady přichází klíčová inovace. Agent spouští lehkou formu mutačního testování: záměrně zavádí drobné změny do kódu a ověřuje, jestli testy selžou tak, jak mají. Kontroluje slabé aserce, potvrzuje, že každý požadovaný scénář má odpovídající test, a nakonec spustí celou testovací sadu.
Poslední bod je zásadní. Tichý zabiják — test, který se sice zkompiluje a projde lokálně, ale nikdy neběží v CI, protože ho nikdo nezapojil do solution — je přesně to, co agent předem detekuje a řeší.
Čísla, která stojí za pozornost
Microsoft agenta otestoval na 152 úlohách z reálných repozitářů proti běžnému GitHub Copilotu se stejným modelem. Výsledky z oficiálního blogu .NET týmu:
| Metrika | Specializovaný agent | Běžný Copilot |
|---|---|---|
| Úspěšně dokončené úlohy | 140/152 (92,1 %) | 120/152 (78,9 %) |
| Vágní prompty (89 úloh) | 79 (88,8 %) | 59 (66,3 %) |
| Detailní prompty (63 úloh) | 61 (96,8 %) | 61 (96,8 %) |
| Prompty na konkrétní diff (15 úloh) | 15/15 (100 %) | 0/15 (0 %) |
| Průměrný čas na úlohu | 359 sekund | 380 sekund |
| Vygenerovaných testů | 6 963 | 7 129 |
Klíčové zjištění: agent vygeneroval o 2,3 % méně testů, přitom dosáhl prakticky stejného pokrytí řádků (72,4 % vs. 72,2 %) i větví (49,8 % vs. 49,1 %). Rozdíl není v kvantitě, ale ve spolehlivosti na první pokus.
Největší přínos se ukázal u vágních promptů, tedy přesně u situací, kdy vývojář prostě napíše „vygeneruj testy" a nechá veškeré rozhodování na agentovi. Tam Microsoft zaznamenal pokles selhání o 67 procent. U promptů navázaných na konkrétní změnu kódu (diff) agent splnil všech 15 úloh, zatímco běžný Copilot ani jednu.
Výhoda napříč modely i jazyky
Microsoft testoval agenta s různými modely — Claude Opus 4.8, GPT-5.5 a Claude Haiku 4.5 — a workflow pomohl všem. Největší snížení selhání zaznamenal u Claude Opus 4.8 (o 80 % na C# úlohách). Specializovaný GPT-5.5 se v celkovém benchmarku dostal na 90,1 %, tedy těsně pod Opus a o více než 11 procentních bodů nad běžného Copilota s Opusem.
Agent podporuje dvanáct jazyků: .NET/C#, Python, TypeScript/JavaScript, Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell a C++. V Pythonu více než zdvojnásobil úspěšnost (86,7 % vs. 40,0 %), v Go splnil všech 15 úloh.
Co to znamená pro české vývojáře
Agent je zcela zdarma a open-source pod MIT licencí. Instaluje se přes příkazový řádek GitHub Copilotu:
/plugin marketplace add dotnet/skills /plugin install dotnet-test@dotnet-agent-skills
Je dostupný také v Visual Studio Code a VS Code Insiders (funkce pluginů je zatím v preview). Podpora pro Visual Studio je na cestě.
Pro české firmy, které investují do GitHub Copilotu (individuální licence cca 250 Kč/měsíc, firemní 19 USD/uživatel/měsíc), přináší tento agent konkrétní benefit bez dalších nákladů. V kontextu EU AI Actu, který vyžaduje adekvátní testování vysoce rizikových AI systémů, jde o praktický nástroj, který pomáhá naplnit regulatorní požadavky na kvalitu softwaru — i když samotný agent nespadá do kategorie vysoce rizikových AI systémů, protože funguje jako vývojářský nástroj, nikoliv autonomní rozhodovací systém.
Není to všelék, ale metoda
Mitch Ashley z The Futurum Group pro DevOps.com trefně poznamenal: „Čísla o pokrytí kódu týmům lžou už roky. AI generovaný kód tu lež jen zvětšil." Podle něj není hlavním příběhem model, ale metoda — ověření, že test selže, když se kód rozbije, je důležitější než samotné procento pokrytí.
Na náročnějším benchmarku SWE Atlas, který kontroluje, zda testy skutečně odhalí injektované chyby, dosáhl agent 36,4 % oproti 27,3 % u běžného Copilotu. To je sice stále nízké číslo, ale ukazuje směr, kterým se testování AI kódu musí ubírat.
Agent aktuálně zvládá pouze jednotkové testy. Integrační, end-to-end a výkonnostní testy jsou mimo jeho současný záběr. Microsoft ale naznačuje, že zkoumá rozšíření stejného přístupu i na další typy testování.
Je code-testing-generator od Microsoftu opravdu zdarma?
Ano, je open-source pod MIT licencí v repozitáři dotnet/skills na GitHubu. Potřebujete ale licenci GitHub Copilot (od 10 USD/měsíc pro jednotlivce), protože agent běží jako plugin uvnitř Copilot ekosystému.
Funguje agent i mimo .NET ekosystém?
Ano, přestože vznikl v .NET týmu, je polyglotní. Podporuje Python, JavaScript, TypeScript, Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell i C++. Pro každý jazyk se učí konvence přímo z daného repozitáře.
Jak spolehlivé je mutační testování, které agent používá?
Jde o odlehčenou formu mutačního testování — agent záměrně zavádí malé změny do kódu a ověřuje, že existující testy selžou. Nenahrazuje plnohodnotné mutační testovací frameworky jako Stryker, ale poskytuje rychlou zpětnou vazbu během generování. Na benchmarku SWE Atlas, který měří schopnost testů odhalit reálné chyby, dosáhl 36,4% úspěšnosti — což je o devět bodů více než běžný Copilot, ale pořád je co zlepšovat.