Skip to content

JMeter – nagrywanie żądań

przez Łukasz Picur - Luty 5th, 2012

Wpis ten jest kontynuacją serii poświęconej JMeterowi – bardzo popularnemu narzędziu służącemu do przeprowadzania różnorakich testów wydajnościowych. Jest to, jak się okazuje, bardzo pożądany temat, więc w najbliższym czasie na blogu pojawi się więcej związanych z nim informacji. W tym wpisie postaram się przybliżyć technikę, która potrafi oszczędzić bardzo wiele czasu – nagrywanie wykonywanych przez przeglądarkę żądań HTTP bezpośrednio w JMeterze.

Zacznijmy od prostego przypadku użycia. Poniżej znajduje się demonstracyjny scenariusz testowy, w którym wysyłane jest tylko jedno żądanie do głównej strony Java Bloga.

Załóżmy, że w drugim kroku chcemy pobrać stronę z pierwszym wpisem poświęconym JMeterowi. Można to oczywiście zrobić ręcznie, ale na potrzeby demonstracji użyjemy oferowanego przez opisywane narzędzie serwera proxy, by żądanie to „nagrać”. W tym konkretnym przypadku jest to może nadmiarowe, jednak gdy pracujemy z rozbudowanymi aplikacjami wykorzystującymi AJAX, gdzie po kliknięciu jednego przycisku wysyłany jest cały szereg żądań, często z olbrzymią ilością JSONa, możemy zaoszczędzić w ten sposób sporo czasu. Zacznijmy więc od dodania do scenariusza elementu o nazwie HTTP Proxy Server. Najlepiej umieścić go w WorkBench, czyli swoistym brudnopisie. W ten sposób nie zaśmiecimy sobie scenariusza właściwego.

Gdy proxy znajduje się już w naszym drzewku, warto pamiętać o zmianie wartości jednej z jego właściwości, a mianowicie Target Controller. Wybrać należy wartość wskazującą na dodany wcześniej element proxy. W ten sposób przechwycone żądania zostaną dodane jako jego podelementy.

W tym momencie jesteśmy już gotowi do „nagrywania” żądań. Wystarczy kliknąć przycisk Start w panelu właściwości proxy i zadbać o odpowiednie ustawienia używanej przeglądarki. Oto na jaki efekt można liczyć:

Pokaźna ilość elementów wynika z tego, że znajdują się pośród nich także pobierane zasoby, jak np. obrazki, style, pliki JS. Aby ograniczyć wynikową listę, można w elemencie proxy zdefiniować wzorce adresów, które mają zostać pominięte. Warto pamiętać, że tak na prawdę podajemy wyrażenia regularne, które będą następnie dopasowywane do kolejnych URLi. Tak więc chcąc uniknąć przechwytywania pobieranych styli CSS, dodać należy wzorzec .*\.css(\?.*)? . Warto zwrócić uwagę na część występującą po rozszerzeniu, która odpowiada za dopasowanie ewentualnych parametrów przekazywanych poprzez URL.

Do tematu można podejść także od drugiej strony – prócz metody blacklist, czyli filtrowania niektórych żądań, dostępny jest też tryb whitelist, w którym decydujemy, które requesty mają być przechwycone. Metoda ograniczania otrzymanych wyników zależy oczywiście od konkretnego przypadku użycia. Mając interesujące nas samplery wygenerowane automatycznie przez JMetera, możemy przenieść je do właściwego scenariusza. Dobrze jest także być świadomym możliwości konfiguracyjnych, które wpływają na domyślne wartości ich właściwości. Dostępne są one w dobrze już znanym panelu serwera proxy – możemy zdecydować m.in. o:

  • Zapisywaniu nagłówków HTTP – jeśli włączymy tą funkcję, do każdego samplera dodany będzie element Header Manager.
  • Automatycznym dodawaniu asercji – jeśli włączymy tą funkcję, do każdego samplera dodany będzie pusty element Response Assertion. Jest to przydatna opcja, jeśli zamierzamy walidować w jakiś sposób odpowiedź serwera.
  • Typie generowanego samplera – do wyboru jest Java i HTTPClient w kilku wersjach.
  • Domyślnych wartościach takich parametrów samplera, jak Redirect AutomaticallyFollow RedirectsUse Keep-Alive, oraz Retrieve Embedded Resources. W tym miejscu warto się jednak zastanowić, czy nie lepiej użyć w scenariuszu testowym globalnych ustawień żądań HTTP.

Uzbrojeni w przedstawione informacje możemy z powodzeniem dodać i odpowiednio skonfigurować serwer proxy w JMeterze. Gorąco do tego zachęcam, gdyż już po pierwszym użyciu da się zauważyć dużą oszczędność czasu. Namawiam również do częstego odwiedzania bloga, gdzie seria artykułów poświęconych temu niezwykle przydatnemu narzędziu będzie poszerzana o nowe pozycje.

Kategoria → Java

Brak komentarzy

Zostaw komentarz

Info: XHTML jest dozwolony. Twój adres email nigdy nie będzie opublikowany.

Obserwuj komentarze poprzez RSS