Co to jest testowanie obciążenia? (Przykłady)

⚡ Inteligentne podsumowanie

Testowanie obciążenia mierzy zachowanie aplikacji, gdy wielu użytkowników korzysta z niej jednocześnie, aż do oczekiwanego szczytu obciążenia. Identyfikuje maksymalną przepustowość operacyjną, wąskie gardła, które ją ograniczają, oraz sprawdza, czy obecna infrastruktura jest wystarczająca.

  • 🠄¥ Definicja podstawowa: Test niefunkcjonalny, który stosuje oczekiwane szczytowe obciążenie użytkownika i mierzy reakcję.
  • ⏱️. Główny wskaźnik: Czas reakcji, który musi być ilościowy, odpowiedni, realistyczny, osiągalny i mierzalny.
  • 🏗️. Co znajduje: Maksymalna pojemność, luki w infrastrukturze, ograniczenia bazy danych i problemy z konfiguracją.
  • 📉 Obciążenie a naprężenie: Obciążenie zatrzymuje się w spodziewanym punkcie szczytowym; naprężenie celowo je przekracza, aby osiągnąć punkt krytyczny.
  • 🛠️. Opcje oprzyrządowania: JMeterGatling i k6 są systemami typu open source; LoadRunner jest uznanym wyborem komercyjnym.
  • 📋 Warunek wstępny: Należy go uruchomić dopiero wtedy, gdy aplikacja jest funkcjonalnie stabilna, w przeciwnym razie defekty mogą negatywnie wpłynąć na wydajność maski.

Czym jest testowanie obciążeniowe

Co to jest testowanie obciążenia?

Testowanie obciążenia jest niefunkcjonalnym procesem testowania oprogramowania, w którym wydajność aplikacji oprogramowania jest testowana przy określonym oczekiwanym obciążeniu. Określa, jak aplikacja oprogramowania zachowuje się, gdy jest dostępna dla wielu użytkowników jednocześnie. Celem testowania obciążenia jest poprawa wąskich gardeł wydajnościowych oraz zapewnienie stabilności i płynnego działania aplikacji oprogramowania przed wdrożeniem.

To badanie zwykle identyfikuje –

  • Maksymalna pojemność operacyjna aplikacji
  • Określ, czy aktualna infrastruktura jest wystarczająca do uruchomienia aplikacji
  • Trwałość aplikacji w odniesieniu do szczytowego obciążenia użytkownika
  • Liczba jednoczesnych użytkowników, których aplikacja może obsłużyć, oraz skalowalność umożliwiająca dostęp większej liczbie użytkowników.

Jest to rodzaj testów niefunkcjonalnych. W inżynierii oprogramowania testowanie obciążenia jest powszechnie stosowane w przypadku aplikacji typu klient/serwer oraz aplikacji internetowych – zarówno intranetowych, jak i internetowych.

Testowanie obciążenia

Dlaczego potrzebne są testy obciążeniowe?

Niektóre niezwykle popularne witryny doświadczyły poważnych przestojów ze względu na ogromny ruch. Witryny handlu elektronicznego dużo inwestują w kampanie reklamowe, ale nie w testowanie obciążenia, aby zapewnić optymalną wydajność systemu, gdy marketing ten generuje ruch.

Przykłady testów obciążeniowych

  • Toysrus.com nie był w stanie obsłużyć ruchu generowanego przez własną kampanię reklamową, tracąc zarówno nakłady na marketing, jak i sprzedaż, którą powinien wygenerować.
  • Witryna linii lotniczej nie była w stanie obsłużyć ponad 10000 XNUMX użytkowników w ramach oferty festiwalowej.
  • Encyclopedia Britannica ogłosiła bezpłatny dostęp do swojej internetowej bazy danych ofertą promocyjną. Nie byli w stanie nadążyć za nawałem ruchu przez tygodnie.

Wiele witryn ma opóźnione czasy ładowania, gdy napotykają duży ruch. Kilka faktów –

  • Porzucanie stron gwałtownie wzrasta po upływie około 3 sekund ładowania strony, a ten efekt pogłębia się w przypadku połączeń mobilnych
  • Wolno ładujące się strony kosztują witryny e-commerce mierzalne przychody przy każdej wizycie, dlatego wydajność jest traktowana jako wskaźnik biznesowy, a nie techniczny

Dlaczego testowanie obciążeniowe?

  • Testy obciążeniowe dają pewność co do systemu oraz jego niezawodności i wydajności.
  • Testowanie obciążenia pomaga zidentyfikować wąskie gardła w systemie w scenariuszach dużego obciążenia użytkownika, zanim wystąpią one w środowisku produkcyjnym.
  • Testowanie obciążenia zapewnia doskonałą ochronę przed słabą wydajnością i uwzględnia uzupełniające strategie zarządzania wydajnością i monitorowania środowiska produkcyjnego.

Cele testowania obciążenia

Testy obciążeniowe pozwalają zidentyfikować następujące problemy przed wprowadzeniem aplikacji na rynek lub do produkcji:

  • Czas odpowiedzi na każdą transakcję
  • Wydajność komponentów systemu pod różnymi obciążeniami
  • Wydajność komponentów bazy danych pod różnymi obciążeniami
  • Opóźnienie sieciowe między klientem a serwerem
  • Zagadnienia projektowania oprogramowania
  • Problemy z konfiguracją serwera, np. serwer WWW, serwer aplikacji, serwer bazy danych itp.
  • Problemy z ograniczeniami sprzętowymi, takie jak maksymalizacja procesora, ograniczenia pamięci, wąskie gardło sieci itp.

Testy obciążeniowe pozwolą określić, czy system wymaga dostrojenia, czy też konieczna jest modyfikacja sprzętu i oprogramowania w celu poprawy wydajności. Aby skutecznie przeprowadzić testy obciążeniowe, możesz skorzystać z różnych narzędzia do testowania wydajności które pomogą Ci zidentyfikować obszary wymagające poprawy.

Wymagania wstępne dotyczące testów obciążeniowych

Głównym miernikiem testów obciążeniowych jest czas reakcji. Zanim rozpoczniesz testowanie obciążenia, musisz określić:

  • Czy czas reakcji został już zmierzony i porównany – ilościowe
  • Czy czas reakcji ma zastosowanie do procesu biznesowego – istotne
  • Czy czas reakcji jest uzasadniony – Realistyczny
  • Czy czas reakcji jest osiągalny – Achievable
  • Czy czas reakcji jest mierzalny za pomocą narzędzia czy stopera – Measurable

Konfiguracja środowiska przed testowaniem obciążeniowym

Platforma sprzętowa Konfiguracja oprogramowania
  • Maszyny serwerowe
  • Procesory
  • Pamięć
  • Miejsce na dysku
  • Załaduj konfigurację maszyn
  • Konfiguracja sieci
  • Operasystemu
  • Oprogramowanie serwerowe

Strategie testowania obciążeniowego

Istnieje wiele sposobów przeprowadzania testów obciążeniowych. Poniżej przedstawiono kilka strategii testowania obciążeniowego-

Strategie testów obciążeniowych

  • Ręczne testowanie obciążenia: Jest to jedna ze strategii wykonywania testów obciążeniowych, ale nie daje powtarzalnych wyników, nie może zapewnić mierzalnego poziomu obciążenia aplikacji i jest procesem niemożliwym do skoordynowania.
  • Własne narzędzia do testowania obciążenia: Organizacja, która zdaje sobie sprawę ze znaczenia testów obciążeniowych, może zbudować własne narzędzia do wykonywania testów obciążeniowych.
  • Narzędzia do testowania obciążenia typu open source: Istnieje kilka narzędzi do testowania obciążenia dostępnych w formie otwartego oprogramowania, które są bezpłatne. Być może nie są tak wyrafinowane jak ich płatne odpowiedniki, ale jeśli masz ograniczony budżet, są najlepszym wyborem.
  • Narzędzia do testowania obciążenia klasy korporacyjnej: Zwykle są wyposażone w funkcję przechwytywania/odtwarzania. Obsługują dużą liczbę protokołów. Potrafią symulować wyjątkowo dużą liczbę użytkowników.

Jak przeprowadzić test obciążenia

Proces testowania obciążenia można krótko opisać w następujący sposób:

  1. Stwórz dedykowany Środowisko testowe do testów obciążeniowych
  2. Zdefiniuj scenariusze testów obciążeniowych
  3. Określ transakcje testowania obciążenia dla aplikacji
    • Przygotuj dane dla każdej transakcji
    • Należy przewidzieć liczbę Użytkowników uzyskujących dostęp do systemu
    • Określ prędkość połączenia. Niektórzy użytkownicy mogą być połączeni za pośrednictwem łączy dzierżawionych, podczas gdy inni mogą korzystać z połączenia telefonicznego
    • Określ różne przeglądarki i systemy operacyjne używane przez użytkowników 
    • Konfiguracja wszystkich serwerów, takich jak serwery internetowe, aplikacyjne i serwery DB
  4. Wykonanie i monitorowanie scenariusza testowego. Zbieranie różnych wskaźników
  5. Przeanalizuj wyniki. Rekomendowac
  6. Dostosuj system
  7. Przetestuj ponownie

Wytyczne dotyczące testowania obciążeniowego

Wytyczne dotyczące testowania obciążenia

  1. Testy obciążeniowe należy zaplanować, gdy aplikacja stanie się stabilna funkcjonalnie.
  2. W puli danych powinna być gotowa duża liczba unikalnych danych
  3. Dla każdego scenariusza lub skryptu należy określić liczbę użytkowników
  4. Unikaj tworzenia szczegółowych dzienników, aby zaoszczędzić miejsce na dysku we/wy
  5. Staraj się unikać pobierania obrazów ze strony
  6. W procesie wykonywania przypadków testowych testów obciążeniowych należy rejestrować spójność czasu odpowiedzi w całym okresie, który upłynął, i porównywać go z różnymi przebiegami testowymi.

Różnica między testem obciążeniowym a testem obciążeniowym

Testowanie obciążenia Testy warunków skrajnych
Testowanie obciążenia identyfikuje wąskie gardła w systemie przy różnych obciążeniach i sprawdza, jak system reaguje, gdy obciążenie stopniowo wzrasta Testy warunków skrajnych określa punkt załamania układu, aby ujawnić maksymalny punkt, po którym następuje załamanie.
Aby rozpoznać górną granicę systemu, ustaw SLA aplikacji i sprawdź, jak system poradzi sobie z dużym obciążeniem. Aby sprawdzić, jak system zachowuje się pod ekstremalnymi obciążeniami i jak odzyskuje siły po awarii.
Głównym celem testowania obciążenia jest generowanie zwiększonego obciążenia aplikacji internetowej. Testy warunków skrajnych mają na celu zapewnienie, że serwery nie ulegną awarii pod nagłym, dużym obciążeniem przez dłuższy czas.
Atrybuty sprawdzane w teście obciążenia to wydajność szczytowa, liczba serwerów i czas odpowiedzi. Ten rodzaj testów sprawdza czas reakcji stabilności itp.
W testach obciążenia limit obciążenia jest progiem przerwy. W testach obciążeniowych limit obciążenia przekracza próg przerwy.

Różnica między testowaniem funkcjonalnym a testem obciążeniowym

Testy funkcjonalne Testowanie obciążenia
Wyniki testów funkcjonalnych są łatwo przewidywalne, ponieważ mamy określone odpowiednie kroki i warunki wstępne Wyniki testów obciążeniowych są nieprzewidywalne
Wyniki testów funkcjonalnych różnią się nieznacznie Wyniki testów obciążenia różnią się drastycznie
Częstotliwość wykonywania Testy funkcjonalne będzie wysoki Częstotliwość wykonywania testów obciążeniowych będzie niska
Wyniki testów funkcjonalnych zależą od danych testowych Testowanie obciążenia zależy od liczby użytkowników.

Narzędzia do testowania obciążenia

LoadRunner

LoadRunner, pierwotnie od HP, obecnie część OpenText Po przejęciu Micro Focus, testuje aplikacje pod normalnym i szczytowym obciążeniem. Generuje obciążenie za pomocą wirtualnych użytkowników, którzy emulują rzeczywisty ruch sieciowy, i raportuje wyniki graficznie.

Czytaj więcej w Samouczek LoadRunner.

Apache JMeter

Oprogramowanie typu open source Java Narzędzie i najpopularniejsza darmowa opcja. Obsługuje protokoły HTTP, JDBC, JMS, FTP i inne, przechowuje plany testów w formacie XML i integruje się z procesami CI. Zobacz JMeter Tutorial aby zapoznać się z przewodnikiem.

Gatling

Narzędzie typu open source, którego testy są napisane jako kod w Scali lub Java. Obsługuje wysoką współbieżność na przeciętnym sprzęcie i generuje szczegółowe raporty HTML, co jest przydatne zespołom preferującym skrypty testowe z kontrolą wersji.

k6

Narzędzie typu open source z testami napisanymi w języku JavaSkrypt przeznaczony do przeprowadzania testów wydajnościowych przez programistów w ramach procesu CI, a nie jako osobna czynność QA.

Wybór narzędzia

Pick JMeter w celu uzyskania najszerszego pokrycia protokołów bez żadnych kosztów, Gatling lub k6, gdy zespół chce przechowywać testy w systemie kontroli wersji obok aplikacji, a także narzędzie komercyjne, takie jak LoadRunner, gdy wsparcie protokołu przedsiębiorstwa i pomoc dostawcy uzasadniają licencję.

Zalety i wady testów obciążeniowych

Oto zalety testowania obciążeniowego:

  • Identyfikacja wąskich gardeł wydajności przed rozpoczęciem produkcji
  • Poprawia skalowalność systemu
  • Minimalizuj ryzyko związane z przestojem systemu
  • Mniejsze koszty awarii
  • Zwiększ satysfakcję klientów

Wady testowania obciążenia:

  • Większość narzędzi wymaga wiedzy programistycznej, aby móc tworzyć realistyczne scenariusze.
  • Narzędzia mogą być drogie, ponieważ ceny zależą od liczby obsługiwanych użytkowników wirtualnych.

Kluczowe wskaźniki do przechwycenia podczas testu obciążeniowego

Sekcja dotycząca wymagań wstępnych określa czas reakcji jako główny parametr. W praktyce raport z testu obciążenia wymaga wartości sześciocyfrowej, ponieważ sam czas reakcji nie jest w stanie wskazać przyczyny spowolnienia systemu.

metryczny Co ci to mówi Znak ostrzegawczy
Średni czas odpowiedzi Typowe doświadczenie użytkownika Rosnące wraz ze wzrostem obciążenia
95. percentyl czasu reakcji Doświadczenia najwolniejszych użytkowników Znacznie powyżej średniej
Wydajność Żądania pomyślnie obsłużone na sekundę Spłaszczanie lub opadanie podczas wzrostu obciążenia
Poziom błędu Udział nieudanych lub przekroczonych limitów czasu żądań Każde przekroczenie ustalonego progu
Równocześni użytkownicy Rzeczywista liczba jednoczesnych sesji Niższy niż zakładano scenariusz
Wykorzystanie zasobów serwera Zapas mocy procesora, pamięci, dysku i sieci Każdy zasób powyżej około 80 procent

Przepustowość odczytu wraz z czasem reakcji. Rosnący czas reakcji wraz ze wzrostem przepustowości oznacza po prostu, że system jest bardziej obciążony. Rosnący czas reakcji wraz ze wzrostem przepustowości oznacza po prostu, że system jest bardziej obciążony. spada przepustowość oznacza, że ​​urządzenie przekroczyło swoją maksymalną przepustowość i teraz traci pracę, a test ma na celu ustalenie tego punktu.

Nigdy nie podawaj wyłącznie średniej. Średnia 900 ms przy 95. percentylu 1.1 sekundy opisuje spójny system. Ta sama średnia przy 95. percentylu 11 sekund oznacza, że ​​jeden na dwudziestu użytkowników doświadcza niedopuszczalnych doznań, które są maskowane przez średnią.

Porównanie tego testu z innymi testami wydajności

Testowanie wydajności to rodzina testów, które różnią się kształtem przyłożonego obciążenia, dlatego tak łatwo je pomylić.

Rodzaj testu Co jest zwiększone Pytanie, na które odpowiada
Testowanie obciążenia Jednoczesnych użytkowników do oczekiwanego szczytu Czy spełnia cele przy normalnym, szczytowym natężeniu ruchu?
Testowanie głośności Dane przechowywane w bazie danych Czy system radzi sobie ze wzrostem zbioru danych?
Test naprężeń Obciążenie przekraczające pojemność, aż do awarii Gdzie się psuje i jak?
Testowanie Spike'a Załaduj natychmiast i niezwykle Czy przeżywa i otrząsa się z szoku?
Testy wytrzymałościowe Czas trwania przy normalnym obciążeniu Czy wydajność pogarsza się z czasem?
Testowanie zanurzeniowe Czas trwania, oglądanie zasobów Czy występują wycieki pamięci lub uchwytów?
Testy stabilności Różne warunki Czy system pozostaje niezawodny w zmieniających się warunkach?

Najważniejsze tutaj jest rozróżnienie: testy objętościowe skalują dane, testy obciążenia skalują użytkowników. Raport, który trwa dwie sekundy dla dziesięciu tysięcy wierszy i dwie minuty dla dziesięciu milionów wierszy, ma problem z objętością, a nie obciążeniem, i żadna dodatkowa pojemność serwera nie rozwiąże tego problemu.

FAQ

Testy obciążeniowe obejmują oczekiwane obciążenie szczytowe i sprawdzają, czy cele są spełnione. Testy obciążeniowe celowo przekraczają możliwości systemu, aby znaleźć punkt krytyczny i potwierdzić, że system ulegnie awarii i bezproblemowo się zregeneruje.

Gdy aplikacja osiągnie stabilność funkcjonalną i będzie działać wystarczająco wcześnie, aby wykryć wąskie gardło, uruchomienie jej w ostatnim tygodniu nie pozostawia czasu na podjęcie działań w oparciu o wykryte informacje.

JMeter, ponieważ jest darmowy, obsługuje najszerszy zakres protokołów i ma obszerną dokumentację. Przejdź na Gatling lub k6, jeśli zespół preferuje testy pisane w formie kodu z kontrolą wersji.

Sztuczna inteligencja generuje realistyczne profile obciążenia na podstawie rejestrów ruchu produkcyjnego, automatycznie wykrywa anomalie w wynikach i przewiduje, które zmiany w kodzie mogą spowodować pogorszenie wydajności przed zaplanowaniem przebiegu.

Tak. Narzędzia AI konwertują zarejestrowane ścieżki użytkownika lub specyfikacje API na uruchamialne skrypty. Sprawdź wygenerowane czasy reakcji i parametryzację danych, ponieważ nierealistyczne wartości dają mylące wyniki.

Podsumuj ten post następująco: