jMETER

Piotr Woszczyk
Gromar @ 2013

Jmeter?

  • Aplikacja napisana w Javie przez "The Apache Software Foundation".
  • Głównym zastosowaniem jest generowanie obciążeń innych usług i badanie czasu ich odpowiedzi.
  • Umożliwia generowanie obciążeń dla rożnych protokołów (np. HTTP, SMTP, FTP)
  • Umożliwia symulowanie sesji, cache oraz innych cech istniejących przeglądarek.
  • Zawiera narzędzia do opracowywania wyników.
  • Jest częściowo spolszczony.

INSTALACJA

  • Aktualna wersja 2.10 dostępna na oficjalnej stronie: jmeter.apache.org
  • Wymagana jest JAVA 6+, jeśli to możliwe w wersji 64bit.

Pierwsze KROKI

Główne drzewo testów znajduje się po lewej stronie o umieszczone w nich są wszystkie elementy.

Pierwsze kroki

W celu rozpoczęcia dodajmy element "grupa wątków", w którym zawrzemy nasz test.

PIERWSZE KROKI

  • W właściwościach grupy należy podać ilość wątków (kopi sesji), czas w jakim zostaną uruchomione oraz ilość powtórzeń każdego z wątków.
  • Istotnym parametrem tego elementu jest również jego zachowanie w momencie wystąpienia błędu.
  • Przy makrach rozciągniętych w czasie przydatne może być wstrzymanie utworzenia wątku w pamięci maszyny testującej do ostatniego możliwego momentu. Pozwala zaoszczędzić to zasoby maszyny testującej.

Przygotowanie

  • W celu rozpoczęcia obciążania interesującej nas usługi musimy mieć przygotowany plan testów (tzn. makro).
  • Mamy do wyboru nagranie makra poprzez zbudowany serwer PROXY, ręczne dodawanie próbek, a nawet poprzez edycję pliku .jmx, który jest dedykowanym .xml.
  • Najwygodniejszym sposobem jest nagrywanie poprzez serwer PROXY i ewentualna późniejsza modyfikacja.

DODANIE PROXY

W celu nagrania makra do brudnopisu dodajemy element "non-test" jakim jest serwer PROXY.

KONFIGURACJA PROXY

  • Serwerowi proxy należy wskazać na jakim porcie ma prowadzić nasłuch oraz do jakiego elementu makra ma zapisywać zarejestrowane zapytania.
  • Dodanie serwera nie uruchamia go, konieczne jest uruchomienie w jego opcjach.
  • W celu wygenerowanie ruchu konieczne jest skonfigurowanie przeglądarki aby przepuszczała ruch przez w. w. serwer.

WYNIK DZIAŁANIA PROXY

W efekcie drzewo powinno wypełnić się próbkami.

konfiguracja

  • Bez elementów konfiguracyjnych makro wykona cykl zapytań bez jakichkolwiek odstępów oraz kontekstu.
  • W celu symulowania rzeczywistego działania przeglądarki istotne jest dodanie elementów "cache manager" i "cookie manager".
  • Istotnym jest również zdefiniowanie interwałów czasowych pomiędzy zapytaniami i grupami zapytań.
  • W wielu przypadkach dodanie tych elementów możne całkowicie zmieniać wynik testów i odpowiednie ich umiejscowienie oraz dobranie ich parametrów jest bardzo istotne.

TIMER

  • Wstawiając timer w wybranym poziomie drzewa spowodujemy jego wykonanie po każdym elemencie tego poziomu. Nie ma konieczności dublowania timera.
  • Dostępne są timery o rożnych rozkładach i zastosowanie odpowiedniego leży w gestii tworzącego makro.

TIMER, ZASTOSOWANIE


ZMIENNE

  • Istnieje możliwość definiowania zmiennych.
  • Zasięg zmiennych jest globalny dla całego testu.
  • Głównym zastosowaniem jest przenoszenie danych pomiędzy elementami (przydatne są do zasilania formularzy oraz przenoszenia tokenów pomiędzy kolejnymi zapytaniami)
  • Źródłem danych zmiennej moze być np. plik CSV.
  • Odwołanie do zmiennych odbywa się poprzez ${}, np. ${USERNAME}.

ZMIENNE, ZASTOSOWANIE


ZMIENNE, ZASTOSOWANIE


URUCHOMIENIE

  • Uruchomienie możliwe jest w trybie GUI i NON-GUI.
  • Tryb non-gui sugerowany jest dla rozbudowanych makr oraz dużych ilości wątków.
  • Jako duży rząd wielkości można traktować makro z ponad 1000 zapytań lub mające ponad 500 sesji.

NON-GUI

Uruchomienie.
jmeter.sh  -n -t plik.jmx 
Uruchomienie ze zbieraniem wyników.
jmeter.sh  -n -t plik.jmx -l plik.jtl 

ZBIERANIE WYNIKÓW

  • W trybie GUI w celu obserwacji czasów odpowiedzi serwera będziemy musieli zapewnić elementy zbierające.
  • Istnieje wiele lisener'ów. Wybór odpowiedniego zależy od potrzeb testującego.
  • Nalezy pamiętać, ze im więcej danych będziemy zbierać, tym mniej zasobów pozostanie na uruchomienie wątków. W związku z tym nie zbierajmy danych niepotrzebnych.

ANALIZA WYNIKÓW

  • Większość wcześniej omówionych lisener'ów posiada opcję analizowania plików jtl zamiast bieżących  próbek.
  • Niektóre umożliwiają eksporty do formatów przyjaznych użytkownikowi, np. excel.

OPRACOWANIE WYNIKÓw

  • Głównym parametrem mówiącym o wydajności testowanej usługi jest średni czas odpowiedzi i w większości przypadków pozwoli oszacować moment przeciążenia.
  • Istotne może tez być odchylenie standardowe, które powie nam o stabilności działania usługi.
  • Przy dużych makrach testy pozwalają znaleźć odwołania do elementów nieistniejących, dlatego warto również zwracać uwagę na odsetek błędów poszczególnych zapytań.

Dziękuję za Uwagę


jMeter

By Piotr Woszczyk

jMeter

  • 39