Automatyzacja testów – obalamy mity

jPro | 23.04.2019 | Czas czytania: 5 minut

Wokół automatyzacji testów narosło wiele mitów dotyczących kosztów wdrożenia i ich utrzymania, słuszności oraz rodzajów testów, które mogą podlegać automatyzacji. To gorący temat, który powraca podczas wielu testerskich konferencji oraz meetupów. Niejasności wokół testów automatycznych nie sprzyjają dostarczaniu produktów o najwyższej jakości i nie zachęcają do ich stosowania, mimo że liczba narzędzi pozwalających na automatyzację procesów testowych nieustannie wzrasta, a tym samym rosną możliwości ich wykorzystania. W dzisiejszym artykule biorę pod lupę powszechne mity związane z automatyzacją testów i rozwiewam wątpliwości z nimi związane.

Jak działa automatyzacja testów?

Zanim napiszę szerzej o mitach dotyczących procesu automatyzacji testów, przyjrzyjmy się bliżej tworzeniu testów automatycznych. Na początek określamy obszary, które chcemy przetestować automatycznie, skupiając się na zagadnieniach, które będą najbardziej istotne pod kątem biznesowym. Cel i warunki testów dobieramy w zależności od testowanego systemu, zgodnie z jedną ze złotych zasad testowania: "testowanie zależy od kontekstu". Gdy już ustalimy cel testów automatycznych, zajmujemy się aspektem technicznym, to znaczy dokonujemy wyboru narzędzia testowego, tworzymy środowisko testowe oraz skrypty niezbędne do wykonania testów. Po uruchomieniu testów jesteśmy w stanie dokonać analizy rezultatów i zweryfikować, czy udało się uzyskać założoną na początku testów wartość biznesową.

Co do samej zasady działania deterministycznych testów zautomatyzowanych, jest ona stosunkowo prosta. Najpierw aplikację wprowadzamy w pewien stan początkowy umożliwiający wykonanie akcji, którą chcemy przetestować, na przykład sprawdzamy, jak dana funkcjonalność będzie się zachowywać, gdy jednocześnie będzie z niej korzystać 1000 użytkowników. Weryfikacja opiera się na porównaniu oczekiwanych założeń z aktualnym stanem aplikacji.

Automatyzacja testów – mity

1. Każdy test można zautomatyzować

Jednym z najbardziej powszechnych mitów dotyczących testów automatycznych jest przekonanie, że można zautomatyzować każdy test. Zastanówmy się jednak: czy w praktyce jest to możliwe? Jak zaznacza International Software Testing Qualifications Board, organizacja certyfikacyjna w dziedzinie testowania jakości oprogramowania, testowanie to proces nieskończony, a zatem nie jesteśmy w stanie przewidzieć i przetestować wszystkiego.

Automatyzacja testów pozostaje niezastąpiona przy wykonywaniu testów wydajności, obciążenia i testów przeciążających. Są jednak aspekty, które trudno poddać automatyzacji. Część testów niefunkcjonalnych, czyli związanych z estetyką, przejrzystością czy czytelnością, oparta jest na osobistych odczuciach. Nie jesteśmy w stanie ustalić dla nich warunków wyjściowych i oczekiwanego rezultatu. Kwestia wyglądu czy przejrzystości może więc podlegać jedynie ocenie ludzkiego oka. Podobnie nie można zautomatyzować testów dostępności, które polegają na ocenie oprogramowania pod kątem przystosowania dla osób niepełnosprawnych.

Podsumowując, skoro są testy, których nie jesteśmy w stanie zautomatyzować, nie możemy zastąpić testów manualnych testami automatycznymi, jak głosi kolejny powszechny mit. Będą obszary, które wymagają manualnego sprawdzenia, o czym piszę niżej.

2. Automatyzacja testów pozwala zastąpić testowanie manualne

Stwierdzenie to jest podobne do powszechnego kiedyś przekonania, że telewizja całkowicie zastąpi radio. Dziś widzimy, że media takie jak radio, telewizja i Internet współistnieją i uzupełniają się. Podobnie jest z testami automatycznymi i manualnymi. Ogromną zaletą automatyzacji jest jej powtarzalność – zakładając poprawną implementację testów, możemy mieć pewność, że testy automatyczne będą wykonane zawsze w ten sam, odtwarzalny sposób. Dodatkowo, w przeciwieństwie do człowieka, są w stanie pracować nieustannie – bez przerwy na kawę, sen czy weekendowy odpoczynek. Brakuje im jednak pewnego pierwiastka, który pozwala na efektywne przetestowanie aplikacji: inteligencji, intuicji oraz wyobraźni.

W sposób manualny jesteśmy w stanie wykonać znaczną część testów, które ocenią, w jakim stopniu aplikacja spełnia zarówno wymagania funkcjonalne, jak i niefunkcjonalne. Testy manualne będą więc potrzebne, bo zawsze będą obszary wymagające wiedzy i bezpośredniego zaangażowania testera oprogramowania. Będą to takie obszary testów jak testy użyteczności, dostępności i bezpieczeństwa. Automatyzacja stanowi uzupełnienie testów manualnych, ale nie jest w stanie zastąpić np. testów eksploracyjnych oraz techniki opartej na zgadywaniu błędów, bazującej na doświadczeniu testera zarówno w kontekście testowanego produktu, jak i narzędzi, które zostały wykorzystane do jego stworzenia.

3. Testy automatyczne pomagają znaleźć dużo defektów

Wbrew powszechnej opinii testy automatyczne nie wykazują wielu błędów. Ktoś może zapytać: „Ale jak to? Czy nie to właśnie chcemy uzyskać poprzez automatyzację testów?" Oczywiście jest to jeden z aspektów, do których dążymy. W przypadku testów automatycznych ważniejsza jest jednak nie ilość, lecz jakość. Przytaczając konkretny przykład, testy automatyczne przyniosą nam informację o defektach, które pojawiły się w istniejących funkcjonalnościach po zmianie kodu. Są to tak zwane testy regresji, których zadaniem jest sprawdzenie tego, czy najnowsze zmiany oprogramowania, środowiska i konfiguracji nie wpłynęły negatywnie na rozwijany produkt. Zautomatyzowane testy regresji pozwalają zastąpić manualną pracę zespołów deweloperskich, która w zależności od złożoności oprogramowania zajęłaby wiele godzin, dni, a nawet tygodni. Wraz z każdym testem automatycznym zwiększa się zaufanie do tworzonego oprogramowania i nawet jeśli nie wykażą one wielu błędów, pozwolą oszczędzić czas i pracować nad jakością produktu.

4. Każdy przypadek testowy należy zautomatyzować, jeśli to możliwe

Jesteśmy już świadomi, że nie wszystko można zautomatyzować i że testy automatyczne w pewnych obszarach nie zastąpią testów manualnych. Skoro jednak identyfikujemy procesy, które można zautomatyzować, to czy w każdym przypadku warto?

Są sytuacje, gdy trzeba działać szybko i przetestować daną funkcjonalność bez angażowania dodatkowych środków czy narzędzi – z czym wiąże się niejednokrotnie wdrażanie testów automatycznych. Aby odpowiedzieć na pytanie o zasadność stosowania testów automatycznych w każdym przypadku, posłużę się cytatem Rogera Needhama, dyrektora Centrum Badań Microsoft:

„Automatyzacja to zastępowanie tego, co działa, czymś, co prawie działa, ale jest szybsze i tańsze".

To zdanie przypomina o dwóch podstawowych warunkach, które wskazują na zasadność automatyzacji testów:

  • wykonanie automatycznych testów powinno być szybsze niż manualna weryfikacja zachowania systemu
  • koszt zaprogramowania testu nie powinien przekraczać zysku, jaki uzyskamy z jego automatyzacji

Przed podjęciem decyzji o automatyzacji testów warto więc wziąć pod uwagę liczne aspekty, takie jak koszt narzędzi i czas ich implementacji oraz to, ile czasu potrzebowalibyśmy na testy manualne. To powinno dać odpowiedź na pytanie o zasadność wprowadzenia testów automatycznych pod kątem biznesowym. 

Podsumowanie

Pomimo wielu krążących mitów automatyzacja testów stopniowo zyskuje na popularności, a cel jej stosowania jest coraz lepiej rozumiany. Wciąż jednak konieczne jest rozwiewanie wielu wątpliwości z nią związanych, a powracający temat mitów dotyczących testów automatycznych jest dowodem na to, jak wiele jeszcze jest do zrobienia w kwestii odczarowania powszechnych, błędnych przekonań. Mam nadzieję, że udało mi się rozwiać kilka z nich, a artykuł ten przyczyni się do dyskusji na temat testów automatycznych, które stanowią przecież znaczną pomoc dla testerów oprogramowania w dostarczaniu wysokiej jakości produktu.

Autorem wpisu jest

Daria Bajda-Czyżyńska, JCommerce

Senior QA Engineer, Technical Leader

Technical leader i tester oprogramowania, specjalizuje się w testach automatycznych. Jej przygoda z testowaniem rozpoczęła się dość niespodziewanie – na linii produkcyjnej w słowackiej fabryce samochodów. Następnie wkroczyła w świat testów oprogramowania wbudowanego i zakochała się w pełnym różnorodności świecie aplikacji mobilnych i webowych.

Komentarze

  • Aktualnie brak komentarzy.

Skontaktuj się z nami