top of page

Ponad 1000 testów dla hobbystycznej gry – strata czasu?

Zdjęcie autora: Marcel Dütscher
Marcel Dütscher
2 lip
1 minut(y) czytania

Nasz projekt ma teraz grubo ponad tysiąc automatycznych testów: około 990 po stronie serwera, około 120 w kliencie Unity. Dla projektu rodzinnego brzmi to jak przesada. Jest odwrotnie – i oto dlaczego.


Testy to nasz drugi deweloper. W projekcie jednoosobowym nikt nie powie przy code review: „Czekaj, to psuje wytwarzanie.” Testy są tym kolegą. Każda mechanika gry – przepisy, tlen, głód, zachowanie stworzeń, hasła światów – ma testy uruchamiane przy każdej zmianie. Refaktoryzacja bez strachu to prawdziwa wygrana.


Wystarczająco szybkie, żeby nie irytować. Testów, które trwają kwadrans, nikt nie uruchamia. Dlatego nasza bramka CI jest dwustopniowa: sprawdzenie pull requesta z szybkimi testami trwa dobre trzy minuty; kompletny, wolny zestaw działa potem. Dzięki temu pętla pracy pozostaje żwawa, a pokrycie nie maleje.


Testowanie Unity to osobny temat. Logikę klienta trudno testować w działającym silniku. Nasz trik: główna logika klienta mieszka we własnej bibliotece, która działa bez Unity – testujemy ją headless jak zwykły kod. Tylko to, co naprawdę wymaga silnika, działa jako test EditMode/PlayMode.


Ostrzeżenia to błędy. Nasze CI buduje z „warnaserror”: każde ostrzeżenie kompilatora psuje build. Brzmi pedantycznie, ale zapobiega cmentarzowi ostrzeżeń, w którym w końcu tonie to jedno ważne.


Uczciwy wniosek: pisanie testów kosztuje może jedną piątą czasu rozwoju. Ale każda naprawiona funkcja pozostaje naprawiona – a dla projektu, który ożywa wieczorami po pracy, nie ma nic cenniejszego niż pewność, że weekendowa funkcja nie zepsuła wtorkowej.

Ostatnie posty

Zobacz wszystkie

Komentarze


Komentowanie tego posta nie jest już dostępne. Skontaktuj się z właścicielem strony, aby uzyskać więcej informacji.
bottom of page