Ten post jest Częścią 3 z serii czteroczęściowej. Upewnij się, że sprawdziłeś pozostałe posty w serii, aby zgłębić nasz generator planów biznesowych napędzany przez SI.
Część 1: Jak zbudowaliśmy generator planów biznesowych z wykorzystaniem SI, LangGraph & LangChain
Część 2: Jak zoptymalizowaliśmy generowanie planów biznesowych przez SI: kompromis między szybkością a jakością
Część 3: Jak stworzyliśmy 273 testy jednostkowe w 3 dni bez pisania ani jednej linii kodu
Część 4: Ramka oceny SI — Jak zbudowaliśmy system do oceny i ulepszania generowanych przez SI planów biznesowych
W szybko zmieniającym się świecie rozwoju oprogramowania, rola sztucznej inteligencji rozszerza się poza generowanie kodu na automatyzację testów. Przez intensywne trzy dni w lutym 2025 roku przeprowadziliśmy dogłębne badania w DreamHost, oceniając jak efektywnie SI może samodzielnie pisać testy jednostkowe z minimalną interwencją człowieka. Ten artykuł dzieli się kluczowymi wynikami, metrykami i spostrzeżeniami, które mogą zmienić sposób, w jaki podchodzimy do automatyzacji testów.
Założenie Badawcze
Podstawowy cel był jasny: ocenić, czy SI może niezawodnie tworzyć testy jednostkowe o jakości produkcyjnej bez pisania kodu przez człowieka. To nie była tylko akademicka próba — w DreamHost stosujemy SI, aby „100000x” zwiększyć naszą produktywność w projekcie Planer biznesowy, a to badanie miało na celu przesunięcie tych granic jeszcze dalej. To podejście stanowi znaczące odejście od tradycyjnych przepływów pracy testowania jednostkowego i może dramatycznie wpłynąć na produktywność rozwoju.
Parametry Projektu
W ramach tego badania ustaliliśmy zorganizowaną metodologię:
- Wejście SI: Dostarcz SI kod źródłowy, przykładowe pliki testowe pokazujące wzorce/styl, wymagania testowe oraz kontekst środowiska deweloperskiego
- Ograniczenia Ludzkie: Ogranicz wkład ludzki do wyjaśnień, korygowania błędnych przekonań i dostarczania brakującego kontekstu — bez bezpośredniego pisania kodu
- Skupienie na Pomiarach: Śledź czas do zakończenia, wymagane iteracje, rodzaje napotkanych błędów, jakość wyników, osiągnięty zakres oraz wymagany wysiłek ludzki
Nasze kryteria sukcesu były ambitne, ale niezbędne do zastosowania produkcyjnego:
- 100% pokrycie testami
- Implementacja z typowym bezpieczeństwem
- Przestrzeganie najlepszych praktyk testowania
- Minimalna interwencja ludzka
- Rozsądny czas realizacji
- Łatwy w utrzymaniu kod testowy
Kluczowe Wyniki Badań
W zaledwie trzy dni, nasz zespół dodał 273 nowe testy do projektu Planer biznesowy AI, znacząco zwiększając nasze pokrycie testami. Po analizie wielu implementacji testów generowanych przez SI w różnych usługach i komponentach, wyłoniło się kilka wzorców, które dostarczają cennych wglądów w aktualny stan jednostkowego testowania napędzanego przez SI.
1. Metryki Efektywności
Jednym z najbardziej uderzających wyników było dramatyczne skrócenie czasu wdrożenia:

