Automatyzacja negatywnych scenariuszy jest nieodłączną częścią pełnoprawnego systemu testowania. To są kontrole, podczas których walidowana jest odporność systemu na błędne działania, nieprawidłowe dane, awarie usług i inne nietypowe sytuacje.
Historia pytania:
Wcześniej główną uwagę poświęcano pozytywnym scenariuszom (happy paths), ponieważ łatwiej je automatyzować i utrzymywać. Jednak wymagania dotyczące jakości wzrosły, a coraz więcej błędów pojawia się właśnie na granicach, z błędnymi lub nieoczywiście nieprawidłowymi warunkami. Ich ręczne testowanie szybko się starzeje, a automatyzacja pozwala na śledzenie degradacji.
Problem:
Rozwiązanie:
Kluczowe cechy:
Czy wystarczy tylko sprawdzić, jakie błędy są zwracane podczas testowania negatywnego?
Nie. Ważne jest, aby sprawdzić nie tylko treść błędu, ale również to, że po błędzie nie doszło do zmiany stanu systemu (na przykład, że nie dodano nieprawidłowego wpisu do bazy danych).
Czy należy zautomatyzować wszystkie możliwe negatywne scenariusze?
Nie. Może ich być nieskończoność; należy wydzielić te najprawdopodobniejsze i krytyczne (Boundary Value, Null/Empty, nieprawidłowy typ, SQL injection itp.), a inne w miarę pojawiających się błędów.
Czy można używać tej samej obsługi dla wszystkich negatywnych przypadków?
Nie. Różne negatywne scenariusze wymagają różnych kontroli, obsługi wyjątków i rollbacków, wzorcowe asercje są niewystarczające.
W systemie testuje się tylko ważne scenariusze rejestracji. Rejestracja z pustym emailem nie jest testowana automatycznie. W rezultacie, problem, że można zarejestrować użytkownika z pustym mailem, zostaje zauważony tylko w produkcji.
Zalety:
Wady:
Dla każdego negatywnego scenariusza (brak emaila, nieprawidłowy format, sql injection) istnieje test automatyczny, który wyraźnie sprawdza brak nowego konta i treść komunikatu o błędzie.
Zalety:
Wady: