Testy automatyczne vs. testy manualne
Testy automatyczne czy testy manualne, oto jest pytanie. Czy w świecie gdzie co raz więcej procesów w tym testów podlega automatyzacji, testowanie manualne posiada jakiekolwiek zalety? Czy świat IT potrzebuje testów manualnych, czy może da się zapewnić odpowiednią jakość tylko i wyłącznie za pomocą automatyzacji?
Dziś we wpisie poruszymy temat poszczególnych zalet i wad automatyzacji oraz testowania manualnego.
Zalety automatyzacji
Odciążenie z powtarzalnych testów
Manualne testy regresji to jedna z największych zmór zespołów testerskich. Wykonywanie tych samych manualnych przypadków dziesiątki razy to często droga do przeoczenia defektu jeśli stanie na naszej drodze. Automatyzacja może odciążyć zespół z tego mozolnego procesu, przez co możemy poświęcić zasoby na bardziej kreatywne i skuteczne metody wyszukiwania kolejnych defektów.
Mniejsze ryzyko błędu ludzkiego
Manualne wykonywanie takich przypadków często może spowodować znużenie i brak czujności testera. Automatyzacja tego aspektu da nam nie tylko większe bezpieczeństwo, ale także większą pewność co do wyników wykonywanych testów.
Szybkość
W przypadku kiedy mówimy o testach automatycznych, należy też wspomnieć o szybkości. Tutaj na każdej warstwie wygra automatyzacja. W zależności od warstwy wyniki testów otrzymamy w milisekundach bądź minutach (maksymalnie godzinach).
Inaczej sprawa wygląda jeśli mówi o testowaniu manualnym, tutaj raczej musimy estymować godziny bądź dni. W zależności od naszych zasobów w dziale oraz ilości przypadków testowych.
Powtarzalność i elastyczność
Zautomatyzowane testy możemy uruchamiać o każdej porze dnia i nocy na dowolnej liczbie wersji/instancji. Pozwala nam to zebrać informację zwrotną o przeprowadzonych testach, na wielu wersjach oprogramowania co może pozwolić naprawić szybciej ewentualne błędy.
Wady automatyzacji
Wysoki koszt inwestycji, aby otrzymać zwrot
Często, aby wdrożyć odpowiednią strategię automatyzacji testów, trzeba zainwestować dużo czasu zespołu w przygotowaniu pod taką organizację projektu oraz oczywiście napisać testy.
Mimo dużej inwestycji z czasem widać zysk w postaci szybszej możliwości tworzenia bezpiecznych wydań czy aplikacji, która zawiera mniejszą ilość błędów.
Zespół testerski/QA potrafiący programować (czasem proces wymaga czasu)
W zależności od organizacji może się okazać, że zespół testerski będzie potrzebował dodatkowych szkoleń, aby osiągnąć poziom pozwalający pisać dobrej jakości testy automatyczne. Taki proces zazwyczaj potrzebuje czasy, aby testy były pisane na odpowiednim poziomie.
Zalety testów manualnych
Odpowiednie wykorzystanie testów manualnych może również pomóc nam w zbudowaniu aplikacji wysokiej jakości. Kluczem do sukcesu w tym obszarze jest położenie nacisku tam, gdzie automatyzacja nie da nam aż tak dokładnego feedbacku.
Wynajdywanie defektów, których automatyzacja nie może znaleźć
Zaoszczędzony czas przez wykonywanie testów automatycznych można poświęcić na testy eksploracyjne czy wykonywanie bardziej kreatywnych przypadków testowych. Takie zachowanie może pozwolić nam na zalezienie w aplikacji wielu defektów które możliwe, że zostałyby przeoczone stosując tylko automatyzację.
Rzeczy, które ciężko zautomatyzować
W przypadku bardzo skomplikowanych systemów może się okazać, że niektóre akcje o wiele sprawniej będzie wykonać i zweryfikować testem manualnym. Warto to rozważyć w obszarach gdzie automatyzacja danego procesu zajęłyby bardzo dużo czasu bądź sam test z różnych powodów mógłby być niestabilny.
Poprawa aspektów apliakcji, które niekoniecznie są opisane w specyfikacji
Czasem tester z doświadczeniem podczas testów manualnych potrafi zasugerować zmiany, które poprawią komfort używania danej aplikacji. Może się to dziać na warstwie UX, logiki i flow w aplikacji. Wszystkie takie drobne zmiany powodują, że końcowemu użytkowniki wygodniej się korzysta z aplikacji, którą wytwarzamy co jest zdecydowanie wpływa na ich zadowolenie
Wady testów manualnych
Możliwość przeoczenia regresji
Szczególnie podczas dużych manualnych testów regresji jesteśmy na to narażeni, że zespół testerski z powodu mozolnego sprawdzania straci skupienie, przez co przeoczy defekt. W tym wypadku często automatyzacja będzie lepszym wyborem w tej dziedzinie.
Konsumpcja czasu
Testy manualne mimo tego, że często dają olbrzymią wartość dla jakości w projekcie, zawsze będą wolniejsze od wykonujących się testów automatycznych. W tym wypadku trzeba mieć tego świadomość i stosować je w miejscach, gdzie mogą dać nam „największy zwrot z inwestycji”.
Testy automatyczne czy manualne?
Moim subiektywnym zdaniem nie ma tutaj zwycięzcy. Aby zapewnić jakość aplikacji oraz szybkie dostarczanie w projekcie potrzebujemy obydwóch rodzajów testów.
Testy automatyczne mogą pozwolić nam na szybkie weryfikowanie regresji czy sprawdzanie w tym samym czasie wielu wersji aplikacji, z kolei manualne wypełnią lukę i zapewnią jakość, których w obszarach, w których nie będą do tego zdolne automaty.
Musimy patrzeć na pryzmat jakości szerzej niż tylko typ testów, jaki stosujemy w projekcie. Warto rozważać zalety i wady każdego z rozwiązań i stosować je odpowiednio do projektu.
A Ty co sądzisz o testach automatycznych i manualnych, uważasz, że projekt może istnieć bez jednych bądź drugich? Daj znać w komentarzu: )
Więcej postów dla początkujących testerów znajdziesz tutaj
Photo by Jason Leung on Unsplash
Jako dev, jestem dużym zwolennikiem automatów, szczególnie od czasu, gdy poznałem cypressa. Fakt że stawianie projektu trwa parę minut i można przystąpić do pisania pierwszych scenariuszy niweluje wcześniejszą wadę nakładu czasu. Pozostaje przystosowanie projektu od strony inicjalizacji danych/sesji. Dodatkowe różne poziomy pisanych testów pozwalają pokryć poboczne scenariusze i tym samym QA może się skupić na znajdowaniu edge case’ow, o których dev nie pomyślał. Tutaj nie widzę innej opcji niż manualne.
Myślę, że dużo tutaj zależy od projektu oraz stanu, w jakim się znajduje. Inną inwestycją będzie pisanie testów do systemu, który przykładowo istnieje kilka lat i nigdy nie posiadał testów (nadrobienie tego aspektu spali dużo czasu) a inną inwestycję poniesiemy w momencie kiedy aplikacja od samego początku miała pisane testy i trzeba je na bieżąco modyfikować/dopisywać.
Ważnym aspektem jest również czy architektura naszej aplikacji spełnia warunek architektury testowalnej, w przypadku braku spełniania tego warunku pojawia się kolejny problem, który może podnieść czas zwrotu z inwestycji.
Co do testerów/QA firmy różnie definiują tą rolę, od sprawdzania edge case’ów po robienie code review testów unitowych.