900 testów, 50 minut i nikt im nie ufa
Suite E2E w Cypressie ma 900 testów i trwa 50 minut. Co trzeci pipeline jest czerwony przez losowe błędy, więc ludzie klikają ponowne uruchomienie albo mergują mimo czerwonego. Masz trzy miesiące, żeby to naprawić.
Zanim rozwiniesz: powiedz na głos, jak byś to rozwiązał, i nazwij co najmniej jeden kompromis.
Moje rozwiązanie
Zapisuje się samo w tej przeglądarce. Kopię zrobisz na stronie Notatki.
Pokaż, czego szuka rekruter, i modelową odpowiedź
Co sprawdza rekruter
- Czy mierzysz niestabilność zamiast zgadywać
- Czy kwestionujesz, czy 900 testów E2E jest potrzebnych
- Czy znasz techniki przyspieszenia: równoległość, sharding, izolacja
- Czy przywracasz zaufanie procesem
Odpowiedź seniora
Najpierw dane: zbieram wyniki z ostatnich tygodni i dla każdego testu liczę wskaźnik niestabilności i czas. Zwykle 5% testów odpowiada za większość losowych błędów. Te idą do kwarantanny (oznaczone i uruchamiane osobno, nieblokujące) z właścicielem i terminem naprawy.
Potem piramida: przeglądam, co testy sprawdzają. Walidacje formularzy, warianty komponentów i logika wyliczeń schodzą do testów komponentowych i jednostkowych. E2E zostają dla ścieżek krytycznych, co często daje 150 zamiast 900.
Przyspieszenie i stabilność: sharding na kilka maszyn, przy migracji na Playwright równoległe workery w jednej maszynie, logowanie raz przez storageState zamiast przez UI w każdym teście, dane tworzone przez API, mockowanie zewnętrznych usług. Cel to poniżej 10 minut i niestabilność poniżej 1%. Gdy to osiągniemy, czerwony pipeline znowu blokuje merge bez wyjątków.
Typowe wpadki
- Dodanie automatycznego retry 3 razy jako rozwiązania
- Usuwanie niestabilnych testów bez zastąpienia
- Przepisanie wszystkiego na Playwright bez zmiany podejścia
Dopytają o
- Jak zdecydujesz, które testy usunąć?
- Kto naprawia test w kwarantannie?
- Jak pokażesz postęp zespołowi i managerowi?