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.