Load i stress testing, czyli rodzaje testów wydajnościowych

Load i stress testing, czyli rodzaje testów wydajnościowych
Testowanie obciążenia i testowanie przeciążające są technikami testowania, które pomagają określić wydajność oprogramowania w określonych warunkach. I chociaż są one do siebie podobne, warto przyjrzeć im się bliżej, aby określić różnice pomiędzy nimi i poznać ich kluczowe znaczenie dla osiągnięcia wysokiego poziomu wydajności testowanej aplikacji.

Load testing

Słownik ISTQB® definiuje testowanie obciążenia (load testing) jako rodzaj testów wydajnościowych, których zadaniem jest ocena zachowania modułu lub systemu przy zmieniającym się obciążeniu, na ogół pomiędzy przewidywanymi warunkami niskiego, typowego i szczytowego poziomu wykorzystania. Pozwala ono ocenić wydajność systemu i oprogramowania, gdy są one poddawane różnym warunkom obciążenia. 

Procedura testowania obciążenia może służyć do testowania wykorzystania zasobów i czasów odpowiedzi, gdy oprogramowanie jest używane. Dzięki takim testom jego twórcy mogą w sposób łatwy wykryć i naprawić wszelkie problemy związane z przestojami spowodowanymi obciążeniem systemu przed uruchomieniem oprogramowania.

Stress testing

Testy przeciążające (stress testing) pozwalają ocenić, czy oprogramowanie działa w sposób zadowalający w niekorzystnych lub ekstremalnych warunkach, np. podczas dużego ruchu w sieci, dużej liczbie uruchomionych procesów, na nieodpowiednim sprzęcie oraz przy żądaniach maksymalnego wykorzystania zasobów. Słownik ISTQB® definiuje je jako typ testowania wydajnościowego wykonywany, by określić jak system lub jego moduł pracuje na przewidywanej lub wyspecyfikowanej granicy obciążenia lub poza nią lub też przy ograniczonym dostępie do pamięci lub serwerów

Stress testing określa również punkty awarii i odzyskiwania systemu, kiedy zostaną przekroczone określone limity. Niektóre problemy, które mogą zostać wykryte w systemie podczas testów przeciążających, obejmują problemy z synchronizacją i wycieki pamięci.

To, czym dokładnie różnią się między sobą obie te metody testowania wydajnościowego, najlepiej obrazuje poniższa tabela:

Load testing Stress testing
Sprawdza, jak aplikacja działa w przypadku wzrostu obciążenia. Są gwarancją, że serwery nie będą ulegać awarii pod nieoczekiwanie dużym obciążeniem działającym przez dłuższy czas.
Pozwala określić górną granicę systemu. Pozwalają sprawdzić, w jaki sposób system reaguje na duże obciążenia i jak wraca do pierwotnego stanu po awarii.
Sprawdza jakość serwera, czas odpowiedzi i szczytową wydajność. Sprawdza czas reakcji stabilności i niezawodność systemu na poziomie katastrofy.
Limit obciążenia to próg przerwy w testowaniu obciążenia. Limit obciążenia przekracza próg przerwy w testowaniu przeciążającym.

