Ostatnio odszedł od nas gość, który na pełen etat zajmował się tworzeniem testów z wykorzystaniem Selenium (+ Java), w związku z czym pomagam czasem w utrzymywaniu tego cuda. Cały zestaw testów leci codziennie rano i wypluwa z siebie piękny raport z Cucumbera. Moje, oraz sporej części zespołu, spostrzeżenia są póki co takie:
- stworzenie scenariusza testowego trwa długo (webclient musi się przeklikać przez te wszystkie logowania, punkty menu itd., więc każda powtórka trwa)
- jeśli w raporcie wychodzą błędy, to ich analiza jest na ogół czasochłonna (a najczęściej błędy dotyczą samych scenariuszy, a nie systemu)
- co za tym idzie - utrzymanie testów end-to-end w jako-takim stanie i aktualności kosztuje bardzo dużo wysiłku
- trudno oprzeć się wrażeniu, że to narzędzie nie pomogło nam do tej pory (ok. 3 lata) wykryć żadnych poważniejszych błędów
Z jednej strony idea tego rodzaju testów wydaje się być przekonująca, szczególnie w przypadku mikroserwisów. Z drugiej strony manualni testerzy dużo sprawniej i szczegółowiej wyłapują różnego rodzaju bugi, natomiast serwisy zawierające porządne testy jednostkowe i integracyjne na ogół bronią się potem dość dobrze. Ponadto, gdy przypominam sobie wszystkie sytuacje typu
-
oh nein! dlaczego ten test jest na czerwono? aa, znowu ktoś się zalogował jako testowy user i zmienił domyślny język
, lub -
oh nein! aa, tekst w toast message ma na końcu kropkę
, względnie -
oh nein! aa, zmienił się selektor css dla kwoty dodatniej
,
to dostaję palpitacji serca w tej sekundzie.
Co sądzicie o testach end-to-end? Czy warto inwestować w to czas/energię/pieniądze?