You are on page 1of 7

JMeter

Piotr Czubaszek
1. Czym jest i do czego służy JMeter

Program JMeter służy do wykonywania testów wydajnościowych i obciążeniowych serwerów


HTTP, FTP oraz zapytań do baz danych poprzez interfejs JDBC. Można testować zarówno
elementy statyczne jak i dynamiczne: pliki, servlety Java, skrypty CGI, obiekty Java i inne.
Możliwe jest także wykonywanie testów poprawności przy użyciu twierdzeń, aby dowiedzieć się
czy strona zwraca właściwe wyniki. Można symulować różne poziomy obciążenia oraz badać
wytrzymałość obciążeniową przy użyciu zdolności wielowątkowych programu udających wielu
użytkowników. Wątki pozwalają także na jednoczesne testowanie różnych funkcji (zapisanych w
oddzielnych thread groups).
Rozszerzalność jest zapewniona poprzez moduły-wtyczki oraz opcję używania funkcji np.
napisanych w JavaScript do modyfikacji danych wejściowych oraz elementów samplers, które są
dostosowywalne dzięki obsługi skryptów BeanShell. Własne komponenty zapisane w
archiwach jar umieszczamy w podkatalogu /lib/ext lub ścieżce wskazywanej przez
$JAVA_HOME/jre/lib/ext.
JMeter jest rozwijany przez projekt Apache Jakarta. Jest to projekt open source napisany
całkowici w Javie, dzięki czemu jest przenośny między platformami. Wymagane jest jedynie
środowisko uruchomieniowe JRE w wersji co najmniej 1.3, przy czym dla testowania przez
protokół https zalecana wersja to 1.4.
Strona główna projektu: http://jakarta.apache.org/jmeter/.

2. Uruchamianie programu

Najnowsza wersja programu dostępna jest na stronie


http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi. Dla systemu Windows
ściągamy plik zip z kategorii Binary. Program uruchamiamy rozpakowując archiwum do folderu
o ścieżce niezawierającej w nazwie spacji, i następnie wykonując plik jmeter.bat z folderu bin.
W systemie Linux obsługa jest analogiczna - ściągamy odpowiednie archiwum i wykonujemy
plik jmeter.
Po zapoznaniu się z funkcjami programu, jego obsługa jest łatwa i szybka dzięki przemyślanemu
GUI.
O ile wcześniej zbudowano test plan, można uruchomić program w trybie nieinteraktywnym z
wiersza poleceń. Przykładowo wpisujemy
jmeter -n -t my_test.jmx -l log.jtl ,
gdzie my_test.jmx to zapisany uprzednio plik zawierający test plan a log.jtl to nazwa pliku, do
którego mają być zapisane wyniki.
Jeśli komputer, z którego uruchamiamy program znajduje się za serwerem proxy lub zaporą
ogniową, należy z wiersza poleceń przekazać dodatkowe parametry, np.:
jmeter -H my.proxy.server -P 8000 -u username -a password -N ,
localhost
gdzie kolejne parametry oznaczają odpowiednio: adres serwera proxy (my.proxy.server), jego

1
port (8000) oraz, jeśli są wymagane, nazwę użytkownika (username) i hasło (password).1

3. Budowanie testu

Składniki testu dodajemy zaznaczają element macierzysty, a następnie klikając na nim prawym
przyciskiem myszy lub wybierają z menu Edit z podmenu Add żądany element z odpowiedniej
kategorii.
Podstawową (i niezbędną) jednostką każdego testu testu jest thread group. Każdy test plan może
zawierać wiele jego instancji. W jej właściwościach ustawiamy z ilu wątków (czyli symulowanych
użytkowników) ma się składać test, odstęp czasowy pomiędzy wystartowaniem kolejnych
wątków oraz ilość powtórzeń testu. W sekcji dodatkowo dostępne są opcje kontrolowania
czasowego czyli godzina uruchomienia/zakończenia testu i jego długość.
Dopiero do tak przygotowanej grupy wątkowej możemy dodawać jako potomków właściwe
elementy testu.
Skonfigurowany test plan zapisujemy przed wykonaniem testu do pliku o rozszerzeniu jmx.
Kolejnym razem wystarczy otworzyć ten plik, aby wykonać ponownie testy lub zbudować na
jego podstawie nowy test plan.

