Testy obciążeniowe w oprogramowaniu: znaczenie i przykłady

⚡ Inteligentne podsumowanie

Testy obciążeniowe (Soak Testing) polegają na długotrwałym, realistycznym obciążeniu aplikacji, aby wykryć problemy, które pojawiają się dopiero po pewnym czasie. Wycieki pamięci, wyczerpanie połączenia i spadek wydajności to defekty, które ma on wykrywać.

  • 🕒 Długi czas trwania: Realistyczny ładunek wytrzymywany przez wiele godzin lub dni, a nie krótkotrwały.
  • 💧 Pierwotny Target: Wycieki pamięci i wszelkie zasoby, które są przydzielane, ale nigdy nie zwalniane.
  • 📉 Kontrola degradacji: Czasy reakcji muszą być stałe przez cały czas trwania zadania, a nie tylko dobre na początku.
  • 🗄️ Skupienie się na bazie danych: Tutaj widoczne są pule połączeń, otwarte kursory i rosnące tabele dzienników.
  • Realizm czasowy: Uwzględnij zadania zaplanowane i okna wsadowe występujące w okresie nagrzewania.
  • 📊 Zasada werdyktu: Płaska krzywa zasobów zachowuje się prawidłowo; natomiast stale rosnąca krzywa zawodzi nawet w pewnych granicach.

Czym jest test zanurzeniowy

Czym jest testowanie zanurzeniowe?

Testowanie namaczania to rodzaj testów niefunkcjonalnych, które służą do pomiaru wydajności aplikacji pod ogromnym obciążeniem przez dłuższy okres czasu. Celem testów Soak jest upewnienie się, czy aplikacja wytrzymuje duże natężenie użytkowania oraz sprawdzenie, co stanie się poza oczekiwaniami projektowymi.

Poniższy obraz przedstawia cykl testowy pokazujący, na jakim etapie znajduje się test namaczania (Rodzaj testu wydajności) jest wykonywana w aplikacji.

Testowanie namaczania

W tego typu testach zasadniczo monitorowane jest wykorzystanie pamięci przez aplikację w systemie. Testuje się na poziomie systemu, aby sprawdzić, czy system wytrzyma bardzo duże natężenie użytkowania i zobaczyć, co stanie się poza jego oczekiwaniami projektowymi.

Dlaczego warto testować namoczenie?

System może zachowywać się normalnie, gdy jest używany przez 2 godziny, ale gdy ten sam system jest używany nieprzerwanie przez 10 godzin lub dłużej, może ulec awarii lub zachowywać się nienormalnie/losowo/może ulec awarii. Aby przewidzieć taką awarię, przeprowadza się testowanie zanurzeniowe.

Kiedy wykonać test namaczania?

Testy zanurzeniowe należy przeprowadzać w następujących scenariuszach: –

  1. Zanim build zostanie wdrożony u klienta, tj. przed wydaniem jakiejkolwiek aplikacji na określonej platformie, musi przejść pomyślnie serię testów obciążeniowych przy wysokim lub równoważnym poziomie ruchu. Następnie przeprowadza się badanie nasiąkania. Pomaga nam określić, jak uruchomić dowolną konkretną aplikację przez dłuższy czas. Jeśli w okresie, np. w trybie Soak, zostaną wykryte problemy takie jak wycieki/uszkodzenia pamięci, należy to natychmiast zgłosić.
  2. Najlepszy czas na testowanie namaczania to weekendy, ponieważ aplikacja musi działać tak długo, jak przez dzień lub noc. Zależy to całkowicie od ograniczeń sytuacji testowej. Testy namaczania są jednym z najważniejszych wymogów zgodności, których każda firma musi bardzo rygorystycznie przestrzegać.

Strategia testowania namaczania

Testowanie długotrwałej sesji to strategia polegająca na tym, że system jest obciążony przez dłuższy czas.

Prostym przykładem jest sytuacja, gdy użytkownik pozostaje zalogowany do systemu przez wiele godzin, wykonując szereg transakcji biznesowych. W ten sposób powstaje wiele danych. Może wystąpić duże obciążenie na serwerze systemu/bazy danych, co może skutkować zatrzymaniem/awarią systemu/serwera bazy danych.

