Stabilność testów automatycznych to ważny aspekt pewnego CI/CD i zaufania do automatyzacji.
Historia pytania
Początkowo testy automatyczne uruchamiano ręcznie, a niestabilność nie przeszkadzała zbytnio. Wraz ze wzrostem liczby testów i integracją w pipeline'y, pojawianie się flaky testów (testy, które czasami nie udają się bez widocznych przyczyn) stało się dużym problemem.
Problem
Flaky testy prowadzą do:
Rozwiązanie
Co pomaga:
Przykład użycia czekania:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
Kluczowe cechy:
Czy masowy retry rozwiąże problem flaky testów?
Nie, to tylko tymczasowe "zatkanie dziur". Nie eliminuje przyczyny — tylko maskuje istniejące problemy.
Czy można uruchamiać testy automatyczne tylko w nocy, aby uniknąć problemów z obciążeniem?
Uruchomienie w nocy nie wyeliminuje niestabilności, tylko zmniejszy prawdopodobieństwo; problem pozostanie, trzeba rozwiązać jego przyczyny.
Czy wszystkie flaky testy powinny być natychmiast usunięte?
Nie. Lepiej spróbować zlokalizować przyczynę, naprawić — tylko jeśli nie udaje się osiągnąć stabilności lub to przestarzały, nieaktualny test — usunąć.
Zespół stosował masowy retry testów, które non stop zawodziły. W rezultacie lista "zielonych" testów wzrosła, ale jakość testów automatycznych nie wzrosła — błędy były przepuszczane.
Plusy:
Minusy:
Zespół zidentyfikował i opisał systematyczne przyczyny flaky: nieczyszczone dane, opóźnienia UI, awarie sieciowe. Poprawili architekturę, dodali odpowiednie oczekiwania, skonfigurowali środowisko — liczba niestabilnych testów znacznie spadła.
Plusy:
Minusy: