Formularze wieloetapowe (wizard, multi-step forms) to powszechne zjawisko podczas rejestracji, konfiguracji konta, długich procesów biznesowych (np. ubieganie się o kredyt lub zamawianie usług). Ich ręczne testowanie jest podatne na błędy i wymaga dużo czasu; automatyzacja oszczędza siły i zapewnia pokrycie wszystkich "kątowych" scenariuszy.
Historia pytania: Od momentu pojawienia się kreatorów i długich formularzy, takie scenariusze były najczęściej pokrywane tylko ręcznym testowaniem. Dzięki pojawieniu się frameworków takich jak Selenium, Cypress i Playwright możliwe stało się automatyczne powtarzanie skomplikowanych wieloetapowych historii, co znacznie zwiększyło stabilność oprogramowania i zmniejszyło liczbę regresyjnych wad.
Problem: Kreatory i długie formularze często są zmieniane w logice (pojawiają się/znikają etapy, zmieniają się warunki walidacji, pojawiają się dynamiczne pola). Ważne jest, aby zachować stabilność testów przy takich zmianach. Główne problemy: kruchość lokalizatorów z powodu dynamicznej natury kroków, prawidłowe działanie przejść między krokami, zarządzanie danymi testowymi, emulacja błędów użytkownika oraz klikanie w nieliniowe scenariusze z powrotami i zmiennym stanem.
Rozwiązanie: Używany jest wzorzec Step Object (rozszerzenie Page Object), który pozwala oddzielić logikę pracy z każdym krokiem na oddzielne encje. W testach konieczne jest zaimplementowanie przejść we wszystkich możliwych scenariuszach, w tym powroty i nieprawidłowe dane. W celu zwiększenia stabilności stosuje się dynamiczne oczekiwania i metody wyszukiwania elementów, które nie są zależne od pozycji na stronie. Dane testowe są strukturyzowane w taki sposób, aby kompleksowo pokrywać wszystkie rozgałęzienia logiki.
Kluczowe cechy:
Pytanie 1 pułapka
"Czy wystarczy pokrywać tylko happy path (główne scenariusze użytkownika), jeśli forma jest stabilna?"
Odpowiedź: Nie, często błędy pojawiają się właśnie w przetwarzaniu nieoczekiwanych scenariuszy — powroty, pominięcia kroków, wartości graniczne. Bez nich testy nie zapewnią pełnej pewności co do stabilności.
Pytanie 2 pułapka
"Czy można zrealizować przejścia między krokami tylko za pomocą przejścia przez URL?"
Odpowiedź: Nie zawsze. Wiele kreatorów używa dynamicznych tras lub jest zarządzanych tylko wewnętrznym stanem JS, dlatego konieczne jest naśladowanie kliknięć i interakcji jak prawdziwy użytkownik.
Pytanie 3 pułapka
"Zarządzanie danymi testowymi nie odgrywa istotnej roli, jeśli wszystkie kroki są obowiązkowe i statyczne?"
Odpowiedź: Błędnie. Nawet w przypadku statycznych formularzy różne wypełnienie danych może wywołać zupełnie różne reakcje, pojawienie się wskazówek, błędów, dynamicznych podpowiedzi.
W automatyzacji procesu aplikacji bankowej napisano jeden test end-to-end na happy path, bez powrotów i błędów. Przy zmianie jednego z kroków (dodanie dynamicznego bloku) test nie tylko przestał przechodzić, ale także nie wychwytywał błędów w powrocie do poprzedniego kroku lub przetwarzaniu niepoprawnych danych.
Zalety:
Wady:
Zrealizowano strukturę Step Object, każdy krok był pokrywany oddzielnym testem, symulowano powroty, błędy, przełączanie między różnymi gałęziami. Wszystko było zarządzane przez zestawy danych testowych. Nowe kroki lub zmiany nie niszczyły wartości bazy testowej.
Zalety:
Wady: