Szukaj…


Wprowadzenie

W testach wydajności JMeter Korelacje oznaczają zdolność do pobierania danych dynamicznych z odpowiedzi serwera i wysyłania ich do kolejnych żądań. Ta funkcja jest krytyczna dla wielu aspektów testowania, takich jak chronione aplikacje oparte na tokenach.

Korelacja za pomocą ekstraktora wyrażeń regularnych w Apache JMeter

Jeśli chcesz wyodrębnić informacje z odpowiedzi tekstowej, najłatwiejszym sposobem jest użycie wyrażeń regularnych. Pasujący wzór jest bardzo podobny do tego używanego w Perlu. Załóżmy, że chcemy przetestować proces zakupu biletów lotniczych. Pierwszym krokiem jest przesłanie operacji zakupu. Następnym krokiem jest upewnienie się, że jesteśmy w stanie zweryfikować wszystkie szczegóły za pomocą identyfikatora zakupu, który powinien zostać zwrócony przy pierwszym żądaniu. Wyobraźmy sobie, że pierwsze żądanie zwraca stronę HTML z tego typu identyfikatorem, który musimy wyodrębnić:

<div class="container">
  <div class="container hero-unit">
    <h1>Thank you for you purchse today!</h1>
       <table class="table">
           <tr>
             <td>Id</td>
             <td>Your purchase id is 1484697832391</td>
           </tr>
           <tr>
             <td>Status</td>
             <td>Pending</td>
           </tr>
           <tr>
             <td>Amount</td>
             <td>120 USD</td>
            </tr>
         </table>
    </div>
</div>

Ten rodzaj sytuacji jest najlepszym kandydatem do korzystania z ekstraktora wyrażeń regularnych JMeter. Wyrażenie regularne to specjalny ciąg tekstowy opisujący wzorzec wyszukiwania. Istnieje wiele zasobów online, które pomagają pisać i testować wyrażenia regularne. Jednym z nich jest https://regex101.com/ .

wprowadź opis zdjęcia tutaj

Aby użyć tego komponentu, otwórz menu JMeter i: Dodaj -> Postprocesory -> Extractor wyrażeń regularnych

wprowadź opis zdjęcia tutaj

Ekstraktor wyrażeń regularnych zawiera następujące pola:

  • Nazwa referencyjna - nazwa zmiennej, której można użyć po wypakowaniu
  • Wyrażenie regularne - sekwencja symboli i znaków wyrażających ciąg (wzorzec), które będą wyszukiwane w tekście
  • Szablon - zawiera odniesienia do grup. Ponieważ wyrażenie regularne może mieć więcej niż jedną grupę, pozwala określić wartość grupy do wyodrębnienia, określając numer grupy jako 1 $ lub 2 $ lub 1 $ 2 $ 2 (wyodrębnij obie grupy)
  • Dopasowanie nr - określa, które dopasowanie zostanie zastosowane (wartość 0 odpowiada losowym wartościom / dowolna liczba dodatnia N oznacza wybranie N-tego dopasowania / wartość ujemna musi być użyta z kontrolerem ForEach)
  • Domyślnie - wartość domyślna, która zostanie zapisana w zmiennej w przypadku braku pasujących wyników, jest przechowywana w zmiennej.

Pole wyboru „Zastosuj do” dotyczy próbek, które zgłaszają żądania dotyczące zasobów osadzonych. Ten parametr określa, czy Wyrażenie regularne będzie stosowane do głównych wyników próbki, czy do wszystkich żądań, w tym zasobów osadzonych. Istnieje kilka opcji tego parametru:

  • Główna próbka i podpróbki
  • Tylko główna próbka
  • Tylko próbki częściowe
  • JMeter Variable - twierdzenie jest stosowane do zawartości nazwanej zmiennej, którą można wypełnić innym żądaniem

Pole wyboru „Pole do sprawdzenia” pozwala wybrać, do którego pola należy zastosować wyrażenie regularne. Prawie wszystkie parametry mają charakter opisowy:

  • Treść - treść odpowiedzi, np. Treść strony internetowej (z wyłączeniem nagłówków)
  • Treść (nieskalowana) - treść odpowiedzi, z zastąpieniem wszystkich kodów specjalnych HTML. Należy pamiętać, że zmiany znaczenia HTML są przetwarzane bez względu na kontekst, więc mogą zostać wprowadzone niepoprawne podstawienia (* ta opcja ma duży wpływ na wydajność)
  • Treść - Treść jako dokument - wyodrębnianie tekstu z różnego rodzaju dokumentów za pomocą Apache Tika (* może również wpływać na wydajność)
  • Treść - Żądanie nagłówków - może nie być obecne w przypadku próbek innych niż HTTP
  • Treść - Nagłówki odpowiedzi - mogą nie być obecne dla próbek innych niż HTTP
  • Body - URL
  • Kod odpowiedzi - np. 200
  • Treść - Komunikat odpowiedzi - np. OK

Po wyodrębnieniu wyrażenia można go użyć w kolejnych żądaniach przy użyciu zmiennej $ {buyId}.

wprowadź opis zdjęcia tutaj

Ta tabela zawiera wszystkie skurcze obsługiwane przez wyrażenia regularne JMeter:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Korelacja za pomocą ekstraktora XPath w JMeter

Za pomocą XPath można poruszać się po elementach i atrybutach w dokumencie XML. Może to być przydatne, gdy danych z odpowiedzi nie można wyodrębnić za pomocą ekstraktora wyrażeń regularnych. Na przykład w przypadku scenariusza, w którym trzeba wyodrębnić dane z podobnych tagów o tych samych atrybutach, ale o różnych wartościach. Extractor XPath jest podobny do CSS / JQuery Extractor, ale XPath Extractor powinien być używany do treści XML, podczas gdy CSS / JQuery Extractor powinien być używany do treści HTML. Załóżmy, że w odpowiedzi mamy tabelę o różnych wartościach, w której musimy wyodrębnić wartość z drugiego wiersza tabeli.

<div id="weeklyPrices">
    <tr>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$56.00</td>
        <td>$60.00</td>
        <td>$70.00</td>
        <td>$70.00</td>
    </tr>
</div>

Patrząc w przyszłość, właściwą XPath dla tego przypadku będzie: // div [@ id = 'weeklyPrices'] / tr / td 1

Aby użyć tego komponentu, otwórz menu JMeter i: Dodaj -> Postprocesory -> XPath Extractor

wprowadź opis zdjęcia tutaj

Extractor XPath zawiera kilka typowych elementów konfiguracji wymienionych w „Korelacji za pomocą ekstraktora wyrażeń regularnych”. Obejmuje to Nazwa, Zastosuj do, Nazwa referencyjna, Nr dopasowania (od JMeter 3.2) i Wartość domyślna.

Istnieje wiele zasobów internetowych z internetowymi ściągami i edytorami do tworzenia i testowania utworzonej ścieżki xpath (takiej jak ta ). Ale na podstawie poniższych przykładów możemy znaleźć sposób na utworzenie najpopularniejszych lokalizatorów xpath.

wprowadź opis zdjęcia tutaj

Jeśli chcesz parsować HTML na XHTML, musimy zaznaczyć opcję „Użyj Tidy”. Po podjęciu decyzji o stanie „Użyj porządku” dostępne są również dodatkowe opcje:

Jeśli zaznaczono opcję „Użyj porządku”:

  • Quiet - ustawia flagę Tidy Quiet
  • Zgłoś błędy - jeśli wystąpi błąd uporządkowania, odpowiednio ustaw asercję
  • Pokaż ostrzeżenia - ustawia opcję Pokaż ostrzeżenia Tidy

Jeśli „Użyj porządku” nie jest zaznaczone:

  • Użyj przestrzeni nazw - jeśli zaznaczone, parser XML użyje rozdzielczości przestrzeni nazw
  • Sprawdź poprawność XML - sprawdź dokument pod kątem określonego schematu
  • Ignoruj białe znaki - ignoruj białe znaki elementu
  • Pobierz zewnętrzne DTD - jeśli jest zaznaczone, zewnętrzne DTD są pobierane

„Zwróć cały fragment XPath zamiast treści tekstowej” jest samoopisowe i powinno być używane, jeśli chcesz zwrócić nie tylko wartość xpath, ale także wartość w jego lokalizatorze xpath. Może być przydatny do potrzeb debugowania.

Warto również wspomnieć, że istnieje lista bardzo wygodnych wtyczek do przeglądarek do testowania lokalizatorów XPath. W przeglądarce Firefox możesz użyć wtyczki „ Firebug ”, natomiast w przeglądarce Chrome „ XPath Helper ” jest najwygodniejszym narzędziem.

wprowadź opis zdjęcia tutaj

Korelacja za pomocą CSS / JQuery Extractor w JMeter

Ekstraktor CSS / JQuery umożliwia wyodrębnianie wartości z odpowiedzi serwera za pomocą składni selektora CSS / JQuery, która w innym przypadku mogłaby być trudna do napisania przy użyciu wyrażenia regularnego. Jako postprocesor ten element należy wykonać, aby wyodrębnić żądane węzły, tekst lub wartości atrybutów z próbnika żądań i zapisać wynik w podanej zmiennej. Ten komponent jest bardzo podobny do ekstraktora XPath. Wybór między CSS, JQuery lub XPath zwykle zależy od preferencji użytkownika, ale warto wspomnieć, że XPath lub JQuery mogą przechodzić w dół, a także w górę do DOM, podczas gdy CSS nie może chodzić po DOM. Załóżmy, że chcemy wyodrębnić wszystkie tematy z dokumentacji przepełnienia stosu związane z Javą. Możesz użyć wtyczki Firebug, aby przetestować selektory CSS / JQuery w Firefox lub CSS Selector Tester w Chrome.

wprowadź opis zdjęcia tutaj

Aby użyć tego komponentu, otwórz menu JMeter i: Dodaj -> Postprocesory -> CSS / JQuery Extractor

wprowadź opis zdjęcia tutaj

