Testowanie i weryfikacja kodu pisanego przez agentów
ENWeryfikacja kodu pisanego przez agentów polega na zbudowaniu sprawdzeń na tyle silnych, że zielonemu przebiegowi można zaufać bez czytania każdej linii przez człowieka.
Agent otwiera pull request: 600 zmienionych linii i 40 nowych testów, wszystko na zielono. Przeczytanie całości zajmie popołudnie; scalenie po zielonym checku CI to zaufanie testom napisanym przez agenta, który miał sprawić, żeby przeszły. Ta sekcja jest dla developerów i tech leadów, którzy chcą trzeciej drogi: sprawić, żeby sprawdzeniom dało się ufać, a potem oceniać dowody zamiast diffu.
Od której strony o testach zacząć?
Dział zatytułowany „Od której strony o testach zacząć?”Czytaj od góry: mocny zestaw testów, który agent może edytować, niczego nie dowodzi.
| Twoje pytanie | Strona | Dlaczego właśnie tutaj |
|---|---|---|
| Czy te testy w ogóle łapią błędy? | Siła wyroczni | Poprzeczka, na której opiera się reszta. |
| Czy agent może zmienić testy, żeby przeszły? | Ochrona wyroczni | Trzyma decydujące sprawdzenia poza zasięgiem agenta. |
| Jakie testy agent ma pisać na każdej warstwie? | Jednostkowe, integracyjne, API, end-to-end | Testy z kryteriów akceptacji, a nie z kodu. |
| Czy działa uruchomiona aplikacja, a nie tylko kod? | Weryfikacja w przeglądarce przez agenta | Zrzuty ekranu i ślady jako dowód. |
| Czy sam agent działa tak samo po zmianie modelu albo promptu? | Ciągłe ewaluacje | Testy regresyjne harnessu agenta uruchamiane w CI. |
| Co z zachowaniem, którego nie da się uchwycić przykładami? | Testy właściwości, ocena przez model | Niezmienniki, których agent nie obejdzie, i sędziowie oceniający teksty i wygląd według rubryki. |
| Działa, ale czy zostanie utrzymywalne i bezpieczne? | Funkcje dopasowania, wykrywanie slopu, kontrola zależności, bramki jakości | Bramki jakości na erozję, kod wiarygodny, ale błędny, i zmyślone pakiety. |
| Kod nie ma jeszcze testów. | Testy charakteryzacyjne | Utrwal dzisiejsze zachowanie, zanim agent zacznie refaktoryzować. |
| Czy potrzebuję specjalistycznej bramki jakości? | Dostępność, wydajność, bezpieczeństwo, wstrzykiwanie błędów, aplikacje mobilne, dane testowe | Dodaj, gdy wymaga tego produkt. |
Zacznij od audytu wyroczni w jednym module
Dział zatytułowany „Zacznij od audytu wyroczni w jednym module”Wybierz moduł, który agent zmienia najczęściej. Pierwszy prompt mierzy, co łapią jego testy, i niczego nie zmienia.
Jeśli narzędzie mutacyjne nie jest skonfigurowane, instalacja to npm i -D @stryker-mutator/core (Stryker 10.0.0), pip install mutmut (mutmut 3.8.0) albo cargo install cargo-mutants (cargo-mutants 27.1.0); konfigurację opisuje strona siła wyroczni.
Drugi prompt pisze czerwone testy na podstawie wykonywalnych kryteriów akceptacji przed implementacją.
Zapisz pierwszy prompt jako prompts/oracle-audit.md; polecenia bez interakcji poniżej czytają go z tego pliku. Prompty są takie same w każdym narzędziu; różni się sposób ich uruchamiania.
Wklej prompt do interaktywnej sesji claude albo uruchom go bez interakcji. claude -p startuje w trybie uprawnień Manual (od v2.1.285 w trybie auto u zewnętrznych dostawców lub z wyłączoną telemetrią, gdzie decyduje klasyfikator), więc dodaj --permission-mode dontAsk, żeby u każdego dostawcy odrzucać wywołania Bash, o które nie może zapytać, i jawnie zezwól na polecenia testów i mutacji (tu dla projektu JS/TS): claude -p "$(cat prompts/oracle-audit.md)" --permission-mode dontAsk --allowedTools "Bash(npx stryker *)" "Bash(npm test *)" (flagi: 2.1.283; zmiana z v2.1.285: changelog Claude Code, sprawdzone 2026-10-12). Przy prompcie z czerwonymi testami, który zapisuje pliki, przekaż zamiast tego --permission-mode acceptEdits. Żeby agent nie edytował testów przy drugim prompcie, dodaj reguły deny dla ścieżek testowych, jak na stronie ochrona wyroczni. Szczegóły konfiguracji w tym narzędziu: testowanie z Claude Code.
Wklej prompt do interaktywnej sesji codex albo uruchom go bez interakcji: codex exec --sandbox workspace-write "$(cat prompts/oracle-audit.md)"; narzędzia mutacyjne zapisują pliki tymczasowe i raporty, więc w sandboksie tylko do odczytu padną. Sprawdzone na Codex CLI 0.157.1. Szczegóły konfiguracji w tym narzędziu: testowanie z Codeksem.
Wklej prompt do czatu Agenta albo uruchom go bez interakcji w trybie print Cursor CLI (-p, --print), który działa też w GitHub Actions. Cursor nie ma wbudowanej reguły deny dla ścieżek testowych; hook może blokować takie edycje (ochrona wyroczni), ale miejscem egzekwowania jest CI: CODEOWNERS na ścieżkach testowych i wymagany check. Szczegóły konfiguracji w tym narzędziu: wzorce testowania w Cursorze.
Skąd wiesz, że testom można ufać, skoro ich nie czytasz?
Dział zatytułowany „Skąd wiesz, że testom można ufać, skoro ich nie czytasz?”Cztery sygnały zastępują czytanie każdego testu.
| Sygnał | Wystarczy, gdy | Kto odpowiada |
|---|---|---|
| Wynik mutacyjny na zmienionym kodzie | Przeżyte mutanty są wypisane, a każdy jest zabity albo wyjaśniony | Developer, który uruchamia agenta |
| Mapa kryterium → test | Każde kryterium akceptacji ma test z zapisanym czerwonym przebiegiem | Developer; recenzent sprawdza wyrywkowo |
| Ochrona wyroczni | Zmiana testów i konfiguracji CI wymaga zgody właściciela kodu | Tech lead |
| Odsetek niestabilnych testów | Niestabilne testy trafiają do kwarantanny, a nie są ponawiane do skutku | Tech lead |
Te sygnały trafiają do pull requesta jako pakiet dowodów, a recenzent zatwierdza pakiet. Uzasadnienie takiego sposobu pracy znajdziesz w tekście czytanie dowodów zamiast kodu.
Co się psuje, gdy agenci piszą własne testy?
Dział zatytułowany „Co się psuje, gdy agenci piszą własne testy?”Zestaw jest zielony, a błędy i tak trafiają na produkcję. Testy sprawdzają szczegóły implementacji albo mocki. Jak naprawić: uruchom prompt audytowy, a potem każ agentowi zabić każdego przeżytego mutanta asercją na zachowaniu.
Agent poluzował test, żeby przeszedł. W ramach „poprawki” toBe(19.99) zmieniło się w toBeCloseTo(20, 0). Jak naprawić: cofnij zmianę w teście i schowaj ścieżki testowe za regułami deny i CODEOWNERS.
Próg pokrycia stał się celem samym w sobie. Agenci goniący za procentem pokrycia dopisują testy wykonujące linie bez sprawdzania ich. Jak naprawić: zastąp próg pokrycia mapą kryterium → test i wynikiem mutacyjnym na zmienionym kodzie.
Po serii wygenerowanych testów zestaw zwolnił i stał się niestabilny. Jak naprawić: usuń testy, które nie zabijają żadnego mutanta pominiętego przez resztę zestawu, i przenieś do kwarantanny każdy test, którego wynik zmienia się między identycznymi przebiegami.