Load testing. Korzyści

  1. Pozwala określić problemy z wydajnością oprogramowania, zanim jeszcze produkt zostanie oddany w ręce użytkowników

    Testy obciążeniowe umożliwiają programistom lepsze zrozumienie tego, w jaki sposób wzrost liczby użytkowników systemu wpływa na jego wydajność. Wykrycie dzięki nim ewentualnych problemów z wydajnością przed wypuszczeniem oprogramowania, pozwala znacznie zwiększyć komfort użytkownika.
  2. Pomaga określić produktywność systemu

    Testowanie obciążenia pomaga twórcom oprogramowania poznać punkty szczytowe tworzonego przez nich systemu podczas określania możliwości użytkownika i celów optymalizacji oprogramowania.
  3. Poprawia skalowalność

    Firmy mogą opracować dobry plan skalowalności podczas testowania obciążenia. Dzieje się tak, ponieważ testowanie obciążenia może pomóc w ustaleniu, kiedy oprogramowanie jest gotowe do skalowania, a kiedy nie.
  4. Zwiększa zadowolenie klientów z produktu

    Testy obciążeniowe dostarczają informacji, które są przydatne w zoptymalizowaniu wrażeń użytkownika, jeszcze zanim oprogramowanie dotrze do końcowych odbiorców. Jest to kluczowe, ponieważ doświadczenie użytkownika jest jednym z czynników, które mogą utrudnić przyjęcie oprogramowania.
  5. Pozwala zminimalizować koszty awarii

    Awaria po uruchomieniu zmniejsza zaufanie użytkowników do produktu. Na szczęście koszt odbudowania tego zaufania poprzez ulepszenia oprogramowania można zmniejszyć lub całkowicie mu zapobiec, jeśli organizacje poddadzą swoje oprogramowanie testom obciążeniowym jeszcze przed wypuszczeniem go na produkcję.
  6. Gwarantuje, że system spełnia standardy wydajności

    Menedżerowie produktów w organizacjach biznesowych często określają wymagania dotyczące oprogramowania, które zamierzają wprowadzić. Testy obciążeniowe umożliwiają podjęcie niezbędnych środków w celu zapewnienia spełnienia tych wymagań.

Stress testing. Korzyści

  1. Pozwala przygotować się na ekstremalne sytuacje

    Testy przeciążeniowe umożliwiają zespołom sprawdzenie, które punkty awarii mogą się wydarzyć i które są najbardziej szkodliwe dla oprogramowania. Ta wiedza jest kluczowa do stworzenia planu działania, jeśli oprogramowanie rzeczywiście ulegnie takiej awarii.
  2. Pomaga zachować stabilność projektu

    Prawidłowo przeprowadzone testy przeciążeniowe zapewniają zespołowi informacje i wskaźniki wczesnego ostrzegania, które ułatwiają identyfikację większości defektów i pozwalają ochronić przed nimi system. W efekcie programiści mogą lepiej chronić oprogramowanie przed skryptami, botami i atakami DOS.

    Dodatkowo testy warunków skrajnych pozwalają zidentyfikować słabe punkty systemu i poprawić jego bezpieczeństwo przed oddaniem gotowego produktu klientowi.
  3. Ułatwia tworzenie planów alternatywnych

    Testy przeciążeniowe koncentrują się na znajdowaniu różnych problemów, takich jak zakleszczenia, problemy ze współbieżnością, niespójność danych, czy wąskie gardła w synchronizacji. Ponadto dane z testów warunków skrajnych pozwalają wzmocnić plany awaryjne i skalowalności.
  4. Pokazuje, jak system regeneruje się w warunkach stresu

    Stress testing umożliwia szczegółowy wgląd w wydajność systemu po jego przeciążeniu. Bazując na wskaźnikach takich jak zdolność przetwarzania, użycie dysku, zużycie Internetu, udane/nieudane transakcje czy zakleszczenia, tester jest w stanie określić możliwe szkody, jakie może spowodować zamknięcie systemu.

Podsumowanie

Testy obciążeniowe są przykładem testowania oprogramowania zgodnie z wymaganiami, które nie prowadzi do popsucia aplikacji i w których tester stopniowo obciąża system, aby dzięki temu sprawdzić jak zachowuje się aplikacja w "naturalnych" dla niej warunkach. Testy przeciążeniowe to z kolei testowanie oprogramowania ponad wymagania; tester stopniowo przekracza "naturalne" warunki, w których pracuje aplikacja, a jego celem jest sprawdzenie tego, jak zareaguje oprogramowanie po osiągnięciu jego limitów. Ten typ testowania często kończy się crashem serwera.
 

Źródła:
https://www.techrepublic.com/article/load-testing-vs-stress-testing/

To powinno Cię zainteresować