Testowanie manualne vs testowanie automatyczne

Sty 14, 2021

Aby jasno i konkretnie opisać korelacje oraz różnice miedzy testami manualnymi a testami automatycznymi, musimy przypomnieć sobie czym konkretnie są te dwie czynności.

Testowanie manualne (inaczej ręczne) jest formą testowania oprogramowania, w której testy są wykonywane ręcznie przez dedykowaną osobę odpowiedzialną za zapewnianie i utrzymywanie jakości oprogramowania (tester manualny). Testowanie manualne wykonywane w celu wykrycia błędów w testowanym oprogramowaniu. W tym procesie testerzy manualni wykonują przypadki testowe i generują raporty z testów. Do przeprowadzenia testów manualnych nie jest wymagane dedykowane oprogramowanie.

Jest to jedna z technik testowania oprogramowania, polegająca na weryfikacji i porównywaniu rzeczywistych wyników z oczekiwanymi.

W celu wytworzenia testów automatycznych wykorzystujemy specjalne stworzone do tego celu narzędzia lub też piszemy skrypty testowe w wybranym języku programowania.

Testy manualne i automatyczne – różnice

Testowanie manualneTestowanie automatyczne
Testy wykonywane przez człowieka
Skrypty testowe uruchamiane są przez dedykowane narzędzia
Wykonywanie testów jest wolniejsze i bardziej czasochłonneSzybsza egzekucja testów
Inwestycja początkowa relatywnie niskaInwestycja początkowa relatywnie wysoka
Mniejsza niezawodność z uwagi na ludzkie wady, niedokładność, zmęczenieWiększa niezawodność, automaty są wolne od ludzkich ograniczeń
Reużywalność – praktycznie nie istniejeWysoka reużywalność skryptów testowych
Znajomość programowania – nie wymaganaZnajomość programowania – wymagana

  • Wykonywanie testów, czyli ich egzekucja w przypadku testowania manualnego wykonywana jest ręcznie przez człowieka, zwykle dedykowanego specjalistę ds. testów – testera oprogramowania (testera manualnego).
    W przypadku testów automatycznych uruchamianie skryptów testowych odbywa się poprzez dedykowane narzędzia oraz różne mechanizmy (triggerowanie, harmonogramy). Możemy tutaj ograniczyć rolę człowieka bądź nawet całkiem ją pominąć. Zatem wykorzystując automatyzację testów – możemy pozwolić sobie na ograniczenie zasobów ludzkich w projekcie lub skupić wysiłki testerów na innych czynnościach.

  • Testowanie manualne jest zwykle znacznie wolniejsze i czasochłonne od działania testów automatycznych. Dzieje się tak dlatego, że interakcja automatów / robotów z aplikacjami odbywa się znacznie szybciej, niż gdy robi to człowiek. Automaty nie tracą czasu na myślenie, czy zastanawianie się. Wykonują swoją pracę znacznie bardziej maszynowo niż człowiek – skomplikowane operacje, obliczenia są nieporównywalnie szybciej wykonywane, co przekłada się na oszczędności budżetowe w postaci czasu, a w konsekwencji również pieniędzy.

  • Wysoka inwestycja początkowa w automatyzację testów – to jeden z minusów całego procesu testów automatycznych. Na początkowo wysoką cenę automatyzacji i robotyzacji składa się wiele czynników, np.: potrzeba zatrudnienia wysoko wykwalifikowanej technicznie kadry testerów automatyzujących. Na rynku panuje wysoki dysonans między zarobkami testerów manualnych i automatycznych. Ci drudzy zarabiają zwykle na poziomie programistów, developerów, czego na pewno nie można powiedzieć o zarobkach testerów manualnych. Do tego dochodzą niezbędne nakłady finansowe na narzędzia i potrzebne licencje produktowe. Testerzy manualni, nie korzystają z tego typu dedykowanych narzędzi. Warto jeszcze wspomnieć, iż do profesjonalnej automatyzacji testów niezbędna jest jeszcze rozbudowana infrastruktura sprzętowa (serwery, maszyny, środowiska) – w testach manualnych nie potrzebujemy, aż tak dużej infrastruktury sprzętowej.

  • Testowanie manualne z definicji jest mniej niezawodne niż w przypadku automatyzacji testów. Dzieje się tak dlatego, iż nawet najlepszy tester jest tylko człowiekiem. Żaden człowiek niestety nie jest wolny od wad. Ryzyko błędów ludzkich rośnie wraz z ilością pracy, przemęczeniem i wypaleniem zawodowym. Człowiek bywa niedokładny, może mieć gorszy dzień, czy po prostu zdarzy mu się coś przeoczyć. Zaprogramowane testy automatyczne są wolne od tego typu ułomności. Nigdy się nie nudzą, mogą wykonywać tysiące iteracji tych samych testów i zawsze wykonają je dokładnie, tak jak zostały do tego zaprogramowane. Nie mają gorszych dni ani nie są obciążone wypaleniem zawodowym. Dlatego niezawodność to ogromna wartość, którą zapewnia poprawnie stworzona automatyzacja i robotyzacja.

  • Reużywalność to cecha testów, która w przypadku testowania manualnego praktycznie nie istnieje. Tester manualny wykonuje swoją pracę ręcznie, bez wykorzystywania specjalistycznego oprogramowania. Możemy wiec w dużym uproszczeniu przyjąć, że testowanie manualne to przeklikiwanie aplikacji przez dedykowane do tego zadania osoby. W takiej charakterystyce pracy wszystkie testy: nawet testy regresji, czy retesty trzeba za każdym razem przeklikać na nowo. Zdarza się, że w dużych projektach, jeden przypadek testowy trzeba przeklikiwać setki razy w różnych odstępach czasu i na różnym etapie projektu. Automatyzacja testów natomiast może nam dostarczyć dużej reużywalności raz napisanych testów. Oznacza to tyle, że raz napisany test może zostać wykorzystany, uruchomiony wielokrotnie na różnych etapach projektu. W ten sposób oszczędzamy czas na ponowne przetestowania danego przypadku testowego. Oczywiście, zwykle tworzenie testu automatycznego trwa znacznie dłużej niż przeklikanie go ręcznie, ale jeśli później musimy wykonać ten test np. 100 razy – to zainwestowany czas w pisanie przypadku testowego zwróci się dużą nawiązką oszczędności budżetowych w postaci czasu i pieniędzy.

  • Tester manualny nie potrzebuje do wykonywania swojej pracy znajomości języka programowania. Testy manualne wykonywane są ręcznie, poprzez przeklikiwanie danej aplikacji. Tester automatyzujący programuje testy, co oznacza, że niezbędna do tej pracy jest umiejętność posługiwania się danym językiem programowania. Pomijam tutaj sprawę nagrywarek testów, które mogą obsługiwać testerzy manualni bez znajomości programowania. Aktualne trendy na rynku testowania oprogramowania są jednak takie, że nawet od testerów manualnych – pracodawcy zaczynają wymagać, chociaż podstawowej wiedzy programistycznej. Jest to oczywiście zrozumiałe, gdyż osoba posiadająca umiejętność kodowania, często znacznie lepiej rozumie budowę i architekturę aplikacji oraz ma większą świadomość błędów i problemów, które zostają wykrywane podczas testowania. Taka osoba również zdecydowanie lepiej komunikuje się z developerami, którzy rozwijają testowaną aplikację. Tester manualny ze znajomością programowania może na własny użytek zautomatyzować sobie pewne nudne zadania, co z pewnością wpływa pozytywnie na efektywność pracy.