W ramach testu namaczania przy długiej sesji, czynności wielodniowe (powiedzmy 30 dni) są wykonywane w ograniczonych ramach czasowych (powiedzmy 2 dni). Liczba transakcji w tym ograniczonym przedziale czasowym powinna odpowiadać lub przewyższać liczbę transakcji obejmujących wiele dni. Należy skupić się na liczbie przetworzonych transakcji. Najważniejszą częścią testu namaczania jest sprawdzenie dostępnej pamięci w procesorze i ilości pamięci, która będzie używana. Musimy zarejestrować użycie pamięci na początku i na końcu testu namaczania. W razie potrzeby należy uwzględnić wykorzystanie pamięci przez obiekty takie jak Java Maszyny wirtualne są również ważne i należy je monitorować.

Poniżej znajduje się kilka dodatkowych kontroli, które musi wykonać każdy użytkownik/tester przed rozpoczęciem testowania zanurzenia:

a) Monitoruj zużycie zasobów bazy danych.

b) Monitoruj zużycie zasobów serwera (bez wykorzystania procesora).

c) Test namaczania powinien być uruchamiany przy realistycznej współbieżności użytkowników.

Charakterystyka badania nasiąkania

Standardowa metoda testowania zanurzeniowego powinna mieć następujące cechy: –

  • Czas trwania większości testów namaczania jest często określany na podstawie dostępnego czasu.
  • Każda aplikacja musi działać bez przerwy, jeśli wymaga dłuższego czasu.
  • Powinien obejmować wszystkie scenariusze uzgodnione przez zainteresowane strony.
  • Przeważnie każdy system ma regularne okno konserwacji, a czas pomiędzy takimi oknami jest kluczowym czynnikiem przy określaniu zakresu testu namaczania.

Przykłady testów zanurzeniowych

  • W przypadku domeny bankowej, gdzie jest duża ilość danych od sprzedawców, tester będzie obciążał system nieprzerwanie od 70 do 150 godzin, aby sprawdzić, jak aplikacja zachowuje się w tym okresie ładowania.
  • Załóżmy, że jest 33,000 60 logowań, które muszą zostać przepuszczone przez system, co stanowi siedem i pół dnia aktywności. W tym przypadku 70-6 godzin Soak Test można rozpocząć w piątek wieczorem około godziny XNUMX:XNUMX, a zakończyć go można Monday rano o 6 rano. Tylko dzięki takiemu testowi możliwe będzie zaobserwowanie jakiegokolwiek pogorszenia wydajności w kontrolowanych warunkach.
  • W przypadku gier wideo, Mobile aplikacje itp. wymagają pozostawienia gry lub aplikacji w stanie uruchomionym na dłuższy czas, w różnych trybach działania - takich jak bezczynność, wstrzymanie na ekranie tytułowym itd., aby sprawdzić, czy aplikacja jest w stanie obsłużyć oczekiwane ciągłe obciążenie.

Typowe problemy obserwowane podczas testów namaczania

  1. Alokacja pamięci (wycieki pamięci, które ostatecznie skutkują kryzysem pamięci lub błędami zaokrąglania, które ujawniają się dopiero z czasem).
  2. Wykorzystanie zasobów bazy danych (niepowodzenie zamknięcia kursorów bazy danych w pewnych warunkach, co ostatecznie doprowadziłoby do zatrzymania całego systemu).
  3. Może to również prowadzić do pogorszenia wydajności, tj. do zapewnienia, że ​​czas reakcji po długim okresie ciągłej aktywności będzie tak dobry, jak na początku testu.
  4. Niezamknięcie połączeń między warstwami systemu wielowarstwowego w pewnych okolicznościach może spowodować zablokowanie niektórych lub wszystkich modułów systemu.
  5. Stopniowa degradacja czasu odpowiedzi niektórych funkcji, gdy wewnętrzne struktury danych stają się mniej wydajne podczas długiego testu.

Jak ten test pasuje do rodziny testów wydajnościowych

Testowanie wydajności to termin ogólny. Poniższe warianty różnią się jedynie kształtem przyłożonego obciążenia i czasem jego utrzymywania, dlatego tak często są ze sobą mylone.

Rodzaj testu Wzór obciążenia Pytanie, na które odpowiada
Testowanie obciążenia Oczekiwane obciążenie szczytowe, krótki czas trwania Czy system spełnia swoje cele przy normalnym, szczytowym natężeniu ruchu?
Test naprężeń Zwiększony ponad pojemność aż do awarii Gdzie następuje przerwa i czy awaria przebiega gładko?
Testowanie Spike'a Nagły, ekstremalny wzrost, a następnie wycofanie Czy przeżywa i dochodzi do siebie po szoku komunikacyjnym?
Testy wytrzymałościowe Normalne obciążenie utrzymywane przez wiele godzin Czy wydajność pogarsza się z czasem?
Testowanie zanurzeniowe Długotrwałe obciążenie przez dłuższy okres Czy występują wycieki pamięci lub wyczerpanie zasobów?
Testy stabilności Zmienne obciążenie w różnych warunkach Czy system pozostaje niezawodny w zmieniających się warunkach?
Testowanie głośności Zwykli użytkownicy, bardzo duża ilość danych Czy system radzi sobie ze wzrostem bazy danych?

Test wytrzymałościowy i test zanurzeniowy są często traktowane jako synonimy. W powszechnym użyciu są to: oba utrzymują stałe obciążenie przez długi czas. Tam, gdzie zespoły je rozróżniają, testy wytrzymałościowe koncentrują się na tym, czy czasy reakcji rosną, podczas gdy testy nasączenia koncentrują się na zużyciu zasobów, takich jak pamięć, uchwyty plików i pule połączeń. Uruchomienie takiego testu zazwyczaj dostarcza dowodów na oba te zjawiska.

Kluczowe wskaźniki do uchwycenia podczas testu

Wydajność testu jest tak dobra, jak to, co rejestrujesz podczas jego wykonywania. Zarejestruj te sześć parametrów po stronie serwera i klienta, a następnie porównaj je z danymi bazowymi, a nie z przeczuciem.

metryczny Co ci to mówi Znak ostrzegawczy
Średni czas odpowiedzi Typowe doświadczenie użytkownika Jakiekolwiek przesunięcie w górę w poprzek biegu
95. percentyl czasu reakcji Doświadczenia najwolniejszych użytkowników Znacznie powyżej średniej, co oznacza niespójność
Wydajność Liczba żądań obsłużonych na sekundę Spadek przy stałym obciążeniu
Poziom błędu Udział nieudanych lub przekroczonych limitów czasu żądań Każde przekroczenie ustalonego progu
Wykorzystanie procesora i pamięci Zapas zasobów serwera Pamięć, która pnie się w górę i nigdy nie powraca
Połączenia i wątki bazy danych Wyczerpanie basenu Liczba, która stale rośnie bez wydawania

Odczytaj średnią i percentyl jednocześnie. Średnia 800 ms przy 95. percentylu 900 ms opisuje spójny system. Ta sama średnia przy 95. percentylu 9 sekund oznacza, że ​​jeden na dwudziestu użytkowników ma problemy, a średnia to ukrywa.

Zwróć uwagę na kształt, nie tylko na wartość. W przypadku każdego długotrwałego testu płaska linia zasobów oznacza zaliczenie testu, a rosnąca – przeciek, nawet jeśli w chwili zakończenia testu liczba bezwzględna nadal mieści się w limicie.

FAQ

W powszechnym użyciu te dwa pojęcia oznaczają to samo. Tam, gdzie zespoły je rozróżniają, testy wytrzymałościowe mierzą spadek czasu reakcji, a testy namaczania mierzą zużycie zasobów. Jeden przebieg zazwyczaj dostarcza dowodów na oba te zjawiska.

Wystarczająco długi, aby objąć co najmniej jeden pełny cykl biznesowy, zazwyczaj od 8 do 72 godzin. Uruchomienie musi obejmować każde zaplanowane zadanie wsadowe lub proces nocny, ponieważ często one wyzwalają wyciek.

Krzywa pamięci, która stale rośnie i nigdy nie wraca do poprzedniego poziomu po usunięciu śmieci. Wartość bezwzględna ma mniejsze znaczenie niż nachylenie: każdy stały trend wzrostowy jest defektem.

Monitorowanie oparte na sztucznej inteligencji analizuje godziny danych telemetrycznych i sygnalizuje dokładny moment zmiany trendu, co jest niepraktyczne do ręcznej obserwacji na podstawie tysięcy punktów danych.

Częściowo. Modele mogą ekstrapolować trend zasobów i przewidywać ich wyczerpanie wcześniej, ale prognoza nadal wymaga rzeczywistego przebiegu, aby ją potwierdzić przed podjęciem decyzji o udostępnieniu.

Podsumuj ten post następująco: