jMeter - Wyrażenia regularne

Wyrażenia regularne służą do wyszukiwania tekstu i manipulowania nim na podstawie wzorców. JMeter interpretuje formy wyrażeń regularnych lub wzorców używanych w planie testów JMeter, włączając oprogramowanie do dopasowywania wzorców Apache Jakarta ORO .

Korzystając z wyrażeń regularnych, z pewnością możemy zaoszczędzić sporo czasu i osiągnąć większą elastyczność podczas tworzenia lub ulepszania Planu Testów. Wyrażenia regularne zapewniają prostą metodę uzyskiwania informacji ze stron, gdy niemożliwe lub bardzo trudne jest przewidzenie wyniku.

Standardowym przykładem użycia wyrażeń jest pobranie identyfikatora sesji z odpowiedzi serwera. Jeśli serwer zwróci unikalny klucz sesji, możemy go łatwo uzyskać za pomocą wyrażeń w naszym skrypcie ładowania.

Aby użyć wyrażeń regularnych w planie testów, musisz użyć narzędzia do ekstrakcji wyrażeń regularnych z JMeter. Wyrażenia regularne można umieszczać w dowolnym komponencie planu testów.

Warto podkreślić różnicę między contains i matches, jak w elemencie testowym Response Assertion -

  • containsoznacza, że ​​wyrażenie regularne dopasowało przynajmniej część celu, więc „alfabet” ”zawiera„ „ph.b.” ponieważ wyrażenie regularne dopasowuje podciąg „phabe”.

  • matchesoznacza, że ​​wyrażenie regularne pasowało do całego celu. Stąd „alfabet” jest „dopasowany” przez „al. * T”.

Załóżmy, że chcesz dopasować następującą część strony internetowej -

name = "file" value = "readme.txt"

Chcesz wyodrębnić plik readme.txt. Odpowiednim wyrażeniem regularnym byłoby -

name = "file" value = "(.+?)">

Powyższe znaki specjalne to -

  • ( i ) - zawierają część ciągu dopasowania, która ma zostać zwrócona

  • . - dopasuj dowolny znak

  • + - raz lub więcej razy

  • ? - zatrzymaj się, gdy pierwszy mecz się powiedzie

Utwórz plan testów JMeter

Zrozummy użycie wyrażeń regularnych w Ekstraktorze wyrażeń regularnych - postprocesorowym elemencie, pisząc plan testu. Ten element wyodrębnia tekst z bieżącej strony za pomocą wyrażenia regularnego, aby zidentyfikować wzorzec tekstu, z którym jest zgodny żądany element.

Najpierw piszemy stronę HTML zawierającą listę osób i ich identyfikatory e-mail. Wdrażamy go na naszym serwerze Tomcat. Zawartość html (index.html) jest następująca -

<html>
   <head>
   </head>
	
   <body>
      <table style = "border: 1px solid #000000;">
		
         <th style = "border: 1px solid #000000;">ID</th>
         <th style = "border: 1px solid #000000;">name</th>
         <th style = "border: 1px solid #000000;">Email</th>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">3</td>
            <td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">4</td>
            <td id = "Name" style = "border: 1px solid #000000;">joe</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
      </table>
   </body>
</html>

Po wdrożeniu go na serwerze Tomcat ta strona wyglądałaby tak, jak pokazano na poniższym zrzucie ekranu -

W naszym planie testów wybierzemy osobę w pierwszym wierszu tabeli osób widocznej na stronie z listą osób powyżej. Aby uchwycić identyfikator tej osoby, najpierw określmy wzór, w którym znajdziemy osobę w drugim rzędzie.

Jak widać na poniższej migawce, identyfikator drugiej osoby jest otoczony przez <td id = "ID"> i </ td> i jest to drugi wiersz danych o tym wzorcu. Możemy tego użyć, aby dopasować dokładny wzorzec, z którego chcemy wyodrębnić informacje. Ponieważ chcemy wyodrębnić dwie informacje z tej strony, identyfikator osoby i nazwisko osoby, pola są zdefiniowane w następujący sposób -

Uruchom narzędzie JMeter, dodaj grupę wątków Test Plan → Add→ Threads(Users)→ Thread Group.

Następnie dodaj żądanie HTTP próbnika, wybierz plan testów, kliknij prawym przyciskiem myszy Add → Sampler → HTTP Request i wprowadź szczegóły, jak pokazano poniżej -

  • Name - Zarządzaj

  • Server Name or IP - localhost

  • Port Number - 8080

  • Protocol - Zostawimy to pole puste, co oznacza, że ​​chcemy HTTP jako protokołu.

  • Path - jmeter / index.html

Następnie dodaj Ekstraktor wyrażeń regularnych. Wybierz próbnik żądania HTTP (Zarządzaj), kliknij prawym przyciskiem myszyAdd → Post Processor → Regular Expression Extractor.

Poniższa tabela zawiera opis pól użytych na powyższym zrzucie ekranu -

Sr.No Pole i opis
1

Reference Name

Nazwa zmiennej, w której będzie przechowywany wyodrębniony test (refname).

2

Regular Expression

Wzorzec, względem którego tekst do wyodrębnienia zostanie dopasowany. Grupy tekstowe, które zostaną wyodrębnione, są otoczone znakami „(” i „)”. Używamy „. +?” do wskazania pojedynczego wystąpienia tekstu zawartego w znacznikach <td ..> .. </td>. W naszym przykładzie wyrażenie to - <td id = "ID"> (+?) </td> \ s * <td id = "Name"> (+?) </td> \ s *

3

Template

Każda grupa wyodrębnionych tekstów umieszczana jako element zmiennej Person, zgodnie z kolejnością każdej grupy wzorca ujętej w „(” i „)”. Każda grupa jest przechowywana jako refname_g #, gdzie refname to ciąg wprowadzony jako nazwa odniesienia, a # to numer grupy. $ 1 $ odnosi się do grupy 1, $ 2 $ odnosi się do grupy 2 itd. $ 0 $ odnosi się do wszystkiego, co pasuje do całego wyrażenia. W tym przykładzie wyodrębniony identyfikator jest przechowywany w Person_g1, podczas gdy wartość Name jest przechowywana w Person_g2.

4

Match No.

Ponieważ planujemy wyodrębnić tylko drugie wystąpienie tego wzorca, dopasowując do drugiego ochotnika, używamy wartości 2. Wartość 0 spowodowałaby losowe dopasowanie, podczas gdy wartość ujemna musi być używana z kontrolerem ForEach.

5

Default

Jeśli element nie zostanie znaleziony, będzie to wartość domyślna. To pole jest opcjonalne. Możesz zostawić to puste.

Dodaj odbiornik, aby uchwycić wynik tego planu testów. Kliknij prawym przyciskiem myszy grupę wątków i wybierz opcję Dodaj → Odbiornik → Wyświetl drzewo wyników, aby dodać nasłuchiwanie.

Zapisz plan testów jako reg_express_test.jmx i uruchom test. Wynik byłby sukcesem, jak pokazano na poniższym zrzucie ekranu -