Autor: Tomasz Stelmach

Pozostałe:

Selenium WebDriver VS Cypress

Z pewnością Cypress miał mocne wejście w świat automatyzacji testów. Jednak od jego debiutu minęło już sporo czasu. Zamiast rozpychać się na rynku - Cypress widocznie mocno spuścił z tonu.Nie oznacza to jednak, że przestał się rozwijać, gdyż cały...

WOŚP 2021 – Twoje udostępnienie to nasza wpłata!

Od laika do Automatyka - największy w Polsce kurs online o automatyzacji testów, szkolenia, konsulting, doradztwo, usługi audytowe i wdrożeniowe. Dołącz do akcji wsparcia WOŚP Zapraszamy Cię do dołączenia do akcji wspierającej Wielką Orkiestrę Świątecznej Pomocy- 29...

Testowanie aplikacji mobilnych [Część 2]

W poprzednim materiale szczegółowo przedstawiłem aplikacje mobilne, ich typy, wady oraz zalety. Powiedziałem również nieco o testowaniu aplikacji mobilnych na urządzeniach rzeczywistych, emulatorach oraz w chmurze. Dzisiaj chciałbym skupić się stricte na etapach...

Testowanie aplikacji mobilnych [Cześć 1]

O tym, jak ważną rolę odrywania testowanie w całym procesie wytwórczym, nie trzeba już dzisiaj nikogo przekonywać. Ostatnio bardzo dotkliwie brak odpowiedniej jakości testów doświadczyli twórcy gry „CyberPunk 2077”. Długo wyczekiwana światowa premiera gry nie wypadła...