Przejdź do głównej zawartości

Testowanie i debugowanie z Codex

Testowanie i debugowanie z Codex działa wtedy, gdy o tym, co znaczy „gotowe”, decydują testy, a nie model: AGENTS.md podaje polecenia testowe, diagnoza biegnie w trybie tylko do odczytu, każda poprawka zaczyna się od testu, który pada z rozpoznanej przyczyny, a kontrola w CI, poza zasięgiem agenta, odrzuca poprawkę, która przy okazji zmienia testy.

Ta strona jest dla programistów, którzy zlecają Codex pisanie testów i poprawek, oraz dla tech leadów, którzy decydują, czego takie pull requesty muszą dowieść. Znasz ten scenariusz: wszystkie testy przechodzą, a błąd i tak trafia na produkcję, bo nowe testy sprawdzały mocki albo asercję po cichu poluzowano. Polecenia sprawdzono na Codex CLI 0.157.1.

Która strona o testach w Codex odpowiada na twoje pytanie?

Dział zatytułowany „Która strona o testach w Codex odpowiada na twoje pytanie?”
Twoje pytanieStrona
Coś jest zepsute. Jak znaleźć przyczynę i udowodnić poprawkę?Debugowanie i polowanie na błędy z Codex
Jak domknąć luki w pokryciu testami, które łapią prawdziwe błędy?Generowanie i uruchamianie testów z Codex
Jak mocny musi być zestaw testów, żebym ufał testom, których nie czytałem?Jak silna jest twoja wyrocznia?
Jak powstrzymać agenta przed edytowaniem kontroli, które go oceniają?Ochrona wyroczni
Źle działa sam Codex: zawieszone zatwierdzenia, błędy piaskownicyJak wyjść z kłopotów z Codex

Praktyki niezależne od narzędzia: testowanie we wszystkich narzędziach.

W jakiej kolejności skonfigurować testowanie z Codex?

Dział zatytułowany „W jakiej kolejności skonfigurować testowanie z Codex?”

Każdy krok usuwa jeden sposób, w jaki zielony wynik może kłamać.

  1. Wpisz polecenia testowe do AGENTS.md. Podaj trzy polecenia testowe i jedną regułę, jak niżej. Od wersji 0.150.0 niezaufany projekt nie dostarcza swojego AGENTS.md, więc najpierw oznacz repozytorium jako zaufane. Więcej w konfiguracji AGENTS.md dla Codex.

    ## Testing
    - One file: `npx vitest run path/to/file.test.ts`
    - Tests related to a change: `npx vitest related --run <changed files>`
    - Full suite: `npm test`
    - Never edit a test to make it pass; if one looks wrong, stop and say why.
  2. Diagnozuj tylko do odczytu. Przy błędzie uruchom codex -c default_permissions=":read-only", żeby nic się nie zmieniło, dopóki Codex nie wskaże jednej przyczyny jako pliku, linii i warunku. Profile uprawnień to mechanizm zalecany przez OpenAI (beta, Codex CLI od 0.138.0); --sandbox read-only to jego starszy odpowiednik. Użyj jednego albo drugiego, nigdy obu naraz: według OpenAI tych dwóch mechanizmów nie da się łączyć. /plan sprawia, że Codex odpowiada planem, ale tryb tylko do odczytu wymusza wyłącznie profil.

  3. Udowodnij, zanim naprawisz. Nowy test musi paść z rozpoznanej przyczyny, zanim powstanie poprawka; jeśli nie pada, diagnoza jest błędna. Poprawkę rób we własnym worktree (codex --worktree albo /worktree w sesji), żeby nieudana próba nic nie kosztowała.

  4. Automatycznie przekazuj agentowi wyniki testów. Hooki Codex (stabilne w 0.157.1) obejmują zdarzenia PostToolUse i Stop, więc hook może uruchomić powiązane testy po edycji albo szybki zestaw na koniec tury. Hooki wymagają zapisanego zaufania: zatwierdź je raz poleceniem /hooks, inaczej nie zostaną uruchomione (pomija to tylko flaga --dangerously-bypass-hook-trust, przeznaczona dla sprawdzonej automatyzacji). Rejestracja i hook blokujący koniec tury przy czerwonych testach: hooki agentów.

  5. Zablokuj testy poza sesją. „Nie edytuj testu” w prompcie to prośba, a nie kontrola. Blokadą jest kontrola w CI, która odrzuca gałąź z poprawką zmieniającą testy lub snapshoty bez zgody właściciela, plus ścieżki testów w CODEOWNERS. Pełna konfiguracja: ochrona wyroczni.

Jak uruchomić ten prompt bez nadzoru przez codex exec z profilem tylko do odczytu, opisuje strona Codex bez interakcji.

Skąd wiesz, że testy i poprawki od Codex są dobre, bez czytania każdej linijki?

Dział zatytułowany „Skąd wiesz, że testy i poprawki od Codex są dobre, bez czytania każdej linijki?”

Czytaj dowody; diff otwieraj tylko tam, gdzie wskazują.

DowódCzego dowodziKto odpowiada
Nazwy testów zatwierdzone przed generowaniemZestaw obejmuje zachowania, na których ci zależyProgramista
Nowy test był czerwony, z podanej przyczyny, przed poprawkąTest wykrywa błąd, który ma wykrywaćProgramista
Pliki testów i snapshoty bez zmian w diffie poprawkiNikt nie przeszedł testów, osłabiając jeKontrola ścieżek testów w CI
Lista przeżywających mutantów, każdy rozpatrzony (test mutacyjny)Zestaw łapie wstrzyknięte błędy, a nie tylko dzisiejszy kodRecenzent
Pełny zestaw testów, typy i lint zielone w CIDotychczasowe zachowanie nadal działaCI

Co pull request dołącza, definiuje pakiet dowodów; dlaczego dowody wygrywają z diffem, wyjaśnia czytanie dowodów zamiast kodu, a w praktyce pokazuje naprawa sterowana testami.

Co idzie źle, gdy Codex testuje i debuguje własną pracę?

Dział zatytułowany „Co idzie źle, gdy Codex testuje i debuguje własną pracę?”
ObjawPrzyczynaJak wyjść
Testy zielone, błąd na produkcjiTesty sprawdzają mocki, a nie zachowanieDodaj test integracyjny na styku modułów; uruchom test mutacyjny z generowania testów
Poprawka przechodzi, bo zmieniła asercję albo snapshotNic poza sesją nie pilnowało plików testówCofnij zmianę w teście; dodaj kontrolę ścieżek testów w CI i wpisy w CODEOWNERS
Codex ignoruje twoje polecenia testoweProjekt jest niezaufany, więc jego AGENTS.md nie został wczytany (od 0.150.0)Oznacz repozytorium jako zaufane; zapytaj Codex, jakie instrukcje wczytał
Codex edytuje pliki w trakcie diagnozySesja działała z piaskownicą z prawem zapisuUruchom ją ponownie z profilem :read-only; cofnij zmienione pliki przez git restore albo porzuć worktree
Diagnoza brzmi sensownie, ale nowy test pada inaczejNie rozdzielono dwóch prawdopodobnych przyczynUznaj diagnozę za obaloną; poproś o dowód, który wyklucza każdą z przyczyn

Testowany kod powstaje na etapie budowania z Codex, a to, czego dowiodły testy, trafia dalej przez code review i wdrożenie z Codex. Gotowe narzędzia: skille do testowania i debugowania. Ten sam etap w innych agentach: Claude Code i Cursor.