niedziela, 7 lutego 2010

perwszy test z Apache JMeter

Temat testów wydajnościowych pojawia się od czasu do czasu w waszych komentarzach, mailach lub wiadomościach GG. Dzisiaj zaspokoję ciekawość tych, którzy chcieliby zacząć a nie bardzo wiedzą jak. Przedstawię przepis na prosty test wydajnościowy.

Składniki:
- przeglądarka WWW (u mnie będzie to Opera)
- Apache JMeter
- testowana aplikacja WWW

Przepis umożliwia testowanie każdego rodzaju aplikacji webowych. W moim przypadku będzie to prosta witryna składająca się z dwóch statycznych stron HTML.
a.html

<html>
<body>
<h1>Serwus!</h1>
<a href = b.html>dalej</a>
</body>
</html>

i b.html

<html>
<body>
<h1>Druga strona</h1>
</body>
</html>


Uruchamiam te strony na serwerze Apache Tomcat.


Działa. Pora na JMetera. Dystrybuowany jest on jako archiwum zip lub tgz, więc z jego instalacją i uruchomieniem nie będzie problemu.
Posługuję się wersją 2.3.1.


W JMeterze można tworzyć testy na kilka sposobów. Najwygodniej jest je nagrać w przeglądarce WWW. Odbywa się to za pośrednictwem specjalnego serwera proxy. Dodaję go klikając prawym przyciskiem myszy na węźle WorkBench


i wybierając z podręcznego menu Add / Non-Test Elements / Http Proxy Server
Port zmieniam na 9999 (na 8080 jest uruchomiona moja aplikacja).


W sekcji URL Patterns to include dodaję wyrażenie regularne .*\.html. Dzięki temu w moim teście znajdą się tylko strony HTML. Warto dodać tutaj tylko strony generowane dynamiczne (jsp, php, jsf) ponieważ na sprawdzaniu ich wydajności najbardziej nam zależy.


Do węzła Test Plan dodaję grupę wątków Add / Thread Group. Tam zapiszą się nagrane żądania do mojej aplikacji.


Następnie uruchamiam serwer proxy klikając przycisk Start



Uruchamiam przeglądarkę WWW w której konfiguruję serwer proxy



i nagrywam test klikając w uruchomioną aplikację


Nagrany scenariusz znajduje się w grupie wątków. W moim przypadku składa się on z dwóch stron /test-app/a.html i /test-app/b.html.


Pora na sprawdzenie wydajności aplikacji. W ustawieniach grupy wątków zwiększam wartość Number of Threads (users) do 3.. Loop Count ustawiam na 20. Odpowiada to trzem użytkownikom, z których każdy 20 razy wykona scenariusz testowy.


Do swojej grupy wątków dodaję węzeł "raport z testów" (Add / Listener / Summary Report) w którym będę podglądał wyniki testów.


To w zasadzie wszystko. Zapisuję test i uruchamiam go wybierając akcję Start z menu Run.


Hm... Średnio strona mojej aplikacji generuje się 1 milisekundę. Całkiem nieźle.
Planowałem powtórzyć ten test na serwerze Apache WWW, ale wobec takich wyników na Tomcacie nie będzie to miało chyba większego sensu.

Stworzony plan testów zamieszczam tutaj.

5 komentarzy:

WooKasZ pisze...

DZIĘKUJEMY ! :)

Anonimowy pisze...

dwuch = dwóch

MZ pisze...

dzięki ;)

Jacek Laskowski pisze...

A teraz prosimy o scrinkast :)

WooKasZ pisze...

a jak zrobić, żeby także parametry przechwytywał ? bo POST nie przechwytuje przez co nie mogę swoich super formularzy przetestować :( GET rozumiem starcza zmiana wyrażenia regularnego...