4. Składniki testu

Składniki są pogrupowane w następujące kategorie:


● Samplers (Próbniki) - wykonują właściwą pracę programu.
● Logic Controllers - określają kolejność, w jakiej przetwarzane są elementy Samplers.
● Listeners (Nasłuchiwacze) - oprócz nasłuchiwania wyników udostępniają metody do ich
przeglądania, zapisywania i odczytywania po zapisaniu. Są one przetwarzane na końcu
zasięgu, w którym występują. Domyślnie wyniki są zapisywane w formacie CSV, do
pliku o rozszerzeniu .jtl. Istnieje też możliwość wyboru do formatu XML, który jest
bardziej szczegółowy.
● Configuration Elements (Elementy Konfiguracyjne) - są używane do ustawiania wartości
domyślnych oraz zmiennych wykorzystywanych w elementach samplers. Są one
przetwarzane na początku zasięgu, w którym występują, przed elementami samplers.
● Assertions (Twierdzenia) - są używane do wykonywania dodatkowych testów na
elementach samplers. Są wykonywane po każdym elemencie sampler w swoim zasięgu.
● Timers (Stopery) - umożliwiają kontrolowanie czasu wykonania. Są wykonywane przed
każdym elementem sampler w swoim zasięgu. Jeśli w tym samym zasięgu istnieje wiele
elementów timer, to każdy z nich będzie wykonany przed każdym elementem sampler.
Aby wykonać element timer tylko przed jednym elementem sampler należy dodać go
jako jego element potomny. Alternatywnym rozwiązaniem do timers jest użycie
samplera Test Action.
● Pre Prcocessors - są używane do modyfikowania elementów sampler w ich zasięgu
działania.
1 Spis wszystkich argumentów dostępnych z wiersza poleceń znajduje się na stronie:
http://jakarta.apache.org/jmeter/usermanual/get-started.html#options

2
● Post-Processors - są wykonywane po (wszystkich) elementach samplers w swoim
zasięgu.
● Miscellaneous Features - różne funkcje.
● Reports - raporty.
Opis wszystkich składników znajduje się na stronie
http://jakarta.apache.org/jmeter/usermanual/component_reference.htm. Przykładowy opis
budowania testu przez postawienie proxy znajduje się w pliku
http://jakarta.apache.org/jmeter/usermanual/jmeter_proxy_step_by_step.pdf.

5. Przykład - tworzenie testu www przy pomocy proxy2

Zbudujemy teraz test plan do testowania serwera http.


1. Uruchamiamy program JMeter. W drzewie hierarchii po lewej stronie okna mamy dwa
elementy: Test Plan i WorkBench.
2. Do elementu Test Plan dodajemy element Thread Group3.
3. Edytujemy właściwości Thread Group. W polu Number of threads (users) wpisujemy np.
5, a Loop Count 50.
4. Do Thread Group dodajemy element HTTP Request Defaults4 (kategoria Configuration
Elements). Dzięki temu możemy w jednym miejscu dostosować ustawienia domyślne dla
wszystkich elementów HTTP Request.

Rysunek 1: Skonfigurowany element HTTP Proxy Server

5. Edytujemy właściwości HTTP Request Defaults. W polu Server Name or IP podajmy


