Testy wydajnościowe (performance testing) są jednym z kluczowych elementów procesu zapewniania jakości w ramach rozwoju systemów i aplikacji biznesowych. Mimo to, w dalszym ciągu znaczenie testów wydajnościowych jest niedoceniane, a zasadność ich przeprowadzania budzi wątpliwości. W dużej mierze wynika to z braku świadomości i wiedzy o korzyściach, jakie niesie testowanie wydajności i ryzykach w przypadku pomijania tego ważnego kroku w zapewnianiu jakości.
W poniższym artykule postaramy się wyjaśnić dlaczego testowanie wydajności ma kluczowe znaczenie dla prawidłowego działania aplikacji biznesowych oraz jaki ma to bezpośredni wpływ na biznes.
Jakie mamy typy testów wydajnościowych?
Wydajność systemu, aplikacji lub oprogramowania, która ma pozostawić na użytkowniku pozytywne wrażenie, może być testowana pod różnym kątem:
-
testowanie wydajnościowe to najszersze pojęcie i koncentruje się na wydajności czyli responsywności systemu
-
testowanie obciążenia ma na celu ocenę zdolności danej aplikacji lub systemu do obsługi rosnącego obciążenia
-
testowanie przeciążeniowe skupia się na sprawdzeniu zdolności systemu do obsługi szczytowych obciążeń, które przekraczają pewne założone granice
-
testowanie skokowe ma za zadanie oszacować zdolność systemu do właściwego reagowania na nagłe obciążenie skokowe oraz powrót do stanu stabilnego
-
testowanie przepustowości pozwala określić ilość transakcji lub użytkowników, którą jest w stanie obsłużyć system, zachowując jednocześnie określone cele wydajnościowe.
Dlaczego testy wydajnościowe to kluczowy element w zapewnieniu jakości systemów i aplikacji?
Rodzaje testów wydajnościowych
Dla każdego przedsiębiorcy niezwykle ważne jest niezakłócone i wydajne działanie aplikacji biznesowych, co w rezultacie przekłada się na satysfakcję klienta końcowego. Ta z kolei w branży np. e-commerce ma bezpośredni wpływ na współczynnik „return rate”. Testowanie wydajności przed uruchomieniem aplikacji lub testowanie po wprowadzeniu zmian w aplikacji pomaga upewnić się, że aplikacja działa płynnie i niezawodnie, niezależnie od ilości korzystających z niej użytkowników jednocześnie, czy przyrostu ilości danych. Testy obciążeniowe i przeciążeniowe aplikacji mają szczególne znaczenie przed rozpoczęciem sezonu największego ruchu, jak okres przedświąteczny czy czas wyprzedaży.
Wydajność systemu i wykorzystanie zasobów
Rezultatem przeprowadzania testów wydajnościowych aplikacji jest również optymalizacja wykorzystania zasobów IT. Dotyczy to środowisk on-premise jak również aplikacji bazujących na rozwiązaniach chmurowych, w których konfiguracja poprawności autoskalowania środowiska chmurowego jest podstawowym weryfikowanym elementem. Niepoprawne działanie mechanizmów autoskalowania środowiska w chmurze w przypadku nieplanowanego wzrostu obciążenia systemu w praktyce może oznaczać ogromne koszty działania infrastruktury chmurowej, lub niedostępnością aplikacji dla części jej użytkowników.
Duża liczba użytkowników w określonym czasie
Realizując zadania biznesowe, nie zawsze można przewidzieć sytuacje, w których aplikacja będzie musiała obsłużyć dużą liczbę użytkowników. Stąd tak ważne jest sprawdzenie wydajności w różnych warunkach obciążenia, zanim faktycznie to nastąpi. W wyniku regularnego przeprowadzania testów wydajnościowych można zidentyfikować wąskie gardła dla procesów biznesowych, systemów i środowisk i właściwie przygotować się na wystąpienie takich sytuacji.
Podejmując działania zapobiegawcze, do których należą testy aplikacji w ekstremalnych warunkach, których nie da się odwzorować podczas standardowego ruchu klientów, możemy uniknąć kosztownych błędów i strat wizerunkowych.
Co jest głównym celem testów wydajnościowych? Pozytywne doświadczenie użytkownika!
Działania te realizowane są przede wszystkim w celu zapewnienia jakości i efektywności działania systemu, co bezpośrednio wpływa na odbiór użytkownika podczas korzystania z aplikacji.
Kiedy testowanie wydajnościowe jest szczególnie ważne?
Przykład sklepu internetowego, e-commerce, e-handel
Sklepy internetowe to doskonały przykład aplikacji biznesowej, która zawsze powinna być gotowa na duże obciążenie – zwłaszcza podczas okresowych promocji, sezonu wyprzedaży lub świątecznych zakupów. Testy wydajnościowe pozwalają zweryfikować w kontrolowanym środowisku i czasie, czy aplikacja działa sprawnie dla przewidywanej lub maksymalnej liczby odwiedzających ją użytkowników.
Typowe scenariusze z biznesowego punktu widzenia, a możliwe do sprawdzenia pod kątem wydajności i skokowego obciążenia, obejmują standardowy proces zakupowy:
- wejście na stronę z reklamy w serwisie społecznościowym
- założenie konta w serwisie
- potwierdzenie rejestracji przez e-mail
- sortowanie listy produktów ze względu na kolor, rozmiar lub cenę
- dodanie produktów do koszyka zakupowego
- realizację płatności.
Zdajemy sobie sprawę, że długi czas odpowiedzi jest najczęstszą przyczyną porzuconych koszyków i niechęci konsumentów do ponownych zakupów, dlatego zwracamy uwagę na konieczność testów w sektorze e-commerce.
Systemy bankowe i operatorzy płatności
W przypadku systemów bankowych udostępnianych użytkownikom końcowym, testy wydajnościowe są szczególnie ważne, ponieważ klienci banku oczekują dostępu do swojego konta bankowego w aplikacji w trybie 24/7. Awaria lub opóźnienia mogą prowadzić do utraty zaufania klientów, co jest prostą drogą do ich utraty. Każdy użytkownik chce mieć pewność, że jego środki finansowe są w bezpiecznym miejscu.
Jedną z typowych ścieżek testów wydajnościowych jest przejście przez cały proces tworzenia i zlecania przelewu bankowego. Może on obejmować:
-
wejście na stronę banku lub logowanie w aplikacji mobilnej,
-
utworzenie nowego przelewu,
-
wypełnienie wszystkich pól oraz zatwierdzenie przelewu.
Tego typu testy mogą być zrealizowane poprzez zwielokrotnioną symulację procesu biznesowego w aplikacji bankowej jak i z wykorzystaniem dostępu do warstwy API.
Dodatkowo bankowość z perspektywy IT i aplikacji to nie tylko portale dla klientów, ale mnóstwo aplikacji wewnętrznych banku, często poddawane zmianom, parametryzacji i konfiguracji wymuszanej regulacjami prawnymi.
W sektorze bankowym testy wydajnościowe są niezbędne do utrzymania sprawnego funkcjonowania systemów w ostatnim dniu wysyłania przelewów podatkowych lub w okresie np. intensywnych zakupów, kiedy masowo dokonuje się płatności kartami.
W przypadku tych systemów, wydajność i ciągłość ich działania przekłada się bezpośrednio na dostępność usług dla klientów końcowych banku, ale również na koszty obsługi bankowego back-office.
Platformy OTT (Over-The-Top- Streamig czy VoD)
W przypadku platform streamingowych, testy wydajnościowe są niezbędne do zapewnienia ciągłego dostępu do treści nawet w przypadku wzrostu liczby jednoczesnych użytkowników.
Jednym z typowych scenariuszy w naszym doświadczeniu, jest symulowanie narastającego ruchu użytkowników tuż przed, ale również po rozpoczęciu wydarzenia. Symulujemy również użytkowanie serwisu przez określony czas oraz badamy maksymalną liczbę użytkowników, którzy bez przeszkód i utraty jakości mogą korzystać z platformy. Scenariusz może obejmować również rejestrację, logowanie, potwierdzenie e-mail, ale również płatność za jednorazową usługę.
Platformy do spotkań online i prowadzenia webinarów
Obecnie edukacja w trybach zdalnym i hybrydowym nie jest niczym nadzwyczajnym. Kursy, warsztaty, szkolenia, a także zajęcia na uczelniach wyższych są dostępne również w wersji online. Platformy e-learningowe muszą działać bez zakłóceń, aby zapewnić kursantom i studentom stabilną i efektywną naukę w trakcie zajęć.
Jak wygląda przykładowy scenariusz testowania?
-
przejście ze strony w social mediach
-
rejestracja uczestników
-
potwierdzenie e-mail
-
wysłanie linku do spotkania
-
logowanie do spotkania
-
oraz dostęp on-demand w jednej chwili dla wielu osób.
Taka symulacja może obejmować nawet ponad godzinne spotkanie, a testowanie obciążenia platformy online pozwala sprawdzić stabilność jej działania.
Systemy Logistyczne w kontekście testowania wydajnościowego
Opóźnienia i błędy w dostawach to jedne z najczęstszych problemów w firmach logistycznych. Oczywiście przyczyn zwykle jest kilka, jednak niezaprzeczalnie bardzo duży wpływ na terminowość i rzetelność dostaw ma poprawnie działająca aplikacja. Przykładowy scenariusz testów obejmuje:
-
zebranie przez API danych z wielu źródeł
-
wyliczenie trasy jaką ma przebyć przesyłka
-
obliczenie ceny za transport, włączając w to generowanie komunikatów i informowanie adresatów o statusie przesyłki.
Systemy Biletowe w Komunikacji Zbiorowej a testy wydajnościowe
W przypadku testowania wydajności systemów biletowych w komunikacji miejskiej, należy uwzględnić czas największego ruchu, np. godziny szczytu (godziny poranne i popołudniowe). W tym czasie z transportu publicznego korzysta najwięcej pasażerów dojeżdżających lub wracających ze szkoły lub pracy.
Oprócz godzin szczytu, duże znaczenie w transporcie publicznym ma również sezonowość. Przykładowo, w okresie przedświątecznym, kiedy robimy więcej zakupów, więcej także korzystamy z komunikacji miejskiej. Także różne imprezy i wydarzenia organizowane na dużą skalę, jak koncerty, mecze, imprezy sportowe lub obchody wiążą się ze wzmożonym ruchem i masowym przemieszczaniem mieszkańców.
Stąd tak ważne jest także zweryfikowanie sprawności działania systemów biletowych, pod kątem czasu odpowiedzi systemu – mianowicie ile trwa proces zakupu biletu, czy system w tym czasie się zawiesza, wyłącza, lub nie może zrealizować żądania zakupu z powodu przeciążenia. Zapewne każdy z nas miał do czynienia z sytuacją, kiedy mimo kilku prób nie mógł nabyć biletu przewozu, bo system nie był w stanie przeprocesować żądania.
Analogiczna sytuacja dotyczy przewozów pasażerskich krajowych, zarówno transportu autobusowego jak i kolejowego, kiedy największy ruch generowany jest w okresie wakacji, ferii zimowych czy długich weekendów. W tym okresie następuje nie tylko masowy zakup biletów, ale również zmiany w rezerwacjach już nabytych biletów oraz zwroty biletów.
Jak wyglądają typowe scenariusze testów systemu biletowego?
W oparciu o nasze doświadczenie i zrealizowane przypadki testowe, przykładowy plan testów wydajności może wyglądać następująco:
-
wybranie na mapie przystanku początkowego i końcowego
-
obliczenie najkrótszej trasy
-
wygenerowanie listy przystanków, które mijamy w drodze do celu
-
proces płatności.
Taka symulacja może obejmować 5000 użytkowników w jednej sekundzie, którzy dokonuję jednocześnie transakcji zakupu biletu, dzięki czemu zyskujemy wiedzę na temat mocy przerobowej testowanego systemu.
Rola testów w branży mediowej
Głównym celem mediów masowych jest zapewnienie ciągłego i niezakłóconego dostępu do informacji. Ma to szczególne znaczenie w sytuacjach nagłych i szczególnie ważnych wydarzeń, które wzbudzają ogromne zainteresowanie i dotyczą szerszej części społeczeństwa. Serwisy informacyjne są w tym czasie wręcz szturmowane przez żądnych wiedzy internautów. Media stają wtedy przed nie lada wyzwaniem zapewnienia wszystkim użytkownikom szybkiego i stabilnego dostępu do platform informacyjnych.
Jak taki dostęp zapewnić? Wykonując wcześniej odpowiednie testy wydajnościowe, które dadzą nam odpowiedź o ograniczeniach, wskażą wąskie gardła, możliwe zakłócenia oraz obszary. które należy poprawić.
Wykorzystaj potencjał testów wydajnościowych i wznieś swój biznes na wyższy poziom
Testy wydajnościowe są bardzo ważne w zapewnieniu optymalnej wydajności, efektywnego wykorzystania zasobów oraz gotowości na wszelkie wyzwania związane z nagłym wzrostem liczby użytkowników lub przyrostu danych.
Jeśli nie wiesz od czego zacząć i chciałbyś skonsultować się z ekspertem, nie wahaj się wypełnić formularza kontaktowego i umówić na bezpłatne spotkanie. Zespół Soflab Technology specjalizuje się w obszarze Software Quality Engineering. Realizujemy testy o różnym stopniu komplikacji i zaawansowania, zarówno dla małych i średnich firm jak i globalnych korporacji z branży medycznej, energetycznej, telekomunikacyjnej, bankowej, finansowej, logistycznej i mediowej.
Zapewniamy indywidualne podejście, jesteśmy niezależni od dostawców narzędzi testowych i proponujemy najlepsze możliwe według nas rozwiązania. Co więcej, jesteśmy w stanie pokryć zapotrzebowanie na różne kompetencje na wszystkich etapach projektu: od konsultacji, przez analizę, przegląd i projektowanie procesu testowego, po wdrażanie narzędzi testowych, realizację, koordynację i optymalizację całego projektu testowania.