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 meet-upó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.

Z tego artykułu dowiesz się:

  • Jak działa automatyzacja testów.
  • Jakie są 4 najpopularniejsze mity automatyzacji testów i dlaczego są błędne.

Jak działa automatyzacja testów?

Zanim napiszę szerzej o mitach dotyczących procesu automatyzacji testowania oprogramowania, przyjrzyjmy się bliżej, jak tworzymy testy automatyczne. Na początek określamy obszary, które potrzebujemy przetestować automatycznie, i zastanawiamy się, jaką wartość biznesową chcemy z ich pomocą uzyskać  oraz definiujemy przypadki testowe. Czy ma to być sprawdzenie wydajności systemu? A może potrzebujemy szybkiej informacji o jakości tworzonego produktu? Gdy już ustalimy cel testów automatycznych, zajmujemy się aspektem technicznym, to znaczy dokonujemy wyboru narzędzia do testowania aplikacji, 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.

Przeczytaj również: Test-Driven Development na co dzień

Automatyzacja testowania – mity

1. Testy automatyczne pozwalają przeprowadzić dowolny test

Jednym z najbardziej powszechnych mitów dotyczących automatyzacji testów jest przekonanie, że można zautomatyzować każdy test. Zastanówmy się jednak: czy w praktyce jest to możliwe? Jak zaznacza ISTQB (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ą interfejsu użytkownika 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 zrealizować automatyzacją testów, 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.

Przeczytaj również: Testy BDD –  na czym polegają i czy na prawdę są potrzebne?

2. Dzięki automatyzacji testów można zrezygnować z testowania manualnego

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.

Przeczytaj również: minimalistyczny przypadek testowy

3. Rola testów automatycznych to znajdowanie wielu 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 developerskich, 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 chociaż nie wykażą one wielu błędów, pozwolą oszczędzić czas i pracować nad jakością produktu – a przecież to ona jest w ogólnym rozrachunku najważniejsza.

Przeczytaj również: Testy automatyczne w projekcie scrumowym

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 wiele przypadków testowych, 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 dla wszystkich przypadków testowych, 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 – jakkolwiek by na to nie spojrzeć – stanowią przecież znaczną pomoc dla testerów oprogramowania w dostarczaniu wysokiej jakości produktu.

 

Autorem wpisu jest:
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.

Skontaktuj się z nami

Chcesz dowiedzieć się więcej o naszych usługach? Napisz do nas – odpowiemy na każdą wiadomość.

    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
    W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
    2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
    • w celach handlowych,
    • w celach marketingowych,
    • w celach rekrutacyjnych;
    • w celach przyszłych rekrutacji.
    3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
    4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
    5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
    6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
    7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
    8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
    9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
    10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
    Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
    W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
    2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
    • w celach handlowych,
    • w celach marketingowych,
    • w celach rekrutacyjnych;
    • w celach przyszłych rekrutacji.
    3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
    4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
    5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
    6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
    7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
    8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
    9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
    10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.