Jaka jest różnica między testowaniem manualnym a automatycznym? [transkrypt]

Dzisiaj postaram się odpowiedzieć na pytanie czym różni się testowanie manualne od automatycznego. No to zaczynamy!

Najpierw odpowiedzmy sobie na pytanie czym jest testowanie manualne?
Otóż testowanie manualne to nic innego jak testowanie oprogramowania, w którym testy są wykonywane w sposób ręczny/manualny przez specjalistów QA. Są one wykonywane oczywiście w celu wykrycia błędów w rozwijanym oprogramowaniu. 

W testowaniu manualnym tester sprawdza wszystkie istotne cechy danej aplikacji lub oprogramowania. W tym procesie testerzy wykonują testy i generują raporty z przeprowadzonych testów, odbywa się to bez pomocy narzędzi do testowania automatycznego. 

Jest to klasyczna metoda wszystkich typów testów i pomaga znaleźć błędy w systemach oprogramowania. Jest ona zazwyczaj prowadzona przez doświadczonego testera w celu przeprowadzenia całego procesu testowego. 

Czym zatem są automatyczne testy?

W skrócie, w zautomatyzowanym testowaniu oprogramowania, testerzy piszą skrypty/kodu/testu, aby zautomatyzować wykonanie testu. Testerzy używają odpowiednich narzędzi automatyki do tworzenia skryptów testowych i walidacji oprogramowania. Celem jest wykonanie testu w krótszym czasie, niż ma to miejsce w przypadku testów manualnych.

Zautomatyzowane testowanie w całości opiera się na tzw. pre-scripted testach, które działają automatycznie, aby porównać rzeczywisty wynik z oczekiwanym. Pomaga to testerowi określić, czy aplikacja działa zgodnie z oczekiwaniami.

Zautomatyzowane testowanie pozwala również na wykonanie powtarzających się zadań i testów regresyjnych bez interwencji testera manualnego. Nawet jeśli wszystkie procesy są wykonywane automatycznie, automatyzacja wymaga też pewnej manualnej pracy w celu stworzenia wstępnych skryptów testowych. 

No dobrze, skoro definicje już mamy, to przyjrzyjmy się teraz bezpośrednim różnicom w testowaniu manualnym i automatycznym. Oczywiście, żeby była jasność –  są to jedynie faktyczne różnice – nie odpowiadam na pytanie, które testowanie jest lepsze 🙂 

Pierwsza różnica polega na tym, że testy automatyczne używają narzędzi automatyki do wykonywania testów. W testowaniu manualnym, przypadki testowe są wykonywane przez osobę (testera oprogramowania). Idziemy dalej.

Testy automatyczne są zdecydowanie szybsze niż testowanie manualne. Testowanie manualne jest czasochłonne i pochłania sporo (że tak brzydko powiem) zasobów ludzkich. 

Testowanie automatyczne nie pozwala na tzw. losowe testowanie, z drugiej strony testy eksploracyjne są możliwe w testach manualnych. 

Początkowy koszt / czy raczej powinienem powiedzieć inwestycja w automatyzację jest wyższa, chociaż sam zwrot późniejszy jest lepszy w dłuższej perspektywie czasu. Z kolei jeśli chodzi o testowanie manualne, to początkowa inwestycja tutaj jest stosunkowo niższa, natomiast zwrot w perspekywie czasu również jest niższy w porównaniu z testami automatycznymi. 

Zautomatyzowane testowanie jest niezawodną metodą, ponieważ jest wykonywane za pomocą narzędzi i skryptów, nie ma również elementu zmęczenia tutaj. Testowanie manualne nie jest tak dokładne ze względu na możliwość wystąpienia błędów ludzkich, czy też zmęczenia. 

Nawet trywialna zmiana interfejsu użytkownika wymaga zmodyfikowania zautomatyzowanych skryptów testowych. W testach manualnych małe zmiany, takie jak zmiana id, klasy itp. przycisku nie przeszkodziłyby w wykonaniu testu.

W testach automatycznych niezbędne są inwestycje w narzędzia testujące oraz specjalistów. W testach manualnych głównie potrzebujemy inwestycji w zasoby ludzkie.

Testy automatyczne są nieopłacalne w przypadku regresji o małej wielkości. Z kolei testy manualne są nieopłacalne w przypadku dużej regresji.

Dzięki testom automatycznym wszyscy interesariusze mogą zalogować się do systemu i na bieżąco sprawdzać stan i wynik testów.  W testowaniu manualnym wyniki testów są zapisywane w narzędziach takich, jak Excel, Jira, Bugzilla, QC itp. ale to testerzy muszą manualnie w miarę na bieżąco uaktualniać wyniki swoich testów. 

Testowanie automatyczne nie wymaga uwzględnienia czynnika ludzkiego. W związku z tym np. nigdy nie jest w stanie zapewnić tzw. user-friendly aplikacji czy też pozytywnych doświadczeń klienta. Testowanie manualne pozwala na obserwację zachowań i odczuć osoby, która może być przydatna, aby system czy aplikacja byla bardziej przyjazna użytkownikowi. 

Testy wydajnościowe, takie jak testy obciążeniowe (Load Testing), przeciążeniowe (Stress Testing),  Spike Testing, muszą być obowiązkowo testowane przez narzędzie automatyzacji. Testy wydajnościowe nie są wykonywane w testowaniu manualnym.

Tak na marginesie, wyjaśnię może czym są wspomniane rodzaje testów. I tak Load Testing, to testy obciążeniowe, czyli np. sprawdzenie jak wiele zapytań jest w stanie obsłużyć system w określonym przedziale czasowym. Stress Testing, to testy przeciążeniowe, które polegają na badaniu czy system zawiedzie w oczekiwany sposób, czy też sprawdzenie konsekwencji utraty danych po awarii wywołanej nadmiernym obciążeniem. No i wreszcie Spike Testing definiuje się jako rodzaj testu wydajnościowego, w którym aplikacja jest testowana z ekstremalnymi przyrostami i spadkami obciążenia. Jest wykonywany w celu oszacowania słabości aplikacji. 

Dobrze, przechodzimy dalej, do naszych różnic. 

Testy automatyczne mogą być wykonywane na różnych systemach i platformach równolegle i skracają one czas wykonywania testów. Testy manualne mogą być wykonywane równolegle, ale trzeba zwiększyć zasoby ludzkie, co jest bardziej kosztowne.

W testowaniu automatycznym można przygotować wiele skryptów testowych do wykonania np. w nocy. Testowanie manualne nie może być wykonywane w ten sposób. 

Wiedza programistyczna jest niezbędna w testach automatycznych, w testach manualnych nie jest wymagana.

Testy automatyczne wymagają bardziej skomplikowanych ustawień do wykonania testów. Testowanie manualne wymaga prostszej konfiguracji do wykonania testu. 

Testy automatyczne są wykonywane przy użyciu narzędzi. Nigdy się nie nudzi. Powtarzalne manualne wykonywanie testów może stać się nudne i przez to podatne na błędy.

Automatyczne testowanie jest przydatne, gdy często wykonuje się ten sam zestaw przypadków testowych. Testowanie manualne jest przydatne, gdy tester musi wykonać test jeden lub dwa razy. 

Testowanie automatyczne nie wiążę się z żadnym ryzykiem pominięcia wcześniej zaplanowanego testu. Testowanie manualne wiąże się z większym ryzykiem niedotrzymania ustalonego wcześniej terminu wykonania testów. 

Testowanie automatyczne działa, jako dokument zapewniający wartość szkoleniową, szczególnie w przypadku zautomatyzowanych testów jednostkowych. Nowy programista może przyjrzeć się przypadkom testowym i szybko zrozumieć podstawy kodu. Przypadki testowe w manualnym podejściu nie zapewniają takiej wartości szkoleniowej. 

OKej, podsumujmy. Jakie są zatem zalety i wady testowania manualnego?

Wady: 

  • mniej wiarygodna metoda testowa, ponieważ przeprowadzana jest przez człowieka, przez co zawsze jest podatna na błędy, niedopatrzenia i pomyłki.
  • ręczny proces testowania nie może być zarejestrowany/nagrany (jak podczas automatyzacji), więc nie jest możliwe ponowne użycie tego testu.
  • w tej metodzie testowania, niektóre zadania są trudne do wykonania manualnego, co może wymagać dodatkowego czasu na przeprowadzenie testów. 

Zalety:

  • uzyskanie szybkiej i dokładnej informacji zwrotnej,
  • mniej kosztowne, ponieważ nie trzeba wydawać pieniędzy na specjalistyczne narzędzia czy procesy,
  • ludzki osąd i intuicja zawsze są korzystne podczas testowania manualnego,
  • podczas testowania małej zmiany, test automatyzacji wymagałby kodowania, które byłoby czasochłonne. Podczas testowania manualnego można to robić na bieżąco.

Okej, to teraz wady i zalety testowania automatycznego…

Wady:

  • bez elementu ludzkiego trudno jest uzyskać wgląd w wizualne aspekty interfejsu, takie jak kolory, czcionki, kontrast czy rozmiary przycisków.
  • narzędzia do przeprowadzania testów automatycznych mogą być drogie, co może zwiększyć koszt całego projektu. 
  • testy automatyczne nie są jeszcze w pełni dowodem, że coś działa poprawnie. Każde narzędzie ma swoje ograniczenia, co redukuje zakres samej automatyzacji. 
  • debugowanie skryptu testowego to kolejny poważny problem w automatycznym podejściu. Utrzymanie testów jest kosztowne.

Zalety:

  • automatyczne testowanie pomaga znaleźć więcej błędów w porównaniu z manualnym.
  • ponieważ większość procesu testowania jest zautomatyzowana, możemy uzyskać szybki i wydajny proces.
  • proces automatyzacji może być rejestrowany. Pozwala to na ponowne wykorzystanie i wykonanie tego samego rodzaju operacji testowych. 
  • jest przeprowadzane przy użyciu narzędzi, więc działa bez zmęczenia, w przeciwieństwie do ludzi. 
  • pomaga łatwo zwiększyć produktywność poprzez szybkie i dokładne wyniki.
  • obsługuje różne rodzaje aplikacji.
  • zasięg testowania może być zwiększony. 

I to tyle na dzisiaj. Dziękuję za Twój czas. Życzę Ci udanego dnia oraz weekendu i do usłyszenia w kolejnym odcinku!