namiary obranego serwera, np. www.uni.lodz.pl. Pola Protocol i Port można zostawić
puste, gdyż ich wartości domyślne odpowiadają naszym wymaganiom (odpowiednio http i
2 Na podstawie http://jakarta.apache.org/jmeter/usermanual/jmeter_proxy_step_by_step.pdf
3 Opis: http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Thread_Group
4 Opis: http://jakarta.apache.org/jmeter/usermanual/component_reference.html#HTTP_Request_Defaults

3
80).
6. Teraz należy dodać elementy HTTP Request5, które są właściwymi obiektami testującymi
określone przez nas części witryny. Można je dodawać ręcznie i każdy oddzielnie
konfigurować albo skorzystać z dostępnego mechanizmu proxy, żeby móc sobie w
przeglądarce "wyklikać" obszary portalu, które chcemy testować. Zastosujemy drugą opcję.
7. Do WorkBench dodajemy element HTTP Proxy Server (z kategorii Non-Test Elements).
Edytujemy właściwości HTTP Proxy Server. Zmieniamy Port na 8088. Ponieważ portal
Uniwersytetu Łódzkiego wykorzystuje głównie skrypty PHP, każemy proxy rejestrować
strony z .php w adresie. Do listy Patterns to Include dodajemy to rozszerzenie (przycisk
add) podając adres jako wyrażenie regularne ".*\.php". Podobnie możemy dodać
rozszerzenie .html. Jeśli chcemy rejestrować wszystkie odwołania do strony, pozostawiamy
tę listę pustą. Jeśli chcemy natomiast rejestrować wszystkie odwołania poza kilkoma
określonego typu, to dodajemy je do listy Patterns to Exclude.
8. Do Thread Group dodajemy element Aggregate Graph6 (z kategorii Listeners). To właśnie
on przedstawi nam wyniki zgromadzonych danych oraz sporządzi ich wykresy, które
można zapisać do pliku graficznego.
9. Teraz należy zmienić ustawienia przeglądarki internetowej tak aby połączenia http
przechodziły przez ustanowiony przez nas serwer proxy. W programie Internet Explorer z
menu Narzędzia wybieramy Opcje internetowe i na karcie połączenia wybieramy
Ustawienia sieci LAN. Zaznaczamy pole Użyj serwera proxy dla sieci LAN i jako adres
wpisujemy localhost, a jako port 8088.
10. Wracamy do programu JMeter. We właściwościach proxy klikamy przycisk Start.
11. W przeglądarce przechodzimy na stronę www.uni.lodz.pl
12. Podążamy za kilkoma łączami ze strony głównej.

Rysunek 2: Drzewo hierarchii


gotowego test planu

13. Wracamy do programu JMeter. We właściwościach proxy klikamy przycisk Stop.


14. W programie JMeter zapisujemy utworzony właśnie test plan do pliku a następnie go
uruchamiamy przy użyciu opcji Start z menu Run (lub wciskają kombinację klawiszy Ctrl-
R).
5 Opis: http://jakarta.apache.org/jmeter/usermanual/component_reference.html#HTTP_Request
6 Opis: http://jakarta.apache.org/jmeter/usermanual/component_reference.html#Aggregate_Graph

4
15. Nasz test plan jest gotowy

6. Przykład - testowanie rozproszone7

Możliwe jest także wykonywanie rozproszonych testów obciążeniowych przy pomocy


komputerów znajdujących się w sieci lokalnej. Żeby tego dokonać należy:
1. Obrać jeden komputer zarządzający, na którym uruchomimy JMeter w środowisku
graficznym.
2. Na komputerach-serwerach uruchamiamy wtedy plik jmeter-server.bat.
3. Natomiast na komputerze zarządzającym edytujemy plik jmeter.properties i w linii
zawierającej parametr remote_hosts dopisujemy oddzielone przecinkami adresy
serwerów (muszą znajdować się w tej samej podsieci).
4. Na komputerze zarządzającym uruchamiamy program JMeter w normalny sposób.
5. Tworzymy nowy lub otwieramy zapisany wcześniej test plan.
6. Z menu Run wybieramy opcję Remote Start All (lub wciskamy kombinację klawiszy Ctrl-
Z).

7 Na podstawie http://jakarta.apache.org/jmeter/usermanual/jmeter_distributed_testing_step_by_step.pdf

5
Spis treści
1.Czym jest i do czego służy JMeter.........................................................................................2
2.Uruchamianie programu.........................................................................................................2
3.Budowanie testu..................................................................................................................... 3
4.Składniki testu........................................................................................................................ 3
5.Przykład - tworzenie testu www przy pomocy proxy............................................................ 4
6.Przykład - testowanie rozproszone.........................................................................................6

You might also like