Oszczędność czasu jest znacząca — większość implementacji testowych została zakończona w ciągu 10 minut, przy szacunkowym ludzkim odpowiedniku 30–60 minut na to samo zadanie. Oznacza to potencjalny wzrost produktywności o 4–6 razy przy rutynowym pisaniu testów.
2. Mocne Strony Testowania SI
W wielu implementacjach pewne zdolności SI wyróżniały się stale:
- Kompleksowe Zabezpieczenia: SI osiągnęła konsekwentnie 96–100% pokrycia kodu przy różnych złożonościach usług
- Rozpoznawanie Wzorców: SI doskonale radziła sobie z rozpoznawaniem wzorców testowych na podstawie przykładów i konsekwentnie je stosowała
- Dostosowanie Do Informacji Zwrotnej: Większość błędów mogła zostać rozwiązana przy minimalnym wyjaśnieniu
- Implementacja Symulacji: SI wykazała silne zdolności w tworzeniu odpowiednich symulacji i oprzyrządowania testowego
- Spójność Struktury: Organizacja testów była zgodna z najlepszymi praktykami, z wyraźnymi wzorcami arrange-act-assert
3. Zauważone Ograniczenia i Wyzwania
Pomimo imponujących wyników, pojawiło się kilka powtarzających się wyzwań:
- Obsługa Typów w TypeScript: Najczęstszym źródłem błędów były niekompletne definicje typów lub błędne założenia dotyczące typów
- Zrozumienie Struktury Projektu: Ścieżki importów i zależności często wymagały korekty przez człowieka
- Zakres Obsługi Przypadków Brzegowych: Podczas gdy podstawowe ścieżki były dobrze pokryte, złożona logika warunkowa czasami wymagała dodatkowych przypadków testowych
- Założenia dotyczące Szablonów: SI czasami czyniło nieuzasadnione założenia dotyczące specyficznych dla aplikacji szablonów lub wzorców
- Wymagania Iteracyjne: Bardziej złożone usługi wymagały więcej wymiany informacji, aby osiągnąć pełne pokrycie
Przypadki Użycia
Przyjrzyjmy się kilku reprezentatywnym implementacjom, aby lepiej zrozumieć te wzorce.
Przypadek 1: Testowanie Eksportu Stałych Prostych
Do testowania plików zawierających głównie stałe eksporty:
- Czas Realizacji: 1 minuta 30 sekund
- Przypadki Testowe: 10
- Pokrycie: 100%
- Powtórzenia: 1 (bez potrzeby poprawek)
- Podejście: Skuteczne wykorzystanie testowania migawkowego dla dużych stałych obiektów
Ten przypadek pokazuje, że w prostych scenariuszach testowych, AI może generować kompletne testy bez iteracji — zasadniczo „doskonałe” za pierwszym razem.
Przypadek 2: Złożona Usługa Z Zależnościami DI
Dla bardziej złożonej usługi z wstrzykiwaniem zależności:
- Czas Implementacji: 4 minuty 50 sekund
- Przypadki Testowe: 5
- Zasięg: 100%
- Iteracje: 2
- Wyzywania: Wdrożenie testu Bootstrap wymagało naprawienia zależności
SI z powodzeniem poradziła sobie z testowaniem wstrzykiwania zależności, wymagając jedynie drobnych dostosowań inicjalizacji kontenera.
Przypadek 3: Bardzo Skomplikowana Usługa o Wielu Gałęziach
Dla najbardziej skomplikowanych testowanych usług:
- Czas Implementacji: 24 minuty
- Przypadki Testowe: 11
- Zakres: 51.26% (poniżej celu)
- Iteracje: 5–6
- Wyzwania: Trudność osiągnięcia pełnego pokrycia gałęzi dla złożonej logiki warunkowej
To przedstawia ważny przypadek graniczny, gdzie SI nadal ma trudności z kompleksowym testowaniem bardzo złożonej logiki rozgałęzionej.
Implikacje dla procesu rozwoju
Te wyniki sugerują kilka zmian w podejściu do wdrażania testów:
1. Zmieniony Proces Pracy
Zamiast pisać testy od zera, wydajniejszym procesem wydaje się być:
- Programista dostarcza kod źródłowy i przykładowe testy do SI
- SI generuje wstępną implementację testów
- Programista dostarcza iteracyjne opinie na temat konkretnych problemów
- SI dopracowuje implementację, aż zostaną osiągnięte cele dotyczące pokrycia
- Programista przeprowadza końcową weryfikację i zatwierdza zmiany
To podejście pozwala programistom skupić się na przeglądaniu jakości testów i przypadków brzegowych zamiast pisania szablonowego kodu testowego.
2. Możliwości Optymalizacji
Kilka praktyk znacząco poprawiło wydajność generowania testów SI:
- Podawanie jasnych przykładów testów w tym samym stylu/wzorze
- Określanie dokładnych wymagań dotyczących testowania na wstępie
- Dołączanie informacji o skomplikowanych typach
- Proaktywne identyfikowanie potencjalnych przypadków brzegowych
- Stosowanie podejść opartych na testach, gdzie SI ma dostęp jednocześnie do implementacji i testów
3. Wpływ Ekonomiczny
Na podstawie porównania czasu wdrożenia SI i szacowanego czasu wdrożenia przez człowieka, potencjalne zyski produktywności są znaczące:
- 70–85% redukcji czasu spędzanego na pisaniu rutynowych testów jednostkowych
- Wyższa spójność pokrycia
- Szybsze cykle informacji zwrotnych podczas rozwoju
- Więcej przypadków testowych przy tym samym wysiłku programistycznym
Spoglądając W Przyszłość: Przyszłość Testowania Napędzanego AI
To badanie jest wstępnym dochodzeniem do tego, co prawdopodobnie stanie się standardową praktyką rozwojową. Kilka trendów wskazuje, dokąd zmierza ta dziedzina:
Przyszłe Możliwości
- Programowanie Zorientowane na Testy: SI może iteracyjnie generować zarówno testy, jak i kod implementacyjny
- Integracja z CI/CD: Automatyczne generowanie i utrzymanie testów podczas procesu kompilacji
- Szkolenie Dedykowanej Domeny: Dostosowywanie modeli do specyficznych baz kodów lub wzorców
- Samonaprawiające Się Testy: SI, które aktualizuje testy, gdy zmienia się implementacja
- Specjalistyczne Modele Testowe: Modele SI specjalnie zoptymalizowane do generowania testów
Pozostałe Wyzywania
Pomimo znaczącego postępu, pozostaje kilka wyzwań:
- Zaawansowane Zarządzanie Stanem: Testowanie komponentów stanowych z złożonymi interakcjami
- Specjalistyczna Wiedza: Testy wymagające wiedzy specjalistycznej lub reguł biznesowych
- Testy Integracyjne: Idąc poza testy jednostkowe do testów integracyjnych i systemowych
- Testy Wydajności: Identyfikacja i tworzenie efektywnych testów wydajności
- Testy Bezpieczeństwa: Wyszukiwanie i wykorzystywanie luk w zabezpieczeniach
Podsumowanie Projektu: Liczby
Oto migawka z tego, co osiągnęliśmy podczas naszego trzydniowego eksperymentu:
- Dodane Testy: Dodano 273 nowe testy (z 22 do 295 łącznie)
- Wskaźnik Sukcesu: ~90% prób osiągnęło pełne pokrycie w 100%
- Czas Implementacji: Średnio 5–8 minut na komponent
- Największy Zestaw Testów: Dodano 273 testy w przybliżonym czasie pracy 6 godzin
- Najszybsza Implementacja: 90 sekund na migawki frameworku z pokryciem 100%
- Najbardziej Złożony Przypadek: Komponent graficzny z 13 zależnościami, ukończony w 5 minut
- Poziom Jakości: Utrzymano jakość kodu na poziomie doświadczonego programisty
- Wkład Ludzki: Zero linii kodu napisanych przez ludzi
Z perspektywy zwrotu z inwestycji szacujemy oszczędność czasu na poziomie 70–80% w porównaniu z ręcznym wdrożeniem, bez kompromisów w kwestii jakości. Jedynym znaczącym problemem była usługa RunsService, gdzie osiągnęliśmy tylko 51% pokrycie z powodu bardzo skomplikowanej logiki rozgałęzień.
Podsumowanie: Praktyczne Rekomendacje
W oparciu o to badanie, zalecamy następujące praktyki dla zespołów chcących wykorzystać SI do testowania jednostkowego:
- Zacznij Prosto: Zacznij od prostych komponentów, które stosują się do ustalonych wzorców
- Podaj Przykłady: Dołącz reprezentatywne przykłady twojego stylu testowania
- Iteracyjne Opinie: Planuj 2–3 cykle informacji zwrotnej, aby osiągnąć optymalne wyniki
- Skup Się Na Przypadkach Krańcowych: Wykorzystaj swoją wiedzę specjalistyczną, aby sugerować przypadki krańcowe, które mogą umknąć AI
- Ustal Jasne Wytyczne: Zdefiniuj, jak powinien wyglądać etap „ukończenia” dla pokrycia testowego i stylu
- Regularne Aktualizacje: W miarę poprawy modeli AI, wracaj do swojego podejścia, aby wykorzystać nowe możliwości
Najbardziej ekscytującym aspektem tej badań jest to, że stanowią one dopiero początek. W miarę rozwoju możliwości SI, potencjał testowania napędzanego przez SI będzie się rozszerzał na bardziej złożone obszary testowania, ostatecznie zmieniając sposób, w jaki podchodzimy do zapewnienia jakości w rozwoju oprogramowania.
To badanie zostało przeprowadzone przez trzy dni w lutym 2025 roku nad projektem DreamHost’s Business Planner, wykorzystując wiele modeli AI, w tym GitHub Copilot, modele GPT OpenAI oraz Claude Anthropic. Środowisko testowe oparte było na usłudze TypeScript z Jest i ts-mockito do testowania, skupiając się na komponentach aplikacji przedsiębiorstwa z rzeczywistego świata. Co najważniejsze, przez cały proces nie napisaliśmy ani jednej linii kodu — cała implementacja testów została wykonana przez AI z jedynie ludzkim nadzorem.
Ten post jest Częścią 3 z serii czteroczęściowej. Nie zapomnij sprawdzić innych postów z tej serii, aby zgłębić nasz generator planów biznesowych zasilany SI.
Część 1: Jak zbudowaliśmy generator planów biznesowych zasilany SI, używając LangGraph & LangChain
Część 2: Jak zoptymalizowaliśmy generowanie planów biznesowych SI: szybkość a kompromisy jakości
Część 3: Jak stworzyliśmy 273 testy jednostkowe w 3 dni, nie pisząc ani jednej linii kodu
Część 4: Framework oceny SI — jak zbudowaliśmy system do oceny i ulepszania generowanych przez SI planów biznesowych