Testy systemowe

Czym są testy systemowe?

 

Testy systemowe mają na celu analizę i ocenę działania kompletnego, zintegrowanego już systemu w odniesieniu do przedstawionych wcześniej wymagań. Czytaj dalej, by dowiedzieć się m.in.: czym konkretnie są testy systemowe, jakie są ich wady i zalety oraz do czego służą i jak je przeprowadzić?

Testy systemowe — co to?

 

Testy systemowe są poziomem testowania oprogramowania, które jest wykonywane na kompletnej i w pełni zintegrowanej aplikacji, w celu oceny zgodności systemu z  określonymi wcześniej wymaganiami. 

 

Celem testowania systemowego jest kompleksowa i szczegółowa ocena systemu. Z tego powodu tak ważne jest, aby testy systemowe wykonywane były w środowisku jak najbardziej zbliżonym do tego produkcyjnego (na którym system będzie działał docelowo). Na tym etapie bardzo ważne jest również wykrycie jak największej ilości awarii powodowanych przez błędy środowiskowe, które mogłyby w przyszłości utrudniać korzystanie z aplikacji użytkownikom.

 

Testy systemowe służą weryfikacji zwykle ukończonego systemu (chociaż możemy przeprowadzać testy systemowe wielokrotnie na różnych etapach cyklu życia oprogramowania), tak by upewnić się, że działa on zgodnie z przeznaczeniem. Sprawdzają one zarówno funkcjonalne jak i niefunkcjonalne wymagania systemowe, a także jakość testowanych danych. Do przeprowadzania testów systemowych wykorzystuje się technikę czarnej skrzynki. Warto tu zaznaczyć, że tego typu testy  (w modelowym przypadku) powinny być przeprowadzane przez niezależną grupę testerów.

 

Rodzaje testów systemowych

 

Obecnie istnieje ponad 50 rodzajów testów systemowych, do najczęściej używanych należą:

 

    • testy regresji
    • test użyteczności
    • testy obciążenia
    • testy wydajności
    • testy konserwacyjne
    • testy migracji
    • testy funkcjonalności
    • testy bezpieczeństwa
    • testy zgodności
    • testy instalacji
    • testy skalowalności
    • testy niezawodności

 

Testy systemowe — kiedy się je przeprowadza?

 

Testy systemowe przeprowadza się w momencie, gdy wszystkie elementy systemu zostaną już ze sobą zintegrowane. Jest to czas, w którym sprawdzana jest funkcjonalność systemu. Na tym etapie zastosować można testy e2e (end to end), które przeprowadzane są z punktu widzenia użytkownika końcowego. Tego typu testowanie obejmuje całe scenariusze testowe przykładowo: od założenia konta i logowania do systemu, poprzez wykonanie operacji kluczowych (np. kupienie produktu), aż po wylogowanie. Dzięki tego typu testom można określić, w jakim stopniu opracowany system spełnia pierwotne wytyczne.

 

Do podstaw testów systemowych zalicza się: wymagania systemu, przypadki użycia, specyfikację funkcjonalną oraz raporty z analizy ryzyka. Natomiast typowymi obiektami testów są zazwyczaj: konfiguracje systemu i dane konfiguracyjne, podręczniki użytkownika, systemowe i operacyjne. Na tym etapie przeprowadzane są także  testy niefunkcjonalne, takie jak np.: testy wydajności, niezawodności czy obciążeniowe. Celem tego typu testów jest odnalezienie błędów oraz upewnienie się, czy aplikacja działa zgodnie z wymaganiami. Testy systemowe są zazwyczaj dość złożone i czasochłonne, gdyż z reguły dotyczą  wielu warstw aplikacji.

 

Z których typów testów systemowych korzystają testerzy?

 

Jak już wspomnieliśmy wcześniej, istnieje ogromna ilość typów testów systemowych. Których z nich używają testerzy? To zależy od kilku czynników. Przed przystąpieniem do wyboru, należy odpowiedzieć sobie na poniższe pytania:

  • Kim jest zlecający testy? To dla kogo pracuje tester, jest głównym czynnikiem, określającym rodzaje testów, z których on skorzysta. Metody stosowane przez duże firmy, często różnią się od tych wykorzystywanych w niewielkich przedsiębiorstwach.
  • Jaki jest budżet testowy? Ilość pieniędzy przeznaczonych na testowanie to czynnik kluczowy, nie tylko wśród niewielkich firm i indywidualnych programistów, ale i dużych korporacji. Od niego zależy również dobór rodzaju testów systemowych.
  • Jakie są zasoby dostępne dla testera? Oczywiste jest, że nie każdy z testerów będzie posiadał dostęp do wszystkich typów testów. Przykładowo Ci pracujący dla dużych firm, mogą mieć dostęp do drogich oprogramowań, dzięki którym można przeprowadzać testy automatyczne, niedostępne dla innych.
  • Jakie są umiejętności testera? Dla każdego dostępnego rodzaju testowania oprogramowania istnieje pewna krzywa uczenia się. Aby korzystać z części oprogramowania, tester musi nabyć odpowiednie umiejętności.
  • Ile jest czasu przeznaczonego na testy? Ograniczona ilość czasu przeznaczonego na testy sprawia, że często trzeba ograniczyć się wyłącznie do tych, które są najbardziej odpowiednie dla projektu oprogramowania.

