Tomasz D

Tomasz D Programista
Java/JEE, freelancer

Temat: Testy obciążeniowe "klikalnej" aplikacji

Jest sobie aplikacja webowa, w której użytkownik wchodzi za pomocą własnego, unikalnego url'a:
http://aplikacja.pl/userId i następnie przechodzi przez kilkanaście ekranów odpowiadając na różne pytania, czasem buttonem tak/nie, czasem wybiera jedna dostępnym odpowiedzi i klika 'ok', itd.

Chciałbym przetestować jak poradzi sobie aplikacja z obciążeniem
rzędu kilkuset userów na raz, jakie będą czasy ładowania kolejnych stron, czy tomcat się nie wywali, ew. przy jakiej ilości użytkowników się wywali :)
Wtedy mógłbym ewentualnie spróbować zoptymalizować jakieś fragmenty aplikacji, żeby poprawić te osiągi.

Jednak mam problem ze znalezieniem odpowiedniego narzędzia do przeprowadzenia takich testów, na tyle na ile znam JMetera, to nie oferuje on takiej funkcjonalności jak mi jest potrzebna.
Ma ktoś może jakieś doświadczenia i może coś przydatnego polecić?Tomasz Dziurko edytował(a) ten post dnia 23.01.10 o godzinie 21:57
Michał B.

Michał B. Head of Operations
PL at EPAM Systems

Temat: Testy obciążeniowe "klikalnej" aplikacji

Doświadczenia z takimi testami co prawda nie mam, ale może warto rzucić okiem na Grinder'a lub httperf.
Jacek Lis

Jacek Lis Senior Technical
Lead, EY (dawniej
Ernst & Young)

Temat: Testy obciążeniowe "klikalnej" aplikacji

Ja dorzucę do listy Sahi'ego

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

Tomasz Dziurko:
na tyle na ile znam JMetera, to nie oferuje on takiej funkcjonalności jak mi jest potrzebna.

Tomku, dlaczego uważasz że JMeter sobie z tym nie poradzi ?
Tomasz D

Tomasz D Programista
Java/JEE, freelancer

Temat: Testy obciążeniowe "klikalnej" aplikacji

Marek K.:
Tomasz Dziurko:
na tyle na ile znam JMetera, to nie oferuje on takiej funkcjonalności jak mi jest potrzebna.

Tomku, dlaczego uważasz że JMeter sobie z tym nie poradzi ?

Bo nic mi nie wiadomo o tym, żebym mógł powiedzieć JMeterowi zrób tak:
1. Przejdź do strony <url1>.
2. Kliknij guzik 'tak'
3. Policz czas przejścia do kolejnej strony
4. Wybierz radioboxa nr 3.
5. Kliknij 'Ok'
6. Policz czas przejścia do kolejnej strony
7. Powtórz kroki 4-6 N razy.
8. Zakończ

w powiedzmy 400 równoległych wątkach. Chyba, że po prostu znam JMetera za słabo :)

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

Tomasz Dziurko:
Marek K.:
Tomasz Dziurko:
na tyle na ile znam JMetera, to nie oferuje on takiej funkcjonalności jak mi jest potrzebna.

Tomku, dlaczego uważasz że JMeter sobie z tym nie poradzi ?

Bo nic mi nie wiadomo o tym, żebym mógł powiedzieć JMeterowi zrób tak:
1. Przejdź do strony <url1>.
2. Kliknij guzik 'tak'
3. Policz czas przejścia do kolejnej strony
4. Wybierz radioboxa nr 3.
5. Kliknij 'Ok'
6. Policz czas przejścia do kolejnej strony
7. Powtórz kroki 4-6 N razy.
8. Zakończ

w powiedzmy 400 równoległych wątkach. Chyba, że po prostu znam JMetera za słabo :)

Nie wiem czy dobrze Cię rozumiem, ale wydaje mi się że to wszystko możesz jednak z jmeterem zrobić (może poza punktem 1, ale nie do końca go rozumiem). Co do pozostałych punktów to raczej możesz spokojnie to wykonać. W pliku konfiguracyjnym jmeter.properties masz parametr:
beanshell.function.init=PLIK.bshrc

w pliku PLIK.bshrc możesz przy pomocy beanshella pisać różne funkcje, które później wykorzystasz w scenariuszu testowym.
I tak np na formatce masz 4 radiobuttony. Nagrywasz sobie tą stronę 4 razy (za każdym razem np. z wybranym innym radiobuttonem). Przed każdą stronką zapisaną w skrypcie możesz wykonywać funkcje z pliku PLIK.bshrc i w ten sposób uzyskiwać pewne wartości, których później użyjesz w skrypcie do sterowania ścieżką wykonania skryptu.
Czasy przejścia do kolejnej strony można łatwo rejestrować przy pomocy elementu aggregate report (element umieszczasz w głównym korzeniu testu :) jeśli chcesz żeby Ci zrzucał czasy wszystkich formatek, lub pod konkretną formatką jeśli chcesz badać czas dla niej. Powtórzenie kroków robisz obejmując fragment scenariusza elementem loop controler.
Jeśli chodzi o kilkuset użytkowników, to może być problem z wykonaniem tego przy użyciu jednej instancji jmetera (chyba że skrypt nie będzie zbytnio rozbudowany).
Ale w takim wypadku odpalasz powiedzmy 4 instancje po 50 użytkowników i już :)
Zawsze można ograniczyć zasobożerność wywołując test z poziomu linii poleceń (jmeter.bat -n -t NAZWA_SCENARIUSZA). Ale to już musisz sobie doczytać.
W każdym razie wydaje mi się że wszystko to o co Ci chodzi da się tam zrobić.Marek K. edytował(a) ten post dnia 24.01.10 o godzinie 10:41

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

czesc,
Tomasz Dziurko:
ciaaaach
Chyba, że po prostu znam JMetera za słabo :)
chyba tak ;-)
przy recordingu HTTP moze Ci pomoc HTTP Proxy Server.

pozdrowienia
Marcin
edith: linkmarcin brzoza edytował(a) ten post dnia 24.01.10 o godzinie 11:19

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

Tomasz Dziurko:
Jest sobie aplikacja webowa, w której użytkownik wchodzi za pomocą własnego, unikalnego url'a:
http://aplikacja.pl/userId i następnie przechodzi przez kilkanaście ekranów odpowiadając na różne pytania, czasem buttonem tak/nie, czasem wybiera jedna dostępnym odpowiedzi i klika 'ok', itd.

Chciałbym przetestować jak poradzi sobie aplikacja z obciążeniem
rzędu kilkuset userów na raz, jakie będą czasy ładowania kolejnych stron, czy tomcat się nie wywali, ew. przy jakiej ilości użytkowników się wywali :)
Wtedy mógłbym ewentualnie spróbować zoptymalizować jakieś fragmenty aplikacji, żeby poprawić te osiągi.

Jednak mam problem ze znalezieniem odpowiedniego narzędzia do przeprowadzenia takich testów, na tyle na ile znam JMetera, to nie oferuje on takiej funkcjonalności jak mi jest potrzebna.
Ma ktoś może jakieś doświadczenia i może coś przydatnego polecić?Tomasz Dziurko edytował(a) ten post dnia 23.01.10 o godzinie 21:57


1) Selenium
2) JMetter - ale trzeba więcej pokombinować.

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

Marcin Miotk:
1) Selenium

Nie wiem jak wiele się zmieniło w Selenium od kiedy z niego korzystałem, ale wówczas każda instancja testu odpalała się w oddzielnej instancji przeglądarki. Jakoś nie wyobrażam sobie maszyny, która byłaby w stanie wytrzymać - choćby pamięciowo - obciążenie rzędu 300 FireFoxów czy IE.
Irek Słonina

Irek Słonina programowanie, bazy
danych i linuksy

Temat: Testy obciążeniowe "klikalnej" aplikacji

Tomasz Dziurko:
Marek K.:
Tomasz Dziurko:
na tyle na ile znam JMetera, to nie oferuje on takiej funkcjonalności jak mi jest potrzebna.

Tomku, dlaczego uważasz że JMeter sobie z tym nie poradzi ?

Bo nic mi nie wiadomo o tym, żebym mógł powiedzieć JMeterowi zrób tak:
1. Przejdź do strony <url1>.
2. Kliknij guzik 'tak'
3. Policz czas przejścia do kolejnej strony
4. Wybierz radioboxa nr 3.
5. Kliknij 'Ok'
6. Policz czas przejścia do kolejnej strony
7. Powtórz kroki 4-6 N razy.
8. Zakończ

w powiedzmy 400 równoległych wątkach. Chyba, że po prostu znam JMetera za słabo :)

watij daje radę.
Tylko że wątkowanie należy we własnym zakresie... i jest tak jak napisał Darek - nadal zostaje problem z obciążeniem na maszynie testującej.
Na moim desktopie laptopowym dałem radę z ok. 20 wątkami, później już było wyraźnie spowolnienie 'klikania' na stronach ze względu na obciążenie IE.

Dobrym rozwiązaniem może się okazać
http://httpunit.sourceforge.net/ , który nie używa IE/Firefoksa do klikania tylko posiada własną obsługę. Prawdopodobnie zdecydowanie szybszą.
Arkadiusz Prymek

Arkadiusz Prymek Starszy Programista
Java

Temat: Testy obciążeniowe "klikalnej" aplikacji

a moze połączenie Jmeter + BadBoy ?
Badboyem nagrac sobie skrypt jak przejsc strone , wyeksportowac do Jmetera, tyle ze Badboy z tego co pamietam dziala na IE wiec moze miec problemy z js ale to nie stanowi wiekszego problemu.

Jmeter pociągnie i ponad 30 wątkow :)

http://www.badboy.com.au/

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

Arkadiusz Prymek:
a moze połączenie Jmeter + BadBoy ?
Badboyem nagrac sobie skrypt jak przejsc strone , wyeksportowac do Jmetera, tyle ze Badboy z tego co pamietam dziala na IE wiec moze miec problemy z js ale to nie stanowi wiekszego problemu.

Jmeter pociągnie i ponad 30 wątkow :)

http://www.badboy.com.au/


Czy skrypt wygenerowany z tego narzędzia bez problemu wczytuje/uruchamia się w Jmeterze, czy trzeba robić jakieś przeróbki ?
Co do js to ja nagrywając kiedyś skrypty w jmeterze w ogóle nie nagrywałem js.Marek K. edytował(a) ten post dnia 02.02.10 o godzinie 20:09
Arkadiusz Prymek

Arkadiusz Prymek Starszy Programista
Java

Temat: Testy obciążeniowe "klikalnej" aplikacji

po nagraniu w badboy-u wystarczy wybrac opcje export to jmeter -> tworzy sie juz wtedy plik .jmx wczytujemy ten plik do jmetera dziala bez problemu

a propo js-ow jako ze Badboy przy nagrywaniu korzysta z IE6(chyba ze w nowej wersji zmienili) wiec od czasu do czasu wyskakuja alerty ze cos sie zepsulo, ale nie warto sie tym przejmowac:)

konto usunięte

Temat: Testy obciążeniowe "klikalnej" aplikacji

jmeter doskonale sobie radzi w nagrywaniu scenariusza, spotkałem się z przypadkami kiedy Badboy nie potrafił się np. zalogować. Pozdrawiam
Jakub Grabowski

Jakub Grabowski Tworzenie aplikacji,
integracja SOA,
outsourcing,
szkolen...

Temat: Testy obciążeniowe "klikalnej" aplikacji

Tomasz Dziurko:

Bo nic mi nie wiadomo o tym, żebym mógł powiedzieć JMeterowi zrób tak:
1. Przejdź do strony <url1>.
Można na pewno.
2. Kliknij guzik 'tak'
To jest prawdopodobnie jakiś formularz. Można wysłać postem i getem praktycznie dowolną treść.
3. Policz czas przejścia do kolejnej strony
JMeter bardzo dobrze radzi sobie z liczeniem czasów ładowania.
4. Wybierz radioboxa nr 3.
To pewnie też jakiś formularz.
5. Kliknij 'Ok'
j.w.

Kiedyś robiłem duże testy JMeterowe dla kilkunastu różnych aplikacji na portalu operatora komórkowego i JMeter sprawdzał się nieźle w tego typu scenariuszach. Jeśli odpalisz test poza GUI to można zasymulować całkiem duży ruch.

Następna dyskusja:

Administrator Aplikacji - J2EE




Wyślij zaproszenie do