
Poziomy testów i ich zastosowania
Cześć Słońce!
Wracam do Ciebie z kolejnym merytorycznym wpisem 🙂 W tym artykule chce poruszyć temat poziomów testów, czym one są wraz z przykładami. Mam nadzieję, że temat jest dla Ciebie tak ciekawy jak dla mnie! Zaczynajmy..
Kilka słów wstępu
Jak Ci zapewne wiadomo, testy są istotnym elementem procesu tworzenia oprogramowania, gdyż pozwalają na identyfikację błędów i nieprawidłowości w działaniu aplikacji przed wydaniem jej na produkcję. Testowanie przebiega na kilku płaszczyznach, które są przeprowadzane w zależności od potrzeb i celów projektu. Do poziomów testów zaliczamy:
- Testy jednostkowe,
- Testy integracyjne,
- Testy systemowe,
- Testy akceptacyjne.

Testy jednostkowe
Najniższym poziomem testowania oprogramowania, są właśnie testy jednostkowe (unit testing), które przeprowadzane są na pojedynczych komponentach lub funkcjach. Celem jest sprawdzenie czy działają one zgodnie z oczekiwaniami.
Unit testy są przeprowadzane przez programistów podczas programowania, jako sprawdzenie swojej pracy przez jej autorów. Dzięki nim programista sprawdza czy stworzona przez niego funkcjonalność spełnia mniej więcej określone w zadaniu wymagania. Takie sprawdzenie powoduje, że już na poziomie developmentu można wyłapać pierwsze błędy. Zapewniają one także ciągłość integracji poszczególnych elementów aplikacji. Niestety testy jednostkowe nie zawsze są one praktykowane w projektach.
Testy jednostkowe można przeprowadzać za pomocą frameworków do testowania, np. jUnit czy NUnit, które wspierają automatyzację procesu testowania i pomagają sprawniej uzyskać informację o potencjalnych błędach.
Kilka przykładów testów jednostkowych:
- Testowanie funkcji obliczającej średnią arytmetyczną kilku liczb,
- Testowanie metody sprawdzającej poprawność adresu email,
- Testowanie klasy reprezentującej obiekt w bazie danych,
- Testowanie poszczególnych funkcjonalności koszyka zakupowego w aplikacji e-commerce (np. dodawanie produktów, usuwanie produktów, obliczanie ceny końcowej),
- Testowanie poszczególnych funkcjonalności modułu wysyłania wiadomości w aplikacji komunikatora internetowego (np. walidacja adresu odbiorcy, przesyłanie wiadomości, zarządzanie historią rozmów),
- Testowanie poszczególnych funkcjonalności modułu profilu użytkownika w serwisie społecznościowym (np. edycja profilu, przeglądanie profilu innych użytkowników, zarządzanie listami znajomych),
- Testowanie poszczególnych funkcjonalności modułu zarządzania zadaniami w aplikacji do zarządzania projektami (np. tworzenie zadań, przydzielanie zadań, monitorowanie postępu).
Testy integracyjne
Kolejnym poziomem testów, który można zweryfikować są testy integracyjne. Odpowiadają one za współpracę pomiędzy poszczególnymi komponentami, i działają po zintegrowaniu w całość. Ich celem jest wykrycie błędów wynikających z nieprawidłowej współpracy pomiędzy konkretnymi elementami.
Testy integracyjne są przeprowadzane przez testerów i polegają na uruchomieniu i testowaniu całego systemu lub jego części w rzeczywistych warunkach.
Testy integracyjne są przeprowadzane za pomocą:
- testów jednostkowych przy użyciu mocków (mock objects), które symulują działanie poszczególnych komponentów systemu bez konieczności ich faktycznego uruchamiania,
- testy automatyczne np. z użyciem Selenium w wybranym języku,
- testy manualne polegające na przeklikaniu aplikacji przez testerów.
Kilka przykładów takich testów:
- Testowanie interfejsu użytkownika aplikacji internetowej z bazą danych,
- Testowanie systemu wspomagającego zarządzanie magazynem z wykorzystaniem czytników kodów kreskowych,
- Testowanie systemu kontroli dostępu do budynku z wykorzystaniem czytników kart zbliżeniowych,
- Testowanie integracji nowej wersji aplikacji e-commerce z systemem płatności online,
- Testowanie integracji aplikacji komunikatora internetowego z systemem uwierzytelniania,
- Testowanie integracji serwisu społecznościowego z systemem rekomendacji treści,
- Testowanie integracji aplikacji do zarządzania projektami z systemem zarządzania zasobami,
- Testowanie integracji aplikacji do wirtualnej rzeczywistości z różnymi urządzeniami VR,
- Testowanie integracji aplikacji do streamowania filmów/muzyki z systemem dostępu do treści,
- Testowanie integracji aplikacji do planowania podróży z systemem rezerwacji biletów i hoteli.
Testy systemowe
Testy systemowe są przeprowadzane na całym systemie, łącznie z interfejsami z zewnętrznych urządzeń czy innych systemów. Celem jest sprawdzenie czy aplikacja działa poprawnie i zgodnie oczekiwaniami.
Testy systemowe są również przeprowadzane przez testerów i polegają na uruchomieniu całego systemu lub jego znacznej części w rzeczywistych warunkach. Można je przeprowadzić z pomocą narzędzi do automatyzacji oraz manualnie.
Przykłady testów systemowych:
- Testowanie systemu zarządzania magazynem z uwzględnieniem różnych wariantów działania (np. brak dostępu do bazy danych, brak połączenia z innymi systemami),
- Testowanie systemu bankowości internetowej pod kątem niezawodności i bezpieczeństwa,
- Testowanie systemu bankowości internetowej pod kątem skalowalności i wydajności,
- Testowanie systemu automatycznej obsługi klienta pod kątem poprawności odpowiedzi na różne pytania oraz jakości obsługi,
- Testowanie aplikacji e-commerce pod kątem funkcjonalności związanych z zakupami oraz bezpieczeństwa transakcji,
- Testowanie aplikacji komunikatora internetowego pod kątem niezawodności i wydajności przesyłania wiadomości oraz połączeń audio/wideo,
- Testowanie aplikacji serwisu społecznościowego pod kątem funkcjonalności dotyczących profilu użytkownika i interakcji między użytkownikami,
- Testowanie aplikacji do zarządzania projektami pod kątem funkcjonalności związanych z zarządzaniem zadaniami i zasobami.
Testy akceptacyjne
Ostatnim wyróżnianym poziomem testów są testy akceptacyjne, które zazwyczaj są przeprowadzane z udziałem klienta lub użytkownika końcowego oprogramowania. W ten sposób aplikacja jest sprawdza czy spełnia założoną jej rolę oraz czy potencjalny użytkownik będzie wstanie z niej korzystać w sposób prawidłowy. Są to ostatnie testy przed wdrożeniem produktu do użytku.
Można je przeprowadzać przy użyciu:
- testów manualnych – klient sam przeklikuje aplikacje, bądź przekazuje do testowanie stworzonej grupie testerów biznesowych (przyszłych użytkowników aplikacji),
- testów automatyczne,
- testów użyteczności (usability testing) – sprawdzają czy system jest łatwy w obsłudze i przyjazny dla użytkownika.
Przykłady testów akceptacyjnych:
- Testowanie nowej wersji systemu księgowego przez klienta, który ma ocenić, czy system spełnia jego oczekiwania i czy jest w stanie z niego korzystać bez problemów
- Testowanie nowego systemu zarządzania magazynem przez przedstawicieli działu logistyki, którzy mają ocenić, czy system spełnia ich potrzeby i czy jest on w stanie usprawnić pracę działu
- Testowanie nowej aplikacji mobilnej przez grupę beta-testerów, którzy mają ocenić, czy aplikacja jest łatwa w obsłudze i czy spełnia ich oczekiwania,
- Testowanie nowej wersji aplikacji e-commerce przez klienta, który ma ocenić, czy aplikacja spełnia jego oczekiwania i czy jest w stanie z niej korzystać bez problemów,
- Testowanie nowej aplikacji komunikatora internetowego przez grupę użytkowników, którzy mają ocenić, czy aplikacja jest łatwa w obsłudze i czy spełnia ich potrzeby,
- Testowanie nowego serwisu społecznościowego przez przedstawicieli różnych grup docelowych, którzy mają ocenić, czy serwis spełnia ich potrzeby i czy jest przyjazny dla użytkownika.
Podsumowanko
Każdy z wymienionych poziomów testów jest przeprowadzany w celu zapewnienia jakości i niezawodności tworzonego oprogramowania i są przeprowadzane w różnych momentach cyklu aplikacji.
Jedno jest pewne – im wcześniej błędy zostaną wykryte, tym łatwiej i szybciej można je naprawić, co zdecydowanie wpłynie korzystnie na produkt końcowy 😉
