Programowanie sterowane testami z agentami AI

AI Test Driven Development TDD AI Agents

Czym jest TDD (Test Driven Development)?

U podstaw TDD leży cykliczny proces znany jako Red-Green-Refactor. Cykl zaczyna się od fazy „Red”, w której programista pisze automatyczny przypadek testowy definiujący pożądaną funkcjonalność lub zachowanie. Test ten jest celowo na początku nieprzechodzący, ponieważ odpowiadający mu kod jeszcze nie istnieje. Ta początkowa porażka jest kluczowa, ponieważ zapewnia, że test faktycznie sprawdza zamierzoną funkcjonalność i będzie wyłapywał błędy po implementacji kodu.

Następna faza to „Green”, czyli napisanie minimalnej ilości kodu niezbędnej, aby wcześniej nieprzechodzący test przeszedł. Ta zasada zachęca programistów do skupienia się na bezpośrednim wymaganiu określonym przez test, utrzymania czystości kodu i unikania nadmiarowej inżynierii.

Ostatnia faza, „Refactor”, koncentruje się na poprawie struktury, czytelności i łatwości utrzymania zarówno kodu testowego, jak i produkcyjnego, przy jednoczesnym zapewnieniu, że wszystkie istniejące testy nadal przechodzą. Refaktoryzacja pozwala utrzymać zdrową i elastyczną bazę kodu, gotową na przyszłe zmiany bez wprowadzania regresji, a istniejący zestaw testów stanowi zabezpieczenie w tym procesie.

Jak w pełni zautomatyzować pipeline TDD?

Na wydajność agentów AI podczas kodowania wpływa wiele czynników – od wybranego modelu LLM po sposób organizacji kodu i pipeline’u deweloperskiego. Zauważyliśmy, że TDD jest skuteczne w połączeniu z Windsurf i Claude 3.5 sonnet. Oto przykładowe zadanie zrealizowane w TDD.

Czego potrzebujesz?

Zanim zaczniemy kodować, potrzebujemy następujących elementów:

Wystarczająca liczba testów

Upewnij się, że masz już testy zgodnie z TDD i obejmują one większość zakresu Twojego problemu, który uznajesz za logiczny i pomocny dla agenta AI. Nie musisz nic zmieniać ani dostosowywać specjalnie pod agenta AI. Jeśli Twoje testy i ich nazewnictwo są oparte na standardzie, to jeszcze lepiej. W pierwszym kroku agent AI zobaczy te testy i na ich podstawie rozpocznie implementację.

Oto przykład testu, który sprawdza, czy dokument został poprawnie wstawiony do MongoDB:

MongoDB test example

Interfejsy

Interfejs w Javie (lub innym języku programowania) to struktura określająca, jak powinny wyglądać klasy i jakie metody muszą implementować. Aby jeszcze lepiej poprowadzić agenta AI, warto utworzyć interfejs repozytorium do wstawiania dokumentów:

Java interface example
Java interface code

Szczegółowy opis zadania

Na końcu potrzebujemy konkretnego opisu zadania. Zwykle możesz użyć JIRA lub zgłoszenia na GitHubie, gdzie opisujesz zadanie. Oto nasz przykład:

Task description screenshot

Rozpocznij Vibe Coding

Vibe coding oznacza, że opisujesz to, czego potrzebujesz, w prostym języku angielskim (lub nawet komendami głosowymi), a AI generuje dla Ciebie kod w czasie rzeczywistym. Szczegóły dotyczące Vibe Coding omawiamy w tym wpisie na blogu. Oto prompt, którego użyłem w Windsurf do realizacji zadania:

Prompt example for Windsurf

Zaimplementuj poniższe zapytanie jako kombinację jednego lub więcej zapytań nazwanych oraz kodu Java.

Znajdź wszystkich kierowców, którzy ukończyli co najmniej X kursów z oceną powyżej 5 w określonym przedziale dat i nigdy nie otrzymali oceny poniżej 3 gwiazdek.

Uwaga:
Nie musisz tworzyć jednego zapytania, które rozwiąże to zadanie (możesz użyć kombinacji kodu Java i zapytań nazwanych), ale musisz pamiętać o wydajności ORM, tzn. rozwiązanie powinno być odpowiednio szybkie przy dużej liczbie encji. Podczas sesji dyskusyjnej powinieneś być w stanie wyjaśnić, jakie problemy mogą pojawić się przy źle napisanych zapytaniach.

@Ass1_2_2Test.java#L35-60 to są odpowiadające testy. Zaimplementowano w @DriverDAO.java#L34-63

Wskazanie plików jest najważniejszym aspektem podczas vibe codingu. Teraz możesz usiąść wygodnie i obserwować, jak agent AI wykonuje swoją magię. Zaimplementował klasę, uruchomił testy i powtarzał proces, aż testy przeszły:

AI Agent coding flow

Najczęściej zadawane pytania

Yasha jest utalentowanym programistą specjalizującym się w Pythonie, Javie i uczeniu maszynowym. Yasha pisze artykuły techniczne o AI, inżynierii promptów i tworzeniu chatbotów.

Yasha Boroumand
Yasha Boroumand
CTO, FlowHunt

Zwiększ efektywność rozwoju z agentami AI

Dowiedz się, jak inżynierowie przepływów AI i agenci kodujący FlowHunt mogą zautomatyzować Twój proces wytwarzania oprogramowania dla maksymalnej wydajności i innowacyjności.

Dowiedz się więcej

GPT-5 Codex: Rozwój wspomagany przez AI i autonomiczne kodowanie
GPT-5 Codex: Rozwój wspomagany przez AI i autonomiczne kodowanie

GPT-5 Codex: Rozwój wspomagany przez AI i autonomiczne kodowanie

Poznaj, jak GPT-5 Codex rewolucjonizuje rozwój oprogramowania dzięki zaawansowanym agentowym możliwościom kodowania, 7-godzinnej autonomicznej realizacji zadań ...

15 min czytania
AI Development +3
Codacy MCP
Codacy MCP

Codacy MCP

Zintegruj FlowHunt z serwerem Codacy MCP, aby zautomatyzować zarządzanie jakością kodu, usprawnić przeglądy kodu i egzekwować spójne standardy programistyczne z...

3 min czytania
AI Codacy +3
TouchDesigner
TouchDesigner

TouchDesigner

Zintegruj FlowHunt z TouchDesignerem za pomocą serwera Model Context Protocol (MCP). Włącz automatyzację opartą na AI do tworzenia węzłów, skryptowania i zarząd...

4 min czytania
AI TouchDesigner +3