QA dla początkujących: testowanie manualne vs. automatyczne

23 stycznia
QA dla początkujących: testowanie manualne vs. automatyczne
Testowanie oprogramowania to dziedzina, która przyciąga zarówno młodych ludzi zainteresowanych IT, jak i innych specjalistów, którzy decydują się na zmianę ścieżki kariery na jej późniejszym etapie.

Jednym z wyborów, których należy dokonać na samym początku jest ten pomiędzy testowaniem manualnym a testowaniem automatycznym. Warto również już na wstępie przeanalizować wady i zalety każdej z tych metod w kontekście przyszłego rozwoju kariery.

W testowaniu manualnym (jak sugeruje nazwa), testy wykonywane są wyłącznie manualnie – przez człowieka. Nie obejmują wsparcia ze strony dodatkowych narzędzi, czy skryptów. Dlatego – z jednej strony - nie wymaga ono znajomości tych skryptów, ale, z drugiej - jest to proces czasochłonny.

W testowaniu automatycznym, przypadki testowe są wykonywane z użyciem oprogramowania i skryptów. Celem tej metody jest wykonanie testów w krótkim czasie, za pomocą powtarzalnych zadań oraz testowanie regresywne, bez interwencji testera manualnego. Ale nawet w tym przypadku pewne części procesu wymagają interwencji testera manualnego, by na tej podstawie stworzyć automatyczne skrypty testowe.

Nie da się jednoznacznie stwierdzić, która metoda jest lepsza. Oba typy testowania – manualne i automatyczne aplikuje się w różnych przypadkach, zależnie od wielu czynników, takich jak budżet, wymagania projektu, zasoby, czas, stosowność, doświadczenie i struktura projektu.

Obie metody, zarówno manualna, jak automatyczna obejmują testowanie integracyjne, testowanie systemowe, testowanie wydajnościowe i testowanie obciążeniowe. Niektóre z typów testowania są jednak lepiej wykonywane w ramach podejścia manualnego – inne automatycznego.

W poniższej tabeli zebraliśmy główne różnice pomiędzy dwiema omawianymi metodami, z uwzględnieniem najważniejszych czynników, takich jak: czas, koszt, dokładność, wymagana wiedza, frameworki, itd.

Testowanie manualne Testowanie automatyczne
Czas
Testowanie manualne bazuje głównie na zasobach ludzkich, przez co jest czasochłonne. Testowanie automatyczne pozwala na wykonywanie testów w krótszym czasie niż manualne
Dokładność
Większe ryzyko ludzkiego błędu. Testowanie automatyczne jest przeprowadzane za pomocą skryptów i narzędzi, dzięki którym jest rzetelne i dokładniejsze, ale – jednocześnie – skrypty działają wyłącznie tak, jak zostały zaprojektowanie – mogą pominąć błędy, które są oczywiste dla doświadczonego testera manualnego.
Raportowanie
Podejście manualne pozwala dokładniej obserwować i ocenić, czy aplikacja jest łatwa w użyciu. Używa się również specjalistycznego oprogramowania/stron wspierających proces testowania i rejestrujących błędy (Testrail, Jira, etc.) Proces testowania nie angażuje ludzkich umiejętności, przez co aplikacje mogą być mniej przyjazne użytkownikowi, a ocena UX może być niedokładna. Wyniki testów są zapisywane i łatwo dostępne z poziomu systemu do automatyzacji.
Inwestycja
Początkowa inwestycja w proces testowania manualnego jest niższa niż w przypadku automatyzacji, ale ROI również jest niższy w dłuższej perspektywie. Wymagana jest inwestycja w zasoby ludzkie. Testowanie automatyczne wymaga zazwyczaj większej inwestycji na wstępie, ale ROI jest korzystniejszy. W tym wypadku inwestuje się w rozwój narzędzi do testowania, co jest jednoznaczne z zatrudnieniem specjalisty w dziedzinie automatyzacji.
Wymagana wiedza
Umiejętności programistyczne nie są wymagane w testowaniu manualnym. Znajomość języków programowania jest niezbędna przy tworzeniu skryptów z użyciem większości narzędzi.
Frameworki
W testowaniu manualnym nie używa się frameworków, proces testowania obejmuje użycie list kontrolnych, reguł i procesów. Testowanie automatyczne oparte jest na frameworkach takich, jak: Selenide, Serenity, Data Driven, Hybrid, BDD, etc.
Kiedy używać?

Testowanie eksploracyjne: wymaga doświadczenia i intuicji testera

Testowanie użyteczności: testowanie mające na celu ocenę zrozumiałości i łatwości w użyciu danego oprogramowania

Testowanie ad hoc: testowanie bez planu i scenariusza, ważnym czynnikiem jest człowiek i ludzkie rozumienie

Testowanie wydajnościowe: testowanie, które wymaga symulacji jednoczesnej aktywności dużej liczby użytkowników jest łatwiej osiągalne poprzez automatyzację

Testowanie obciążenia: automatyzacja pozwala na testowanie systemu w warunkach pracy z dużą ilością danych

Testowanie funkcjonalne: automatyzacja pozwala na symulację szybkich zmian kodu w krótkim czasie

Powtarzalne zadania: jeśli test bazuje na powtarzaniu danego zadania, zalecana jest automatyzacja

 

Jak wynika z tabelki, obie metody testowania – manualna i automatyczna mają swoje zalety i wady. Za pomocą testowania manualnego – na przykład – możemy uzyskać dokładniejsza informację zwrotną na bazie ludzkiego doświadczenia, niewymagana jest tu umiejętności kodowania. Testy automatyczne pozwalają natomiast znaleźć większą ilość błędów w ramach szybszego i bardziej efektywnego procesu, który może być z łatwością zarejestrowany.

Możliwości zawodowe

Zgodnie z danymi z raportu DataArt, w latach 2015-2017, liczba kandydatów, którzy aplikowali w odpowiedzi na oferty pracy związane z automatyzacją była zdecydowanie niższa niż w przypadku ofert dotyczących testowania manualnego. Czy to oznacza, że zapotrzebowanie na specjalistów zajmujących się automatyzacją jest wciąż niskie, czy – wprost przeciwnie – jest na rynku zbyt mało takich ekspertów?

Szukając odpowiedzi, postanowiliśmy porozmawiać z dwoma naszymi kolegami z DataArt, doświadczonymi testerami. Vitaliy Kizimov (Senior Manual QA) i Anton Sirota (Senior Automation QA) opowiedzieli o swoich osobistych doświadczeniach i motywach, które stały za ich zawodowymi decyzjami.

Manualne czy automatyczne – to kwestia osobistych preferencji, czy raczej umiejętności?

Anton Sirota (QA Automation): Moim zdaniem chodzi bardziej o osobiste wybory, ale właściwie może to być związane z obiema wymienionymi rzeczami – również umiejętnościami i kompetencjami. Testowanie manualne wymaga zrozumienia kluczowych zagadnień i posiadania odpowiednich umiejętności, automatyzacja – posiadania wszystkich umiejętności testera manualnego oraz znajomości języków programowania i zagadnień z zakresu automatyzacji. Dlatego liczba takich kandydatów jest niższa. Ale wciąż ich potrzebujemy.

Vitaliy Kizimov (QA Manual): Myślę, że próg pozwalający na zostanie testerem automatycznym jest odrobinę wyższy w odniesieniu do wymaganych kompetencji, dlatego napływa do nas odrobinę mniej CV w odpowiedzi na te oferty. Ale to nie fizyka kwantowa i łatwo podciągnąć umiejętności w krótkim czasie – można zacząć od tego, co bardziej ci odpowiada, a potem przerzucić się na inną dyscyplinę, poświęcając swój prywatny czas na rozwój. To proste.

Czy to prawda, że automatyzacji znacznie do bliżej tworzenia oprogramowana niż testowaniu manualnemu?

Anton Sirota (QA Automation): Nie! To wszystko obejmuje testowanie metodą czarnej skrzynki, a w testowaniu automatycznym specjaliści w większości używają przypadków testowych napisanych przez testerów manualnych.

Vitaliy Kizimov (QA Manual): Z perspektywy rodzaju wykonywanych czynności – jest. W automatyzacji tester pisze kod, potem testuje ten kod, by umieścić go w repozytorium. Z perspektywy komunikacji nie ma żadnych różnic.

Czy można zająć się automatyzacją bez wcześniejszego doświadczenia w testowaniu manualnym?

Anton Sirota (QA Automation): Jasne. Ale dobry inżynier QA posiada oba typy umiejętności – testowania manualnego i automatycznego.

Vitaliy Kizimov (QA Manual): Bardzo wierzę w to, że przed rozpoczęciem automatyzacji procesów, powinno się poznać je od podszewki, rozumieć jak działają, posiadać wiedzę i doświadczenie z nimi związane.

Czy testerzy manualni naprawdę nie są poważani przez programistów?

Anton Sirota (QA Automation): Nigdy tego nie doświadczyłem. Dziś właściwie każdy rozumie, jak ważną rolę w zapewnieniu jakości produktu pełnią testerzy.

Vitaliy Kizimov (QA Manual): To mit.

Co myślicie o zdaniu, które wypowiedział Michael Bolton, popularny prelegent w zakresie QA – “QA nie może być zautomatyzowane”?

Anton Sirota (QA Automation): QA to nie tylko samo wykonywanie testów. To także praca z wymaganiami, analiza, tworzenie przypadków testowych z użyciem różnych technik. Na dziś nie ma maszyny, która byłaby w stanie wykonać tę część pracy. Może AI to zmieni, ale potrzeba na to wiele czasu.

Vitaliy Kizimov (QA Manual): Bycie profesjonalistą wymaga wyczucia równowagi między automatyzacją i czynnościami wykonywanymi manualnie. Będąc testerem manualnym automatyzujesz powtarzalne czynności, możesz używać skryptów, narzędzi. Kiedy zajmujesz się automatyzacją, wciąż musisz czasami weryfikować manualnie, czy produkt nad którym pracujesz jest dobrej jakości, czy wprost przeciwnie.

Dlaczego wybraliście takie specjalizacje? Czy uważacie, że popularność automatyzacji będzie z czasem wzrastać?

Anton Sirota (QA Automation): Miałem doświadczenie techniczne i podstawowe umiejętności w zakresie programowania. Kiedy rozpocząłem karierę inżyniera QA byłem pod wrażeniem tego, w jakim stopniu mogę połączyć umiejętności techniczne i testerskie. Po 3 miesiącach mojej kariery zacząłem zajmować się automatyzacją – i myślę, że ten kierunek ma potencjał.

Vitaliy Kizimov (QA Manual): Testerem manualnym zostałem dawno temu – polubiłem szukanie wad, bo lubię produkty wysokiej jakości. Jeśli mogę się przyczynić do udoskonalenia czegoś, dlaczego mam tego nie robić? W tym momencie nie pracuję już jako tester, zmieniłem specjalność na zarządzanie projektami. Ale uważam, że automatyzacja będzie zyskiwała na popularności.