Czy testy regresji mogą być w pełni automatyczne?

Czy pokrycie 100% przypadków testowych jest możliwe? I czy to w ogóle ma sens?

7/22/2024

Wyobraź to sobie. Wszystkie testy regresji są w pełni automatyczne. Nadchodzi dzień wdrożenia na produkcję. Nie musisz setny raz przeklikiwać tych samych przypadków - całą robotę odwalają automaty. Niestety, nie jest to możliwe (albo i stety, bo brzmi to trochę, jak całkowite zastąpienie testerów 😅), bo wbrew pozorom testy automatyczne nie sprawdzają się w każdej sytuacji. Nawet jeśli są świetnie napisane i na bieżąco aktualizowane.

Testy regresji a automatyzacja

Szybkie przypomnienie - testy regresji są rodzajem testów, których celem jest zapewnienie, że modyfikacje nie wprowadzą nowych błędów lub nie zmienią (niezamierzenie) istniejących funkcji oprogramowania. Zazwyczaj regresja obejmuje powtarzalny zestaw testów wykonywany zgodnie z ustalonym procesem utrzymania jakości - może to być przed każdym wdrożeniem czy cyklicznie np. co tydzień. W ten sposób upewniamy się, że zmiany jednego obszaru oprogramowania nie wpływają negatywnie na pozostałe.

Powtarzalność jest świetnym celem do automatyzacji. Manualne przeprowadzanie żmudnych testów niesie za sobą ryzyko popełnienia błędu - co w konsekwencji może doprowadzić do niewykrycia bugów (tak, tak, chodzi o paradoks pestycydów). Ale automaty się nie męczą i nie mają gorszych dni, więc idealnie sprawdzają się do tego zadania. Są jednak obszary, które człowiek przetestuje po prostu lepiej.

Obszar UX

Przede wszystkim dotyczy to obszaru UX - user experience (doświadczenie użytkownika). Projektowanie UX skupia się na tym, aby interakcja z oprogramowaniem dostarczała pozytywnych wrażeń. Wpływa na to atrakcyjny wygląd czy wygoda w użytkowaniu. Wiecie, to że funkcjonalność działa, nie oznacza, że jest ona przyjazna w użyciu. Czy poniższe rozwiązanie wprowadzania numeru telefonu (czyli wymaganie zostało spełnione) jest wygodne? No niekoniecznie 😄

czy pełna automatyzacja testów regresji jest możliwa?
czy pełna automatyzacja testów regresji jest możliwa?
niezbyt udane wprowadzanie numeru telefonu
niezbyt udane wprowadzanie numeru telefonu

Jasne, automatyczne testy wizualne mogą sprawdzić, czy zmiany w kodzie nie wpłynęły na wygląd aplikacji - chodzi tu o porównywanie screenów i weryfikacje położenia różnych elementów. Ale prawdziwe testy dostępności mogą być wykonane wyłącznie przez człowieka. Automaty nie dają nam pewności, że wybrane funkcjonalności nie tylko spełniają wymagania, ale są też intuicyjne i proste w obsłudze.

Skomplikowane przypadki testowe

Podobnie jest w przypadku skomplikowanych przypadków testowych. Czasami przypadki są na tyle złożone (lub mają dynamiczny charakter), że pokrycie ich automatami jest niezwykle trudne lub po prostu niemożliwe. Wtedy do akcji wkracza człowiek i względnie szybko testuje trudne w automatyzacji ścieżki w oprogramowaniu.

Istnieje wiele potencjalnych problemów, których automatyczne testy mogą nie wykryć, takich jak błędy w bazie danych, problemy wydajnościowe, czy kwestie związane z (wspomnianą wcześniej) dostępnością. Dodam też, że testy automatyczne mogą dawać fałszywe poczucie bezpieczeństwa. Nawet jeśli testy przechodzą pozytywnie, nie oznacza to, że wszystkie aspekty produktu działają poprawnie.

Koszt automatyzacji

Nie ma też co ukrywać, że automatyzacja jest kosztowna. Jej efekty są widoczne dopiero po pokryciu sporej części przypadków - a to oczywiście jest czasochłonne. Z tego względu (szczególnie przy małych lub krótko żyjących projektach) jest ona porzucana na rzecz testów manualnych. Czy to dobre zjawisko? Zależy jak na to spojrzeć. Z jednej strony brak automatów negatywnie wpływa na proces utrzymania jakości (zwiększając szansę na przegapienie błędów w trakcie regresji), ale z drugiej - daje pole do popisu manualnym testerom oprogramowania.

To w takim razie kiedy automatyzować?

No dobra, to kiedy automatyzować? Na to pytanie właściwie odpowiedziałem wcześniej - automatyzacja świetnie sprawdza się przy powtarzalnych i żmudnych testach, gdzie istnieje wysokie ryzyko błędu ludzkiego. Nie uciekajcie więc od Cypressa, Playwrighta czy Selenium 😄 Testy automatyczne niesamowicie zwiększają efektywność procesu utrzymania jakości, a umiejętność ich pisania otwiera wiele dróg w karierze IT.

Kończąc - automatyzacja jest ważnym narzędziem w testowaniu regresyjnym, ale nie powinna być jedynym podejściem. Skuteczne testowanie wymaga również weryfikacji obszaru UX oraz skomplikowanych przypadków związanych z bazami danych, wydajnością czy po prostu dynamicznymi funkcjonalnościami trudnymi w automatyzacji.

Chcesz być na bieżąco? Zapisz się do newslettera!

W każdy czwartek o 10:00 wyślę Ci wiadomość o moich nowych wpisach. Oprócz tego, dorzucę ciekawe artykuły, filmy czy inne materiały ze świata IT - oczywiście, związane głównie z testowaniem oprogramowania. To świetny sposób na naukę i ciągłe zdobywanie wiedzy.

Co więcej, otrzymasz darmowego ebooka - checklisty dla testerów. W środku znajdziesz listy ułatwiające testy użyteczności, funkcjonalności czy zakłóceń w aplikacjach webowych i mobilnych.

Polecane wpisy:

Sprawdź też moje social media:

Dziękuję, że czytasz mojego bloga!

Masz jakieś pytania? Z chęcią odpowiem :)

Radosław Wasik
Radosław Wasik