Testowanie systemowe — prosty przykład

Zakładamy, że testujemy funkcjonalność wykonywania połączeń określonego telefonu komórkowego (np. Samsung Galaxy S22)

Wymaganiami wstępnymi są: posiadanie Samsunga Galaxy S22 i karty SIM.

Zarówno Samsung Galaxy S22, jak i karta SIM są produkowane osobno. Gdy już posiadamy te dwa elementy, musimy włożyć kartę do Samsunga Galaxy S22, aby ją przetestować.

Włożenie karty do telefonu umożliwia wykonanie testów integracyjnych, podczas gdy testowanie funkcji dzwonienia po włożeniu karty SIM umożliwia wykonanie testów systemowych.

 

Warto wspomnieć, że testowanie systemowe jest trzecim poziomem testowania i wykonuje się je po przeprowadzeniu testów integracyjnych, ale przed testami akceptacyjnymi.

 

Procedura wykonywania testów systemowych

 

Proces testowania systemu różni się w zależności od projektu. Mimo to poniższe kroki są powszechnie stosowane w procesie testowania systemowego.

Kroki, które należy wykonać, aby wykonać testowanie systemowe, są następujące:

  • Konfiguracja środowiska testowego: konfigurowanie oddzielnego środowiska do testowania systemu, w celu uzyskania lepszej jakości testów.
  • Tworzenie planu testów: stworzenie planu, według którego należy postępować.
  • Tworzenie przypadków testowych: tworzenie przypadków testowych na podstawie przedstawionych wymagań.
  • Tworzenie danych testowych: utworzenie prawidłowych danych testowych, w celu utrzymania wysokiej jakości przeprowadzanych testów.
  • Wykonywanie scenariuszy testowych: przy testowaniu systemowym powinno się postępować  zgodnie ze scenariuszami testowymi testowymi.
  • Zgłaszanie defektów: zgłoszenie wykrytych błędów, przy użyciu odpowiedniego szablonu raportu o błędzie.
  • Ponowny test i test regresji (jeśli jest wymagany): należy powtórzyć cykl testu, jeśli poprzedni się nie powiedzie.
  • Raporty z testów

Plusy i minusy testów systemowych

Poniżej przedstawiamy największe wady i zalety testów systemowych.

 

Plusy testów systemowych:

  • Do przeprowadzania tego typu testów nie wymagana jest biegła znajomość programowania.
  • Testy systemowe pozwalają na sprawdzenie całego produktu bądź oprogramowania, dzięki czemu odnaleźć można defekty niewykryte przy testach jednostkowych czy integracyjnych.
  • Środowisko testowe jest zbliżone do środowiska produkcyjnego
  • Testy te sprawdzają całą funkcjonalność systemu za pomocą różnych skryptów testowych, a także obejmują wymagania techniczne i biznesowe klientów.

Wady testowania systemowego:

  • Testy systemowe generują duże koszty
  • Wymagają dużo czasu. Testowanie tego typu jest procesem bardziej czasochłonnym, gdyż obejmuje dokładne sprawdzenie całego oprogramowania

Czym zatem są testy systemowe? 

 

Testy systemowe przeprowadzane są, gdy system jest już w pełni zintegrowany. Ich celem jest odnalezienie błędów oraz sprawdzenie, czy dany produkt działa zgodnie z założeniami. Testy tego typu wykonywane są w warunkach najbardziej zbliżonych do środowiska produkcyjnego, a testuje się je pod kątem spełniania wymagań funkcjonalnych i niefunkcjonalnych. Testy systemowe przeprowadzane są przy użyciu techniki czarnej skrzynki, a (w modelowym przypadku) testerzy są niezależni i nie znają wewnętrznej budowy, czy implementacji oprogramowania

 

Notatka o autorze:

Zajmuję się testowaniem, zabezpieczaniem i zapewnianiem jakości oprogramowania od ponad 13 lat. Rozpocząłem swoją karierę od testów manualnych i analizy biznesowo-technicznej. Obecnie prowadzę firmę Quality Island, która zajmuje się szeroko pojętym testowaniem oprogramowania oraz szkoleniami dla przyszłych i obecnych testerów oprogramowania. Moją specjalnością są testy automatyczne aplikacji webowych oraz budowa procesów automatyzacji i robotyzacji. Od 8 lat prowadzę aktywnie szkolenia oraz konsultacje z tych tematów i wykonuję zlecenia dla firm trzecich jako konsultant, ekspert oraz audytor. Współpracuję również z firmami jako osoba do rekrutacji i weryfikacji technicznych. Interesują mnie głównie tematy związane z architekturą IT oraz zagadnienia DevOps/TestOps, ponieważ ściśle wiążą się z zapewnianiem jakości oprogramowania.

 

Tomasz Stelmach

CEO&Founder

 

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *