Testowanie aplikacji z Jmeter

post_img

Kiedy mamy już stworzoną naszą aplikację prędzej czy później dojdziemy do momentu kiedy zadamy sobie pytanie, jaki ruch jest wstanie wytrzymać moja strona? Aby znaleźć odpowiedź na takie pytanie robi się stresstesty, czyli testy wydajnościowe. W skrócie polega to na bombardowaniu naszej strony żądaniami użytkowania, mierzeniu czasu odpowiedzi i stwierdzeniu, że między tym a tym przedziałem użytkowników czasy generowania strony były zadowalające.
Przydałoby się również narzędzie, które pomogłoby zweryfikować czy nowo wprowadzone zmiany nie zepsują generowanego html, lub czy w danym momencie strona działa. We wszystkich tych przypadkach musimy stawić czoła generowanemu html przesyłanym przez protokół HTTP. Można skorzystać, z wget + skrypty bashowe, może być curl + php, a może być po prostu Jmeter, dzięki któremu możemy powyższe testy wyklinać w parę minut.

Sam Jmeter został pomyślany jako framework do testowania aplikacji, wspiera nie tylko HTTP ale i inne protokoły. Można również wygodnie napisać dowolny próbnik samemu w javie. Jest to naprawdę bardzo rozbudowane narzędzie, które nie sposób opisać jednym wpisem na blogu. My zajmiemy się tylko HTTP na przykładzie naszej strony http://blog.atena.pl oraz tym jak wygodnie można połączyć go z naszą przeglądarką.

Ściągamy Jmeter ze strony http://www.idg.pl/mirrors/apache//jmeter/binaries/apache-jmeter-2.6.tgz . Po rozpakowaniu uruchamiamy klikając w jmeter.bat dla windowsów lub dla wszelakich „pingwinków” jmeter.sh . Po uruchomieniu widzimy dwa elementy w drzewie po lewej stronie „Plan testów” oraz „Brudnopis”. Pierwszy będzie przechowywał konfigurację naszych testów, drugi służy do pomocy w pracy w Jmeter, z której zaraz skorzystamy. Jedną z ciekawszych opcji Jmeter jest Http Proxy, dzięki czemu nie musimy sami podsłuchiwać ruchu http, a następnie wprowadzać danych w Jmeter. Wygodnie przekierowujemy ruch z przeglądarki, a następnie przenosimy wybrane żądania z brudnopisu do planu testów.
Skonfigurujmy proxy, klikamy prawym na brudnopis -> dodaj -> Logic Controller -> Recording Controller . W Recording Controller będą przechowywane żądania z naszej przeglądarki. Musimy dodać jeszcze demona, który będzie nasłuchiwał na localhoscie, klikamy znowu prawym na brudnopis -> dodaj -> Non-Test Elements -> Serwer proxy HTTP i klikamy na dole start. Pozostało jeszcze skonfigurować w przeglądarce proxy na localhost i port 8080.

Więcej o konfiguracji proxy można przeczytać w tym pdf, http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf

Teraz kiedy mamy już skonfigurowane proxy wykonajmy pierwszy test, wejście na stronę główną bloga. Najpierw do planu testów dodajmy grupę wątków, które to odpowiadają kolejno użytkownikom chodzącym po naszej stronie. Skorzystamy z jednego usera i sprawdzimy czy zwrócona odpowiedź http jest poprawna.
Klikamy prawym na plan testów -> Dodaj -> Threads (Users) ->Grupa wątków. Następnie w przeglądarce wpisujemy blog.atena.pl, request powinieć zostać przechwycony i widoczny Recording controller (zaznaczone na pierwszym zrzucie ekranu). Klikamy na żądanie ‚/’ i przeciągamy je do grupy wątków. W celu weryfikacji odpowiedzi dodajemy asercje, czyli proste wyrażenie regularne sprawdzające nasz html pod kątem zawartości jakiejś frazy. W naszym przypadku będzie to

1
<h1>Blog Technologiczny ATENA</h1>

Klikamy prawym na naszym żądaniu -> Dodaj -> Asercje -> Response Asertion. Do pola pattern dodajemy informację, że zwrócona strona powinna zawierać

1
<h1>Blog Technologiczny ATENA</h1>

Całość widoczna na drugim zrzucie ekranu.

Właściwie mamy już prawie wszystko do uruchomienia naszego testu, brakuje tylko elementu do wyświetlania wyników testu. W Jmeter mamy różne „słuchacze”, które prezentują dane na różny sposób. Polecam View result Tree, w którym dokładnie widać każde żądanie, szczególnie przydatne podczas pisania planu testów oraz View Result in Table, wygodnie zebrane dane i podane w postaci tabelki.
Klikamy prawym na plant testów -> Dodaj -> Słuchacze -> View result in tree i następnie to samo dla View result in table. Następnie zapisujemy nasz plan test crtrl+s , uruchamiamy po raz pierwszy jedno żądanie crtrl+ r. Po kliknięciu na element view result in table powinno być widać 1 poprawne żądanie jak na trzecim zrzucie ekranu.

To tyle na początek. Jak widać obsługa Jmetera nie jest specjalnie skomplikowana. Zachęcam do dalszego poznawania Jmetera.

Dodaj komentarz

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