Apache JMeter™ to otwarte oprogramowanie, napisane w Javie i dedykowane do wykonywania testów obciążeniowych, wydajnościowych oraz funkcjonalnych. Oryginalnie było projektowane i rozwijane przez Stefano Mazzocchi z Apache Software Foundation, który napisał go do testowania wydajności Apache JServ (projektu, który został zastąpiony przez Apache Tomcat). Następnie JMeter został przeprojektowany i wyposażony w GUI celem rozszerzenia jego zastosowań do testów funkcjonalnych. W listopadzie 2011 roku JMeter stał się projektem Apache najwyższego poziomu (ang. top level), co oznacza, że zyskał społeczność odpowiedzialną za jego rozwój (ang. Project Management Commitee) oraz dedykowany serwis.
Apache JMeter jest używany do testowania wydajności statycznych oraz dynamicznych zasobów takich jak pliki, dynamiczne języki programowania serwisów internetowych, np. PHP, Java, ASP.NET, itp., obiekty Java, bazy danych i kwerendy, serwery FTP, itp. Z powodzeniem jest wykorzystywany do symulowania wzmożonego ruchu na serwerze, grupie serwerów, w sieci lub na „hartowanym” obiekcie. Służy również do analizowania całkowitej wydajności pod obciążeniem różnego typu, np. do graficznej analizy całkowitej wydajności lub do testowania zachowania się serwera / skryptu / obiektu przy wzmożonym i zrównoleglonym obciążeniu.
2. Adrian Bala JMeter – narzędzie testera TestWarez 2015
1
Spis treści
Czym jest JMeter?..................................................................................................................1
Do czego służy JMeter?...........................................................................................................1
Podstawowe zalety JMeter......................................................................................................2
Do czego można użyć JMeter? .................................................................................................2
Podstawowe elementy JMeter.................................................................................................3
Czym NIE jest JMeter?............................................................................................................4
Wsparcie i rozwój...................................................................................................................4
Podsumowanie ......................................................................................................................4
Wskazówki i podpowiedzi .......................................................................................................5
Bibliografia............................................................................................................................5
Czym jest JMeter?
Apache JMeter™ to otwarte oprogramowanie,napisane w Javie i dedykowane do
tworzenia, wykonywaniaoraz monitorowaniatestów obciążeniowych,wydajnościowych
oraz funkcjonalnych.Oryginalnie byłoprojektowane i rozwijane przezStefanoMazzocchi
z Apache Software Foundation,który napisał je do testowaniawydajności Apache JServ
(projektu,który został zastąpionyprzez Apache Tomcat). Następnie JMeter został
przeprojektowanyi wyposażonyw GUI celemrozszerzeniajegozastosowań do testów
funkcjonalnych.W listopadzie 2011 roku JMeter stał się projektemApache najwyższego
poziomu(ang. top level),co oznacza, że zyskał społeczność odpowiedzialnąza jegorozwój
(ang. Project Management Commitee) oraz dedykowanyserwis.
Do czego służy JMeter?
Apache JMeter jestużywany do testowaniawydajności statycznych oraz
dynamicznych zasobów takich jak pliki,dynamiczne języki programowania serwisów
internetowych,np.PHP, Java, ASP.NET, itp.,obiektyJava, bazy danych i kwerendy,serwery
FTP, itp. Z powodzeniemjestwykorzystywanydosymulowaniawzmożonegoruchu na
serwerze,grupie serwerów,w sieci lubna „hartowanym” obiekcie.Służyrównieżdo
analizowaniacałkowitej wydajności podobciążeniemróżnego typu,np. do graficznej analizy
całkowitej wydajności lubdo testowaniazachowania się serwera/ skryptu / obiektuprzy
wzmożonymi zrównoleglonymobciążeniu.
3. Adrian Bala JMeter – narzędzie testera TestWarez 2015
2
Podstawowe zalety JMeter
Apache JMeter:
1. Pozwala na automatyzację testowania(oszczędność).
2. Działa na platformach wspierającychJava (przenośność).
3. Umożliwiadziałanie wielowątkowe (zrównoleglenie).
4. Jest narzędziem „wielopoziomowym”(użyteczność).
5. Wspiera różne protokoły(uniwersalność)
6. Dostarcza wysoki poziom abstrakcji (łatwośćobsługi).
7. Posiada rozbudowaną dokumentację(łatwość nauki).
8. Jest wspieranyi rozwijany (aktualność).
9. Może być modyfikowany(dostosowywanie).
10. Jest darmowy (ograniczenie kosztów).
11. Inne.
Do czego można użyć JMeter?
Przykładowo Apache JMeter:
1. Pozwala na wykonywanie zapytańhttp(s) – GET, POST oraz przetwarzanie
zwróconych kodów1 i wyników odpowiedzi.
2. Umożliwiaustanowienie bezpośredniegopołączeniazbazą MySQL i wykonywania
zapytań przy wykorzystaniusterownikaJDBC2.
3. Potrafi działać w trybie konsolowymbezGUI, dzięki czemu może być instalowanyna
maszynach bez wyświetlaczy,np.serwerach.
4. Może być użyty w celach monitorowaniapracy serwera/ grupy serwerów poprzez
okresowe sprawdzanie statusu.
5. Stwarza możliwośćsymulowaniapowiększonegoruchusieciowegopoprzez
jednoczesne wykonywanie zapytańhttp(s) – GET, POST z użyciemwieluwątków.
6. Ułatwia zbieranie statystykdotyczących wydajności pracy serwera / grupy serwerów
poprzez pomiar czasów przetwarzania zapytań, czasu uzyskiwaniaodpowiedzi,itp.
7. Pomaga na porównywanie wybranychkonfiguracji sprzętowo-programowych przy
podejmowaniudecyzji ozakupie lub wyborze konkretnegorozwiązania.
8. Doskonale nadaje się do testowaniaRESTful API po http(s) – GET, POST, PUT, PATCH,
DELETE.
9. Dostarcza możliwośćnagrywania i odtwarzania scenariuszytestowych na zasadzie
zbliżonej do SeleniumIDE3.
10. Daje się włączać w proces CI, tj. integracji ciągłej (ang. continuous integration)
współpracując z różnymi systemami takimi jak Jenkins4 lubHudson5.
11. Wiele innych.
1
HypertextTransfer Protocol -- HTTP/1.1 - https://www.ietf.org/rfc/rfc2616.txt
2
JDBC driver forMySQL- http://dev.mysql.com/downloads/connector/j/
3 SeleniumIDE- http://www.seleniumhq.org/projects/ide/
4
Jenkins - https://jenkins-ci.org/
5
Hudson - http://hudson-ci.org/
4. Adrian Bala JMeter – narzędzie testera TestWarez 2015
3
Podstawowe elementy JMeter
Apache JMeter ma budowę hierarchiczną i co warte podkreślenia,„drzewiastą”.
Podstawowymelementemjest TestPlan,który zawiera,co najmniej jedną GrupęWątków.
Inne podstawowe elementyto:
zmienne – wbudowane,definiowane;
instrukcje warunkowe – IF, WHILE, itp.;
pętle – LOOP, FOREACH, itp.;
zapytania – HTTP(S), JDBC, itp.;
asercje – odpowiedzi,rozmiaru,itp.;
timery – stałe, losowe,itp.;
słuchacze – drzewiaste,sumaryczne,itp.;
ekstraktory – wyrażeńregularnych, XPath,itp.;
menedżery – cookie,header, itp.;
dzienniki –log, console;
funkcje – wbudowane i definiowane w BeanShell6;
wiele innych
Rys. 1. JMeter – podstawowe elementy
Wymienione wyżej elementypozwalająw opinii autoraspojrzeć na JMeter,jako na
uniwersalnyjęzyklub frameworkwysokiegopoziomudo tworzenia,wykonywania oraz
monitorowaniatestów automatycznych różnego rodzaju. Od niskopoziomowychtestów
wykonywanychbezpośredniona bazie MySQL, poprzez zapytania http(s) i testowanie
RESTful API,aż po nagrywanie i odtwarzanie scenariuszy zorientowanychna działania
Użytkownika z użyciemprzeglądarki.
6
BeanShell - SimpleJavaScripting - http://www.beanshell.org/manual/bshmanual.html
5. Adrian Bala JMeter – narzędzie testera TestWarez 2015
4
Czym NIE jest JMeter?
Należyjasno i wyraźnie podkreślić,że Apache JMeter to nie przeglądarka. Mimo, że
wygląda i zachowuje się jak przeglądarka, a właściwie to wiele różnychprzeglądarek,JMeter
nie obsługuje wszystkichdostępnych w nich akcji. W szczególności JMeternie wykonuje
JavaScriptów wstawionychw tagach HTML strony i co więcej nie renderuje widokustron
WWW tak jak przeglądarki internetowe.Posiadarównieżograniczeniaprzy wspieraniu
WebSocket.
Wsparcie i rozwój
Apache JMeter™ to otwarte oprogramowanie,które w listopadzie 2011 roku stało się
projektemnajwyższegopoziomui zyskałospołeczność odpowiedzialnązajegorozwój. Dzięki
czemu powstał dedykowanyserwis – http://jmeter.apache.org/ ,opracowano szczegółową
dokumentację – http://jmeter.apache.org/usermanual/index.html ,oraz zestaw pomocnych
tutoriali.Co więcej uruchomiony został serwisdo zgłaszania defektów (ang. bug) i propozycji
zmian (ang. feature request) do kolejnegowydania(ang. release). Przykłademmoże być
m.in.:https://bz.apache.org/bugzilla/show_bug.cgi?id=51817.
Rys. 2. JMeter – ASF Bugzilla
Podsumowanie
Powszechnie utarłosię postrzegać i używać JMeter, jako narzędzie do tworzenia,
wykonywaniai monitorowaniatestów obciążeniowych,wydajnościowychi funkcjonalnych.
Bywa on równieżwykorzystywanyprzy testowaniurozproszonym (ang. distributed testing),
testach jednostkowychz JUnit oraz do nagrywania i odtwarzania scenariuszytestowych.
Osobiście autor woli postrzegać i traktować JMeter jak język programowania lub
framework do tworzeniatestów automatycznych. Wynikato z faktu, że dostarcza on wiele
funkcjonalności,cech i zalet wysokopoziomowegojęzykaprogramowania wizualnego,
potrafiącego działać wielowątkowonapraktycznie dowolnej architekturze.
6. Adrian Bala JMeter – narzędzie testera TestWarez 2015
5
Intencją przewodniąprezentacji jesti będzie przybliżenie użytecznegonarzędzia,
które przydać się może testerowi w różnych sytuacjach. Zebrane powyżej informacje mają
pomóc w osiągnięciuwyznaczonegocelu. Duża uniwersalnośćwraz z innymi pozytywnymi
cechami JMetera skłania do stwierdzenia,iżjestto narzędzie testera,które w opinii autora
warto poznać i używać.
Wskazówki i podpowiedzi
1. Ctr ^ SER – jako przydatny skrót od Save, Erasei Run.
2. Ctr ^ - oraz Ctr + Shift ^ - – zwija i rozwija drzewo Test Planu.
3. Ctr ^ . – kończy wykonanie wątku / pętli, itp.
4. Nazwyzmiennych są tekstowe, a odwołania do nich poprzez ${ }.
5. JMeter pozwala na KONFIGURACJĘ (kod, dane, konfiguracja).
6. Przykładowe wywołanie z linii komend: jmeter-n -t testplan.jmx-llogfile.log
7. Dobrzejest, gdy na jeden rdzeń procesora przypada, co najwyżej 2 instancje JMetera.
8. Proces JMetera powinien zajmowaćzasoby procesora, co najwyżej w 75 %.
9. Przydatnesą setUp Thread Group oraz tearDownThread Group.
10. Bardzoużytecznesą funkcje, np. __time7 do wyznaczania czasutrwania testów.
11. Warto korzystaćz wyrażeńregularnych8, np. do weryfikowania odpowiedzi.
12. W roli komentarza można użyć JavaRequest9.
13. Dobry opis pozwala na samodokumentowanie kodu testów.
14. Przydaje się odróżniać testy pozytywne (+) od negatywnych(-).
15. Inne.
Bibliografia
[1]. Apache JMeter – http://jmeter.apache.org/index.html
[2]. Apache JMeter Manual – http://jmeter.apache.org/usermanual/index.html
[3]. ASF Bugzilla –https://bz.apache.org/bugzilla/describecomponents.cgi?product=JMeter
[4]. Apache JMeter Wiki – http://wiki.apache.org/jmeter/
[5]. Apache JMeter Group – https://www.linkedin.com/groups?gid=2017104
[6]. Custom Plugins for Apache JMeter™ – http://jmeter-plugins.org/
[7]. Firebase RESTful API – https://www.firebase.com/docs/rest/api/
[8]. Apache JMeter workshop by Piotr Sobieraj –materiały szkoleniowe GFT
[9]. Apache JMeter - automatyzacja testowania - Adrian Bala – opracowaniewłasne
7
Opisfunkcji - http://jmeter.apache.org/usermanual/functions.html
8
Opiswyrażeń regularnych - http://jmeter.apache.org/usermanual/regular_expressions.html oraz
http://archimedes.fas.harvard.edu/scrapbook/jakarta-oro-
2.0.6/docs/api/org/apache/oro/text/regex/package-summary.html
9
Java RequestzamiastComment Sampler - https://bz.apache.org/bugzilla/show_bug.cgi?id=51824