Rodzaje testów oprogramowania

Katarzyna Bodziony
20.05.2021

Napisanie kodu to dopiero pierwszy etap tworzenia oprogramowania. Kolejnym i absolutnie niezbędnym jest też testowanie, które pozwala zapewnić odpowiednią jakość tworzonej aplikacji, strony czy programu. Wyróżniamy różne typy testów, ich rodzaje oraz poziomy testowania. W tym artykule przedstawiamy różnice pomiędzy nimi, ich zastosowanie i zasady działania.

Testy oprogramowania - rodzaje

W podstawowym ujęciu rodzaje testów oprogramowania możemy podzielić na ręczne (manualne) i automatyczne.

W pierwszym przypadku za testowanie systemu odpowiedzialny jest wykwalifikowany pracownik, czyli tester. Korzysta on ze swojej wiedzy, doświadczenia i specjalistycznych narzędzi, które pozwalają mu skutecznie sprawdzać wydajność i sprawność danego oprogramowania. Testowanie automatyczne wykonywane jest z kolei przez maszynę, która realizuje polecenia i założenia przygotowanego wcześniej skryptu. Ten rodzaj testowania jest zdecydowanie szybszy i na ogół bardziej skuteczny niż manualny.

Jaki rodzaj testów wybrać? Jest to kwestia mocno indywidualna i uzależniona od kilku czynników. Zatrudnienie profesjonalnego testera bez wątpienia będzie droższym rozwiązaniem, a w dodatku obarczonym ryzykiem ludzkich błędów. Należy się też spodziewać, że czas testowania będzie nieco dłuższy niż w przypadku testowania automatycznego. Niewątpliwą zaletą jest jednak to, że wykwalifikowany tester będzie w stanie znaleźć i naprawić błędy, z którymi nie poradzi sobie maszyna.

Wybór testów automatycznych może być z kolei dobrym rozwiązaniem, jeśli szukamy oszczędności czasu i pieniędzy. Trzeba jednak pamiętać, że skuteczność tej metody również jest zależna od człowieka, który odpowiada w końcu za napisanie skryptu testowego.

Najlepszym rozwiązaniem będzie więc postawienie na zróżnicowane rodzaje testów oprogramowania, czyli połączenie testowania automatycznego z manualnym. Usprawni to cały proces zagwarantuje najwyższą skuteczność.

Poziomy testów oprogramowania

Przeprowadzanie zróżnicowanych typów testów na różnych poziomach oprogramowania pozwala znaleźć błędne fragmenty kodu w każdej fazie projektu. Dzięki temu produkt końcowy jest pozbawiony usterek i zakłócających elementów. Wyróżniamy 4 główne poziomy testowania oprogramowania:

  • Testy jednostkowe – są przeprowadzane na poziomie aplikacji zbliżonym do kodu źródłowego. Polegają na testowaniu pojedynczych metod, obiektów, modułów lub komponentów. Ich ogromną zaletą jest możliwość pełnej automatyzacji procesu testowania oraz znajdowanie błędów natychmiast po ich pojawieniu się.
  • Testy integracyjne – sprawdzają jakość współpracy pomiędzy poszczególnymi modułami programu. Dzięki nim możemy dowiedzieć się, czy interakcja między aplikacją a bazą danych jest na właściwym poziomie. Testy integracyjne mogą wykrywać błędy w interfejsach i połączeniach między obiektami. Warto zaznaczyć, że im większy zakres integracji, tym trudniej wskazać miejsce występowania błędu.

Testy tego typu występują zawsze po testowaniu jednostkowym. Są też bardziej skomplikowane, ponieważ wymagają uruchomienia wielu elementów aplikacji. Testy integracyjne umożliwiają sprawdzenie programu finalnego.

  • Testy systemowe – analizują kompletny, zintegrowany system. Dzięki nim możliwa jest ocena działania całego systemu w kontekście postawionych wymagań biznesowych, technicznych, funkcjonalnych oraz dotyczących architektury oprogramowania. Testy systemowe przeprowadzane są w środowisku zbliżonym do produkcyjnego.
  • Testy akceptacyjne – na tym poziomie system badany jest pod kątem realizacji wymagań klienta. Dzięki niemu można znaleźć błędy ortograficzne, kosmetyczne, a także problemy, które mogą zagrozić działaniu całego produktu.

Jakie typy testów oprogramowania wyróżniamy?

W zależności od obszaru działania oraz zastosowania możemy wyróżnić kilka typów testów. Wykorzystując je, jesteśmy w stanie analizować poszczególne elementy programu na konkretnych etapach produkcji. Pozwala to na skuteczne sprawdzenie kodu całego oprogramowania. 

Testy funkcjonalne

Testy funkcjonalne zajmują się zewnętrznym zachowaniem oprogramowania i nazywane nazywane są również czarnoskrzynkowymi. Są odpowiedzialne za testowanie zabezpieczeń programu oraz jego współdziałania z konkretnymi modułami.

Funkcje testowane za pomocą testów funkcjonalnych często opisywane są w specyfikacjach wymagań. Definiują one czynności wykonywane przez oprogramowanie. W prosty sposób wykrywają błędy, jednak nie dostarczają precyzyjnych informacji na temat ich przyczyny wystąpienia.

Tester w tym przypadku nie musi dokładnie znać kodu czy struktury wewnętrznej – testowanie funkcjonalne zwraca mu po prostu dane wyjściowe po wprowadzeniu danych wejściowych. Nie skupia się jednak na tym, w jaki sposób te informacje zostają generowane.

Do testów funkcjonalnych zaliczyć możemy między innymi testy eksploracyjne. Opierają się one na doświadczeniu i intuicji testera. Wykorzystuje się je w momencie, kiedy nie mamy dostępu do pełnej dokumentacji, a inny rodzaj testowania jest awykonalny. W przypadku prostych aplikacji testy eksploracyjne są świetnym rozwiązaniem, ponieważ nie są skomplikowane i czasochłonne.

Co ważne, testy funkcjonalne mogą być wykonywane na każdym poziomie testowania.

Testy niefunkcjonalne

Testy te opierają się na sprawdzaniu atrybutów niefunkcjonalnych. Pozwalają określić parametry testowanego programu i zrozumieć, jak dokładnie on działa. Możemy zaliczyć do nich między innymi testowanie:

  • wydajnościowe – określa wydajność systemu. Aby sprawdzić program pod tym kątem, należy uruchomić jak najwięcej działań, które mocno go obciążą. Czas odpowiedzi pokaże, jak wydajny jest program.
  • obciążeniowe – pokazuje, w jaki sposób oprogramowanie zachowuje się podczas wysokiego obciążenia. Poprzez zwiększanie liczby użytkowników i wykonywanych przez nich działań można sprawdzić, jak system radzi sobie w trudniejszych warunkach.
  • użyteczności – sprawdza, czy oprogramowanie jest intuicyjne i łatwe w obsłudze dla użytkowników.
  • niezawodności – testuje oprogramowanie pod kątem sprawności funkcjonalności w określonych warunkach.

Niektóre podziały testowania atrybutów niefunkcjonalnych zaliczają do nich również testy integracyjne, które analizują, w jaki sposób funkcjonują połączenia pomiędzy modułami. Testy niefunkcjonalne, podobnie jak funkcjonalne, również można przeprowadzać na każdym poziomie testowania.

Testy strukturalne

Testy te nazywane są białoskrzynkowymi. Podobnie jak w przypadku testów niefunkcjonalnych i czarnoskrzynkowych, testy strukturalne mogą być przeprowadzane na każdym poziomie testowania.

Testy białoskrzynkowe warto przeprowadzić tuż po testowaniu opartym na specyfikacji, aby zwiększyć dokładność pomiarów. Wykorzystywanie testów strukturalnych umożliwia pomiar precyzji obszaru testowanego dzięki oszacowaniu stopnia pokrycia wybranego typu struktury przez inne typy testów. Jeśli pomiar wynosi mniej niż 100%, można opracować nowe typy testów, które zwiększą poziom pokrycia struktury.

Testy potwierdzające (regresywne)

Po zakończeniu procesów testowych oraz wykryciu i naprawie usterek należy jeszcze wykonać retest potwierdzający sprawne działanie programu. Tym właśnie jest testowanie regresywne. Polega ono przede wszystkim na ponownym sprawdzeniu oprogramowania pod kątem znalezienia ukrytych wad i błędów. Testy potwierdzające mogą być wykonywane dla wszystkich typów testów i poziomów testowania. Co więcej, ze względu na to, że wymagają powtarzalności, można je łatwo zautomatyzować.

 

Aby dowiedzieć się więcej o poziomach testowania, typach testów lub skorzystać z usług wykwalifikowanych testerów, skontaktuj się z nami. Nasi eksperci dobiorą dla Ciebie zespół i narzędzia, które pozwolą Ci gruntownie przetestować Twoje oprogramowanie i zapewnić jego jakość zarówno pod kątem technicznym, jak i funkcjonalnym.

Podobne wpisy