Prawie wszystkie pola tego ekstraktora są podobne do pól ekstraktora wyrażeń regularnych, więc możesz uzyskać ich opis z tego przykładu. Jedną różnicą jest jednak pole „Implementacja CSS / JQuery Extractor”. Od JMeter 2.9 możesz używać ekstraktora CSS / JQuery opartego na dwóch różnych implementacjach: implementacji jsoup (szczegółowy opis jego składni tutaj ) lub JODD Lagarto (szczegółową składnię można znaleźć tutaj ). Obie implementacje są prawie takie same i mają tylko niewielkie różnice w składni. Wybór między nimi zależy od preferencji użytkownika.

wprowadź opis zdjęcia tutaj

W oparciu o wyżej wspomnianą konfigurację możemy wyodrębnić wszystkie tematy z żądanej strony i zweryfikować wyodrębnione wyniki za pomocą programu „Debug Sampler” i nasłuchiwania „View Tree Tree”.

Korelacja za pomocą JSON Extractor

JSON to powszechnie używany format danych, który jest używany w aplikacjach internetowych. JMeter JSON Extractor zapewnia sposób użycia wyrażeń JSON Path do wyodrębnienia wartości z odpowiedzi opartych na JSON w JMeter. Ten postprocesor musi być umieszczony jako element podrzędny próbnika HTTP lub dowolnego innego próbnika, który ma odpowiedzi.

Aby użyć tego komponentu, otwórz menu JMeter i: Dodaj -> Postprocesory -> JSON Extractor.

wprowadź opis zdjęcia tutaj

Ekstraktor JSON jest bardzo podobny do ekstraktora wyrażeń regularnych. Prawie wszystkie główne pola są wymienione w tym przykładzie. Istnieje tylko jeden konkretny parametr JSON Extractor: „Compute concatenation var”. W przypadku znalezienia wielu wyników, ten ekstraktor połączy je za pomocą separatora „,” i zapisze w zmiennej o nazwie _ALL.

Załóżmy, że odpowiedź serwera z JSON:

{ 
    "store": {
        "book": [ 
          { "category": "reference",
            "author": "Nigel Rees",
            "title": "Sayings of the Century",
            "price": 8.95
          },
          { "category": "fiction",
            "author": "Evelyn Waugh",
            "title": "Sword of Honour",
            "price": 12.99
          },
          { "category": "fiction",
            "author": "Herman Melville",
            "title": "Moby Dick",
            "isbn": "0-553-21311-3",
            "price": 8.99
          },
          { "category": "fiction",
            "author": "J. R. R. Tolkien",
            "title": "The Lord of the Rings",
            "isbn": "0-395-19395-8",
            "price": 22.99
          }
        ],
        "bicycle": {
        "color": "red",
        "price": 19.95
    }
  }
}

Poniższa tabela zawiera doskonały przykład różnych sposobów wyodrębnienia danych z określonego JSON:

wprowadź opis zdjęcia tutaj

Poprzez ten link można znaleźć bardziej szczegółowy opis formatu ścieżki JSON, wraz z pokrewnymi przykładami.

Zautomatyzowana korelacja za pomocą „SmartJMX” BlazeMeter

Kiedy ręcznie piszesz skrypty wydajności, musisz sam sobie poradzić z korelacją. Istnieje jednak inna opcja tworzenia skryptów - nagrywanie skryptów automatyzacji. Z jednej strony ręczne podejście pomaga pisać skrypty ustrukturyzowane i można dodać wszystkie wymagane ekstraktory w tym samym czasie. Z drugiej strony takie podejście jest bardzo czasochłonne.

Nagrywanie skryptów automatyzacji jest bardzo łatwe i pozwala wykonać tę samą pracę, tylko znacznie szybciej. Ale jeśli używasz typowych sposobów nagrywania, skrypty będą bardzo nieustrukturyzowane i zwykle wymagają dodania dodatkowej parametryzacji. Funkcja „Smart JMX” w rejestratorze Blazemeter łączy zalety obu sposobów. Można go znaleźć pod tym linkiem: [ https://a.blazemeter.com/app/recorder/index.html][1]

Po rejestracji przejdź do sekcji „Rejestrator”.

wprowadź opis zdjęcia tutaj

Aby rozpocząć nagrywanie skryptu, najpierw musisz skonfigurować serwer proxy przeglądarki ( tutaj ), ale tym razem powinieneś uzyskać hosta serwera proxy i port zapewniany przez rejestrator BlazeMeter.

wprowadź opis zdjęcia tutaj

Po skonfigurowaniu przeglądarki możesz rozpocząć nagrywanie skryptu, naciskając czerwony przycisk u dołu. Teraz możesz przejść do testowanej aplikacji i wykonać przepływy pracy użytkownika w celu nagrania.

wprowadź opis zdjęcia tutaj

Po zarejestrowaniu skryptu możesz wyeksportować wyniki do pliku JMX „SMART”. Wyeksportowany plik jmx zawiera listę opcji, które pozwalają skonfigurować skrypt i sparametryzować bez dodatkowych wysiłków. Jednym z tych ulepszeń jest to, że JMX „SMART” automatycznie wyszukuje kandydatów do korelacji, zastępuje je odpowiednim ekstraktorem i zapewnia łatwy sposób na dalszą parametryzację.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow