Testowanie manualne i automatyczne. Różnice

Testowanie manualne i automatyczne. Różnice
Dziś skupimy się na porównaniu w praktyce dwóch kluczowych form prowadzenia testów – testowania wykonywanego ręcznie oraz testów zautomatyzowanych.Przykłady stosowania mogą pokazać ich odmienność od podstaw.

Testowanie manualne

Testowanie manualne jest klasyczną metodą testowania oprogramowania, w którym testy wykonywane są przez testera ręcznie. Jego celem jest wykrycie awarii pojawiających się w oprogramowaniu. W testach manualnych tester sprawdza wszystkie istotne cechy testowanej aplikacji/oprogramowania, wykonuje on także przypadki testowe i generuje raporty z testów, bez użycia jakichkolwiek narzędzi do testowania automatycznego.
Nie jesteśmy zwolennikami pojęcia „testowania manualnego” ze względu na to, że jest to praca wykonywana przez człowieka rękami, ale z użyciem specjalistycznych narzędzi. Pojęcie to jednak na tyle przyjęło się w świecie testerskim, że nie ma sensu z nim walczyć.

Testowanie automatyczne

W przypadku testowania automatycznego tester, przy użyciu odpowiednich narzędzi automatyzacji, tworzy skrypt testowy, który ma za zadanie automatyczne wykonywanie testów. Głównym celem jest przeprowadzenie testu w jak najkrótszym czasie i przy pomocy możliwie najmniejszych zasobów. Testowanie automatyczne opiera się na wstępnie zaprogramowanym teście, który uruchamia się automatycznie i porównuje rzeczywiste wyniki z wynikami oczekiwanymi. Dzięki temu tester weryfikujący status wykonania skryptów jest w stanie stwierdzić, czy oprogramowanie działa zgodnie z oczekiwaniami. 

Testowanie automatyczne pozwala na wykonanie powtarzalnych zadań i testów regresji bez zaangażowania testera manualnego w fazie uruchomienia testów. Mimo, że wszystkie procesy są wykonywane automatycznie, automatyzacja wymaga jednak stworzenia wstępnych skryptów testowych, co wiąże się z „ręcznym” nakładem pracy.

Kluczowe różnice między testowaniem manualnym i automatycznym

Poprzez prezentację typowych cech testowania manualnego i zautomatyzowanego możemy łatwo dostrzec co je od siebie odróżnia.

Testowanie manualne:

  • przypadki testowe wykonywane są ręcznie przez testera,
  • uruchomienie testów pochłania znacznie więcej czasu i często wymaga zaangażowania większych zasobów ludzkich w krótkim czasie,
  • początkowa inwestycja i zwrot z testowania manualnego są niższe w porównaniu z testami automatycznymi,
  • testy manualne są mniej dokładne ze względu na możliwość wystąpienia błędów ludzkich i mniejszych możliwości logowania danych w czasie wykonywania testów,
  • niezbędne jest dokonanie inwestycji w zasoby ludzkie,
  • testy manualne są (zbyt często) rejestrowane w programie Excel lub Word, a wyniki testów nie są łatwo dostępne, co ogranicza możliwości wglądu w nie,
  • umożliwiają obserwację zachowania systemu przez człowieka, co może okazać się przydatne w procesie tworzenia systemu przyjaznego dla użytkownika,
  • ma bardzo duże ograniczenia jeśli chodzi o uruchamianie szczególnych typów testów w tym np. testowania wydajności,
  • testy manualne mogą być wykonywane równolegle, ale konieczne jest zwiększenie zasobów ludzkich, co z kolei wiąże się z większymi kosztami,
  • przy testach manualnych często nie ma konieczności budowania kastomizowanego oprogramowania (często używa się narzędzi typu COTS),
  • konfiguracja wykonywania testów jest bardzo prosta,
  • powtarzalne, manualne wykonywanie testów może w końcu stać się nużące, a przez to bardziej podatne na błędy,
  • okazuje się przydatne, gdy przypadek testowy musi zostać uruchomiony szybko i małą ilość razy,
  • wiąże się z większym ryzykiem przekroczenia wcześniej ustalonego terminu testu,
  • może wykorzystywać predefiniowane wytyczne i listy kontrolne  do sporządzania niektórych przypadków testowych
  • taki rodzaj testowania nadaje się do testów eksploracyjnych, użyteczności i adhoc; powinien być również stosowany tam, gdzie testowany system często się zmienia.

Testowanie automatyczne:

  • testy z wykorzystaniem narzędzi do wykonywania skryptów testowych,
  • są z reguły znacznie szybsze w uruchomieniu,
  • testy automatyczne nie mają zdolności adaptacji do nieprzewidzianych zmian w testowanych aplikacjach,
  • początkowa inwestycja w testy automatyczne jest wyższa, ale zwrot z inwestycji przy udanej automatyzacji jest również wysoki,
  • praktycznie niezawodne (mniejsze prawdopodobieństwo pojawienia się błędów, choć nie są one całkowicie wykluczone),
  • wiąże się z koniecznością dokonywania inwestycji w narzędzia testowe i inżynierów automatyzacji,
  • wyniki testów są łatwo dostępne dzięki możliwości logowaniu rezultatów w narzędziu, dzięki czemu wgląd do nich mają wszystkie osoby zainteresowane, 
  • testy automatyczne nie wymagają obserwacji przez człowieka, a przez to zmniejsza się szansa na stworzenie przyjaznego dla użytkownika interfejsu,
  • umożliwia wykonywanie testów wydajności (testów obciążenia, stresowych itp.), które muszą być wykonywane przez narzędzia,
  • mogą być wykonywane równolegle na różnych systemach operacyjnych, co znacznie skraca czas przeprowadzania testów,
  • do ich przygotowania konieczne jest posiadanie wiedzy programistycznej,
  • konfiguracja wykonywania testów nie jest złożona,
  • testy automatyczne wykonywane są za pomocą narzędzi, a co za tym idzie są mniej nużące dla samego testera i bardziej dokładne,
  • bywają przydatne przy częstym wykonywaniu tego samego zestawu skryptów testowych,
  • niosą za sobą brak ryzyka pominięcia wcześniej ustalonego testu,
  • testowanie automatyczne wykorzystuje frameworki takie jak Data Driven, Keyword Driven, Hybrid w celu przyspieszenia procesu automatyzacji,
  • działają jak dokument zapewniający wartość szkoleniową, szczególnie w przypadku zautomatyzowanych testów jednostkowych. Dzięki temu nowy programista może zajrzeć do jednostkowych przypadków testowych i szybko zrozumieć bazę kodu.

Zalety i wady testów manualnych i automatycznych

Spróbujmy jeszcze spojrzeć na temat od strony potencjalnych wad i zalet metod uruchamiania testów. Tester manualny i automatyzujący dostrzeże korzyści i zagrożenia płynące z obu form. 

Testowanie manualne

Zalety:

  • testowanie manualne gwarantuje szybką i dokładną informację zwrotną,
  • testy manualne są mniej kosztowne (ze względu na brak konieczności wydawania budżetu na narzędzia i proces automatyzacji)
  • obecność człowieka w procesie uruchamianie będzie zazwyczaj korzyścią,
  • bardzo dobrze sprawdza się przy testowaniu małej zmiany, co przy testowaniu automatycznym byłoby problematyczne.

Wady:

  • testowanie manualne jest bardziej podatne na błędy,
  • takie testy (często) nie są rejestrowane
  • wymagają dodatkowego czasu w przypadku trudnych do wykonania ręcznych zadań.

Testowanie automatyczne

Zalety:

  • testy automatyczne mają większy zasięg, pomagają znaleźć więcej defektów,
  • są wykonywane szybciej i mają większe pokrycie,
  • za każdym razem wykonywane są w ten sam sposób, 
  • zapewniają szybkie i dokładne wyniki testów, są również mniej nużące dla testera,
  • pozwalają testować to samo na wielu środowiskach.

Wady:

  • brak obecności czynnika ludzkiego utrudnia uzyskanie wglądu w wizualne aspekty interfejsu, np. kolory, czcionka, rozmiary, kontrast itp.,
  • narzędzia do wykonywania testów automatycznych mogą być drogie, co wiąże się ze zwiększeniem kosztów całego projektu, 
  • nie można zapewnić także pełnej niezawodności narzędzi do testowania automatycznego. Każde z nich posiada swoje ograniczenia, które mogą zawężać zakres automatyzacji,
  • utrzymanie skryptów bywa bardzo kosztowne.

Patrząc na zbiór cech, zalet i wad można powiedzieć, że testowanie zarówno wykonywane ręcznie, jak i zautomatyzowane, wymagają udoskonalania. Aktualnie najpopularniejszą drogą rozwojową dla testów manualnych jest eksploracja, a dla testów automatycznych nauczanie maszynowe. Patrząc w przyszłość musimy redukować słabe strony poszczególnych form wykonywania testów.

2065
Źródła:
https://www.guru99.com/difference-automated-vs-manual-testing.html
https://testerzy.pl/baza-wiedzy/artykuly/pisze-testy-automatyczne-kim-jestem
https://testerzy.pl/baza-wiedzy/testy-manualne-vs-automatyzacja
źródło grafiki: https://pl.freepik.com/wektory/technologia

To powinno Cię zainteresować