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, luboh nein! aa, tekst w toast message ma na końcu kropkę, względnieoh 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?