Testy wydajnościowe

Categories Artykuły

Potrzeba przeprowadzania testów wydajnościowych pojawia się zazwyczaj w momencie, gdy nasza aplikacja lub serwis są w pełni rozwinięte i stanowią wartość dla swoich użytkowników. Rodzi się wtedy pytanie „jak duży ruch możemy jeszcze przyjąć bez obaw, że coś nie zadziała zgodnie z oczekiwaniami„. Pojawia się termin testów wydajnościowych, ale co się pod nim kryje, jak takie testy przeprowadzać, co testować oraz jak interpretować wyniki?

 Wydajność i jej testowanie

Najogólniejsza definicja wydajności, określa ją jako ilość wykonanej pracy w zadanym przedziale czasu. Brzmi banalnie i takie też jest, wszakże to tylko iloraz dwóch wartości. Czas jest dla nas skalą oczywistą a jako prace zazwyczaj określa się ilość poprawnie obsłużonych żądań przez serwer.

Pod pojęciem testów wydajnościowych kryją się trzy grupy testów:

Testy wydajnościowe (ang. Performance testing)

Odpowiada na pytanie: jak zachowuje się system dla zmiennej liczby użytkowników i różnych żądań przez nich generowanych.

Takie testy zazwyczaj przeprowadza się przy użyciu znanej liczby wątków testujących które generują różnorodne, zautomatyzowane akcje w aplikacji. Pozwala to w dużym stopniu odzwierciedlić prawdziwe zachowanie użytkowników.

Testy przeciążeniowe (ang. Stress testing

Odpowiadają na pytanie: w jaki sposób zachowa się system w momencie wygenerowania ruchu, którego nie można poprawnie obsłużyć.

Podczas przeprowadzania testów wydajnościowych często dochodzi się do granicy wytrzymałości systemu i nieświadomie rozpoczyna przeprowadzanie testów obciążeniowych. To jest ten moment kiedy system zaczyna reagować w sposób niestabilny i nieprzewidziany.

Testy obciążeniowe (ang. Load testing)

Odpowiadają na pytanie: w jaki sposób zachowa się system poddany ciągłemu obciążeniu dużą liczbą żądań.

Przeprowadzanie testów obciążeniowych pozwala wykryć wycieki pamięci i inne problemy, które mogą pojawić się w momencie gdy użytkownikom spodoba się nasz serwis i zaczną z niego regularnie korzystać.

Czy muszę testować wydajność?

Oczywiście, że nie, nikt nie musi tego robić, w większości przypadków jest to nawet nie potrzebne. Wydajność strony domowej, prowadzonego bloga, forum dla grupy pasjonatów czy nawet witryny firmowej w 90% przypadków jest wystarczająca aby obsłużyć potencjalny ruch użytkowników (o ile konkurencja nie zagwarantuje nam DDoS’a). Jeżeli jednak pracujesz nad kodem systemów, których każdego dnia używają dziesiątki czy nawet setki tysięcy użytkowników a każda niedostępność generuje duże straty to bardzo dobrze znasz odpowiedź na to pytanie.

Narzędzia do testowania

Siege example
Wynik testu w aplikacji siege

Istnieje wiele gotowych narzędzi służących do przeprowadzania testów wydajnościowych. Ich różnorodność jest tak wielka, że skupię się tylko na tych, z których sam korzystam:

Każde z nich posiada swoje zalety oraz wady a wybór narzędzia służącego do testowania jest bardzo mocno uzależniony od aktualnej potrzeby.

Należy jednak pamiętać, że każde z nich zbiera jeden rodzaj informacji – odpowiedzi w przedziale czasu, cała reszta to dodatkowe mechanizmy przetwarzające tą informację.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*