W tym artykule poruszymy tematykę dwóch podstawowych rodzajów testowania: manualnego i automatycznego. Opowiemy także o sposobie testowania w firmie EuroLinux.
Oprogramowanie jest nieodłączną częścią współczesnego świata. Korzystamy z niego we wszystkich obszarach naszego życia (np. smartfony, komputery, laptopy, tablety, samochody). Nieprawidłowe funkcjonowanie oprogramowania może powodować wiele problemów, które w konsekwencji mogą doprowadzić do strat finansowych, czasu czy utraty zaufania do firmy. Aby zmniejszyć ryzyko wystąpienia awarii podczas użytkowania oprogramowania lub by ocenić jego jakość, należy poddać je testom.
Czym jest testowanie oprogramowania?
Powszechnie uważa się, że testowanie oprogramowania polega na wykonywaniu testów, przez uruchamianie ich i sprawdzanie uzyskanych rezultatów. Nic bardziej mylnego. Prawidłowe testowanie to proces, który obejmuje czynności wykraczające poza samo wykonywanie testów. Obejmuje planowanie i nadzór nad testami, analizę i projektowanie testów, implementacje i wykonanie testów, ocenę kryteriów zakończenia, raportowanie oraz czynności zamykające testy.
Testowanie manualne
Oprogramowanie można testować manualnie (ręczne) albo używając odpowiednich narzędzi. Testowanie manualne oprogramowania, ze względu na fakt, że nie wymaga skomplikowanych narzędzi, jest bardziej uniwersalne. Wykonywane jest przez testera. To właśnie on sprawdza wszystkie istotne cechy danego oprogramowania, przygotowuje scenariusze testowe oraz generuje raporty. Jest to ciężka i czasochłonna praca, która, kosztuje wiele wysiłku, wymaga skupienia oraz jest obarczone ryzykiem wystąpienia błędów ludzkich. Aby zoptymalizować ten sposób testowania, wprowadza się automatyzację.
Testowanie automatyczne
Testowanie automatyczne polega na przygotowaniu skryptów lub programów testowych, które mają za zadanie automatycznie wykonać testy. Testowanie automatyczne opiera się na wstępnie zaprogramowanych testach, które uruchamiają się automatycznie i porównują wyniki rzeczywiste z oczekiwanymi. Tester weryfikujący status wykonania skryptów jest w stanie stwierdzić, czy oprogramowanie działa zgodnie z oczekiwaniami, czy też nie.
Głównymi korzyściami płynącymi z automatyzacji procesu testowania jest szybkość, powtarzalność, skuteczność, trafność i precyzja. Ograniczamy wielokrotne wykonywanie tej samej pracy, eliminujemy ryzyko błędów ludzkich, zwiększamy jednolitość i powtarzalność, obiektywną ocenę oraz łatwy dostęp do danych o testach i testowaniu. Wprowadzenie automatyzacji wymaga jednak nakładów czasu i pieniędzy. Potrzebny jest czas na wybór odpowiedniego narzędzia, jego poznanie, a także tworzenie, poprawienie oraz wykonywanie skryptów. Potrzebne są także środki pieniężne na zakup lub stworzenie odpowiednich narzędzi.
Jak testować – manualnie czy automatycznie?
Pomimo wielu zalet automatyzacji, testy manualne są nadal niezbędne. Kluczem do sukcesu jest wykorzystanie ich tam, gdzie automatyzacja nie da nam aż tak dokładnej informacji zwrotnej. Wykorzystuje się je do tworzenia testów eksploracyjnych lub wykonywania bardziej kreatywnych przypadków testowych. Pozwala to na znalezienie wielu defektów, które mogłyby zostać przeoczone, stosując tylko automatyzację. Natomiast przy bardziej skomplikowanym oprogramowaniu może się okazać, że niektóre testy o wiele sprawniej będzie można wykonać i zweryfikować manualnie. Zwłaszcza w obszarach, w których zautomatyzowanie danego procesu zajęłaby stosunkowo dużo czasu.
Proces testowania w EuroLinux
W praktyce testowanie manualne powinno być zawsze wykonywane przed testowaniem automatycznym. Dlatego w EuroLinux najpierw przeprowadzamy testy manualne naszego oprogramowania. W ten sposób ręcznie testujemy jego cechy, funkcjonalności i zgodność z dokumentacją. Następnie nasi testerzy na ich podstawie tworzą testy automatyczne, używając w tym celu openQA i Jenkins’a. OpenQA to narzędzie o otwartym kodzie źródłowym, pozwalające na holistyczną analizę całego procesu instalacji wytwarzanego przez nas oprogramowania oraz wizualne testy poszczególnych aplikacji. Testy pisane są w języku Perl. Jenkins to także narzędzie Open Source, które służy do automatyzacji związanej z tworzeniem oprogramowania. Za pomocą autorskiego skryptu został on zintegrowany z openQA.
Poniżej przykładowe zrzuty ekranu z procesu testowego systemu EuroLinux w OpenQA:
Interfejs testu obrazu instalacyjnego ISO systemu EuroLinux 9 z listą i statusem modułów wchodzących w skład testu.
Wyniki testów obrazu ISO systemu EuroLinux 9.1
Sprawdzenie określonych elementów na ekranie maszyny wirtualnej poprzez porównanie ich z tzw. „Igłą”, która określa elementy do wyszukania i listę znaczników, które pozwalają zdecydować, jakie igły będą użyte w danym momencie.
Więcej na temat wykorzystania OpenQA w EuroLinux można przeczytać w artykule openQA – czyli jak testujemy system EuroLinux na naszym blogu.
Podsumowanie
W coraz szybciej rozwijającym się świecie oprogramowania niewątpliwie automatyzacja testowania jest przyszłością i koniecznością. Skraca czas potrzebny na zbudowanie i wdrożenie oprogramowania. W dłuższym okresie pozwala zaoszczędzić czas, pieniądze, ograniczyć podatności testów na błędy, a także pozwala na efektywniejsze wykorzystanie testerów. Jest wartością dodaną dla organizacji, która przynosi konkretne, pozytywne rezultaty biznesowe.