jMeter - Szybki przewodnik
Zanim przejdziemy do szczegółów JMeter, najpierw zrozumiemy kilka żargonów związanych z testowaniem dowolnej aplikacji.
Performance Test- Ten test określa najlepsze możliwe oczekiwania dotyczące wydajności w danej konfiguracji infrastruktury. Podkreśla również na wczesnym etapie procesu testowania, czy należy wprowadzić jakiekolwiek zmiany, zanim aplikacja trafi do produkcji.
Load Test - Test ten jest zasadniczo używany do testowania systemu pod maksymalnym obciążeniem, pod jakim został zaprojektowany.
Stress Test - Ten test jest próbą złamania systemu poprzez przytłoczenie jego zasobów.
Co to jest JMeter?
JMeter to oprogramowanie, które może wykonywać testy obciążenia, testy biznesowe (funkcjonalne) zorientowane na wydajność, testy regresji itp. Na różnych protokołach lub technologiach.
Stefano Mazzocchiz Apache Software Foundation był pierwotnym twórcą JMeter. Napisał go głównie w celu przetestowania wydajności Apache JServ (obecnie nazywanego projektem Apache Tomcat). Apache później przeprojektował JMeter, aby ulepszyć GUI i dodać funkcje testowania funkcjonalnego.
JMeter to aplikacja desktopowa Java z interfejsem graficznym korzystającym z graficznego interfejsu API Swing. Dlatego może działać na dowolnym środowisku / stacji roboczej, która akceptuje wirtualną maszynę Java, na przykład - Windows, Linux, Mac itp.
Protokoły obsługiwane przez JMeter to -
Sieć - strony HTTP, HTTPS 'web 1.0' web 2.0 (ajax, flex i flex-ws-amf)
Usługi sieci Web - SOAP / XML-RPC
Baza danych za pośrednictwem sterowników JDBC
Katalog - LDAP
Usługa zorientowana na komunikację za pośrednictwem JMS
Usługa - POP3, IMAP, SMTP
Usługa FTP
Funkcje JMeter
Oto niektóre funkcje JMeter -
Będąc oprogramowaniem open source, jest dostępne bezpłatnie.
Posiada proste i intuicyjne GUI.
JMeter może przeprowadzać testy obciążenia i wydajności dla wielu różnych typów serwerów - WWW - HTTP, HTTPS, SOAP, Baza danych przez JDBC, LDAP, JMS, Mail - POP3 itp.
Jest to narzędzie niezależne od platformy. W systemie Linux / Unix JMeter można wywołać, klikając skrypt powłoki JMeter. W systemie Windows można go wywołać, uruchamiając plik jmeter.bat.
Ma pełne wsparcie dla Swing i lekkich komponentów (prekompilowany JAR używa pakietów javax.swing. *).
JMeter przechowuje swoje plany testów w formacie XML. Oznacza to, że możesz wygenerować plan testów za pomocą edytora tekstu.
Jego pełna struktura wielowątkowa umożliwia jednoczesne próbkowanie przez wiele wątków i jednoczesne próbkowanie różnych funkcji przez oddzielne grupy wątków.
Jest wysoce rozszerzalny.
Może również służyć do automatycznego i funkcjonalnego testowania aplikacji.
Jak działa JMeter?
JMeter symuluje grupę użytkowników wysyłających żądania do serwera docelowego i zwraca statystyki przedstawiające wydajność / funkcjonalność serwera docelowego / aplikacji za pomocą tabel, wykresów itp.
Spójrz na poniższy rysunek, który przedstawia, jak działa JMeter -
JMeter to framework dla Javy, więc pierwszym wymaganiem jest zainstalowanie JDK na twojej maszynie.
Wymagania systemowe
JDK | 1.6 lub nowszy. |
---|---|
Pamięć | Brak minimalnych wymagań. |
Miejsca na dysku | Brak minimalnych wymagań. |
System operacyjny | Brak minimalnych wymagań. |
Krok 1: Zweryfikuj instalację oprogramowania Java
Przede wszystkim sprawdź, czy masz zainstalowaną Javę w swoim systemie. Otwórz konsolę i wykonaj jedną z następujących czynnościjava polecenia oparte na systemie operacyjnym, nad którym pracujesz.
OS | Zadanie | Komenda |
---|---|---|
Windows | Otwórz konsolę poleceń | c: \> java -version |
Linux | Otwórz terminal poleceń | $ java -version |
Prochowiec | Otwórz Terminal | maszyna: ~ joseph $ java -version |
Jeśli masz zainstalowaną Javę w swoim systemie, otrzymasz odpowiednie dane wyjściowe w oparciu o system operacyjny, nad którym pracujesz.
OS | Wynik |
---|---|
Windows | wersja java „1.7.0_25” Środowisko wykonawcze Java (TM) SE (kompilacja 1.7.0_25-b15) Java HotSpot (TM) 64-bitowa maszyna wirtualna serwera (wersja 23.25-b01, tryb mieszany) |
Linux | wersja java „1.7.0_25” Środowisko wykonawcze Java (TM) SE (kompilacja 1.7.0_25-b15) Java HotSpot (TM) 64-bitowa maszyna wirtualna serwera (wersja 23.25-b01, tryb mieszany) |
Prochowiec | wersja java „1.7.0_25” Środowisko wykonawcze Java (TM) SE (kompilacja 1.7.0_25-b15) Java HotSpot (TM) 64-bitowa maszyna wirtualna serwera (wersja 23.25-b01, tryb mieszany) |
Jeśli nie masz zainstalowanej Java, zainstaluj pakiet Java Software Development Kit (SDK) ze strony www.oracle.com/technetwork/java/javase/downloads/index.html . Zakładamy Java 1.7.0_25 jako zainstalowaną wersję tego samouczka.
Krok 2: Ustaw środowisko Java
Ustaw JAVA_HOMEzmienna środowiskowa wskazująca lokalizację katalogu podstawowego, w którym na komputerze jest zainstalowana Java. Na przykład -
OS | Wynik |
---|---|
Windows | Ustaw zmienną środowiskową JAVA_HOME na C: \ Program Files \ Java \ jdk1.7.0_25 |
Linux | eksportuj JAVA_HOME = / usr / local / java-current |
Prochowiec | eksportuj JAVA_HOME = / Library / Java / Home |
Dołącz lokalizację kompilatora Java do ścieżki systemowej.
OS | Wynik |
---|---|
Windows | Dołącz ciąg; C: \ Program Files \ Java \ jdk1.7.0_25 \ bin do końca zmiennej systemowej Path. |
Linux | export PATH = $ PATH: $ JAVA_HOME / bin / |
Prochowiec | nie wymagane |
Sprawdź instalację oprogramowania Java przy użyciu java -version polecenie, jak wyjaśniono powyżej.
Krok 3: Pobierz JMeter
Pobierz najnowszą wersję narzędzia JMeter z witryny https://jmeter.apache.org/download_jmeter.cgi. W tym samouczku pobraliśmy apache-jmeter-2.9 i skopiowaliśmy go do folderu C: \> JMeter.
Struktura katalogów powinna wyglądać tak, jak pokazano poniżej -
- apache-jmeter-2.9
- apache-jmeter-2.9\bin
- apache-jmeter-2.9\docs
- apache-jmeter-2.9\extras
- apache-jmeter-2.9\lib\
- apache-jmeter-2.9\lib\ext
- apache-jmeter-2.9\lib\junit
- apache-jmeter-2.9\printable_docs
Jeśli chcesz, możesz zmienić nazwę katalogu nadrzędnego (np. Apache-jmeter-2.9), ale nie zmieniaj żadnych nazw podkatalogów.
Krok 4: Uruchom JMeter
Po pobraniu narzędzia JMeter przejdź do katalogu bin . W tym przypadku tak jest/home/manisha/apache-jmeter-2.9/bin. Teraz kliknij następujące -
OS | Wynik |
---|---|
Windows | jmeter.bat |
Linux | jmeter.sh |
Prochowiec | jmeter.sh |
Po krótkiej przerwie powinien pojawić się GUI JMeter, który jest aplikacją Swing, jak widać na poniższym zrzucie ekranu -
To jest strona główna i domyślna strona narzędzia.
Co to jest plan testów?
Plan testów można postrzegać jako kontener do uruchamiania testów. Określa, co należy przetestować i jak się do tego zabrać. Kompletny plan testów składa się z co najmniej jednego elementu, takiego jak grupy wątków, kontrolery logiczne, kontrolery generujące próbki, detektory, liczniki czasu, potwierdzenia i elementy konfiguracji. Plan testów musi mieć co najmniej jedną grupę wątków.
Pisanie planu testów
Wykonaj poniższe czynności, aby napisać plan testów -
Krok 1: Uruchom okno JMeter
Otwórz okno JMeter, klikając /home/manisha/apache-jmeter-2.9/bin/jmeter.sh. Okno JMeter pojawi się jak poniżej -
Jest to zwykłe i puste okno JMeter bez dodanych do niego żadnych dodatkowych elementów. Zawiera dwa węzły -
Test Plan node - to prawdziwy plan testów.
Workbench node- Po prostu zapewnia miejsce do tymczasowego przechowywania elementów testowych, gdy nie są używane, do celów kopiowania / wklejania. Podczas zapisywania planu testów elementy Workbencha nie są z nim zapisywane.
Krok 2: Dodaj / usuń elementy
Elementy (które zostaną omówione w następnym rozdziale Elementy planu testów ) można dodać do planu testów, klikając prawym przyciskiem myszy węzeł Plan testów i wybierając nowy element z listy „dodaj”.
Alternatywnie możesz wczytać element z pliku i dodać go, wybierając opcję „scal” lub „otwórz”.
Na przykład dodajmy element Thread Group do planu testów, jak pokazano poniżej -
Aby usunąć element, upewnij się, że jest on zaznaczony, kliknij go prawym przyciskiem myszy i wybierz opcję „usuń”.
Krok 3: Załaduj i zapisz elementy
Aby załadować element z pliku -
- Kliknij prawym przyciskiem myszy istniejący element drzewa, do którego chcesz dodać załadowany element.
- Wybierz Scal.
- Wybierz plik, w którym zapisałeś elementy.
- JMeter połączy elementy w drzewo.
Domyślnie JMeter nie zapisuje elementu, musisz go jawnie zapisać.
Aby zapisać elementy drzewka -
- Kliknij prawym przyciskiem myszy element.
- Wybierz opcję Zapisz zaznaczenie jako ...
Narzędzie JMeter zapisze wybrany element oraz wszystkie elementy podrzędne znajdujące się pod nim. Domyślnie JMeter nie zapisuje elementów, musisz go jawnie zapisać, jak wspomniano wcześniej.
Krok 4: Konfiguracja elementów drzewa
Każdy element w planie testów można skonfigurować za pomocą elementów sterujących znajdujących się w prawej ramce JMeter. Te kontrolki umożliwiają skonfigurowanie zachowania tego konkretnego elementu testu. Na przykład grupę wątków można skonfigurować dla wielu użytkowników, okresów rozruchu itp., Jak pokazano poniżej -
Krok 5: Zapisywanie planu testów
Możesz zapisać cały plan testów, korzystając z jednego z nich Save lub "Save Test Plan As ..." z menu Plik.
Krok 6: Uruchom plan testów
Możesz uruchomić plan testów, klikając Start(Control + r) z pliku Runpozycja w menu. Gdy narzędzie JMeter zaczyna działać, wyświetla małe zielone pole po prawej stronie sekcji tuż pod paskiem menu.
Liczby po lewej stronie zielonego pola to liczba aktywnych wątków / całkowita liczba wątków. Dotyczy to tylko testów przeprowadzanych lokalnie; nie zawierają żadnych wątków uruchomionych w systemach zdalnych w trybie klient-serwer.
Krok 7: Zatrzymaj plan testów
Możesz przerwać test na dwa sposoby -
Za pomocą Stop(Control + „.”). Jeśli to możliwe, natychmiast zatrzymuje wątki.
Za pomocą Shutdown(Control + ','). Żąda zatrzymania wątków po zakończeniu bieżącej pracy.
Plan testów JMeter składa się z elementów testowych omówionych poniżej. Plan testów składa się z co najmniej jednej grupy wątków. W każdej grupie wątków możemy umieścić kombinację jednego lub więcej innych elementów - samplera, kontrolera logicznego, elementu konfiguracji, odbiornika i timera. Każdy próbnik może być poprzedzony jednym lub większą liczbą elementów preprocesora, po których następuje element postprocesora i / lub element asercji. Przyjrzyjmy się szczegółowo każdemu z tych elementów -
Grupa wątków
Elementy grupy wątków to punkty początkowe planu testów. Jak sama nazwa wskazuje, elementy grupy wątków kontrolują liczbę wątków, których JMeter użyje podczas testu. Możemy również kontrolować następujące elementy za pośrednictwem grupy wątków -
Ustawianie liczby wątków
Ustawianie czasu rozruchu
Ustawianie liczby iteracji testów
Panel sterowania grupy wątków wygląda następująco -
Panel grupy wątków zawiera następujące komponenty -
Action to be taken after a Sampler error - W przypadku wystąpienia błędu podczas wykonywania testu, możesz pozwolić testowi:
Continue do następnego elementu w teście
Stop Thread aby zatrzymać bieżący wątek.
Stop Test całkowicie, na wypadek gdybyś chciał sprawdzić błąd, zanim będzie dalej działał.
Number of Threads - Symuluje liczbę użytkowników lub połączeń z aplikacją serwera.
Ramp-Up Period Określa, ile czasu zajmie uruchomienie przez narzędzie JMeter wszystkich wątków.
Loop Count - Określa, ile razy należy wykonać test.
Scheduler checkbox - Po wybraniu sekcja Konfiguracja harmonogramu pojawia się w dolnej części panelu sterowania.
Scheduler Configuration - Możesz skonfigurować czas rozpoczęcia i zakończenia testu.
Kontrolery
JMeter ma dwa typy kontrolerów - samplery i kontrolery logiczne .
Próbniki
Samplery umożliwiają JMeter wysyłanie określonych typów żądań do serwera. Symulują żądanie użytkownika dotyczące strony z serwera docelowego. Na przykład możesz dodać próbnik żądań HTTP, jeśli chcesz wykonać POST, GET lub DELETE w usłudze HTTP.
Niektóre przydatne samplery to -
- Żądanie HTTP
- Żądanie FTP
- Żądanie JDBC
- Żądanie Java
- Żądanie SOAP / XML
- Żądania RPC
Poniższy zrzut ekranu przedstawia panel sterowania próbnika żądań HTTP -
Kontrolery logiczne
Kontrolery logiczne pozwalają kontrolować kolejność przetwarzania samplerów w wątku. Kontrolery logiczne mogą zmieniać kolejność żądań pochodzących z dowolnego z ich elementów podrzędnych. Niektóre przykłady to - kontroler ForEach, kontroler While, kontroler pętli, kontroler IF, kontroler czasu pracy, kontroler z przeplotem, kontroler przepustowości i kontroler Run Once.
Poniższy zrzut ekranu przedstawia panel sterowania kontrolera pętli -
Poniższa lista zawiera wszystkie sterowniki logiczne JMeter zapewnia -
- Prosty kontroler
- Kontroler pętli
- Tylko raz kontroler
- Kontroler przeplotu
- Losowy kontroler
- Kontroler losowych zamówień
- Kontroler przepustowości
- Kontroler czasu pracy
- Jeśli kontroler
- Podczas gdy kontroler
- Przełącznik kontrolera
- Kontroler ForEach
- Kontroler modułu
- Dołącz kontroler
- Kontroler transakcji
- Kontroler nagrywania
Testuj fragmenty
Fragment testowy to specjalny typ elementu umieszczonego na tym samym poziomie co element grupy wątków. Różni się od grupy wątków tym, że nie jest wykonywany, chyba że odwołuje się do niego kontroler modułu lub Include_Controller. Ten element służy wyłącznie do ponownego wykorzystania kodu w planach testów.
Słuchacze
Detektory umożliwiają przeglądanie wyników Samplerów w postaci tabel, wykresów, drzew lub prostego tekstu w niektórych plikach dziennika. Zapewniają wizualny dostęp do danych zebranych przez JMeter na temat przypadków testowych podczas wykonywania składnika Sampler w JMeter.
Słuchaczy można dodawać w dowolnym miejscu testu, w tym bezpośrednio w planie testu. Będą zbierać dane tylko z elementów na ich poziomie lub poniżej. Poniższa lista zawiera wszystkie narzędzia Listeners JMeter -
- Przykładowa konfiguracja zapisu wyników
- Wykres pełne wyniki
- Wyniki wykresu
- Wizualizator splajnów
- Wyniki asercji
- Wyświetl drzewo wyników
- Raport zbiorczy
- Wyświetl wyniki w tabeli
- Prosty moduł zapisujący dane
- Monitoruj wyniki
- Wykres dystrybucji (alfa)
- Wykres zbiorczy
- Mailer Visualizer
- BeanShell Listener
- Raport podsumowujący
Timery
Domyślnie wątek JMeter wysyła żądania bez przerw między każdym próbnikiem. To może nie być to, czego chcesz. Możesz dodać element licznika czasu, który pozwala zdefiniować okres oczekiwania między każdym żądaniem.
Poniższa lista przedstawia wszystkie liczniki czasu, które zapewnia JMeter -
- Stały zegar
- Gaussian Random Timer
- Jednolity losowy zegar
- Zegar o stałej przepustowości
- Synchronizacja timera
- JSR223 Czas
- Czas BeanShell
- Czas BSF
- Czas losowy Poissona
Poniższy zrzut ekranu przedstawia panel sterowania ze stałym zegarem -
Asercje
Asercje pozwalają na dołączenie testu walidacyjnego do odpowiedzi na żądanie wysłane za pomocą próbnika. Za pomocą asercji możesz udowodnić, że Twoja aplikacja zwraca prawidłowe dane. JMeter wyróżnia, gdy asercja kończy się niepowodzeniem.
Poniższa lista zawiera wszystkie stwierdzenia dostarczane przez JMeter -
- Asercja Beanshell
- Asercja BSF
- Porównaj stwierdzenie
- Asercja JSR223
- Asercja odpowiedzi
- Asercja czasu trwania
- Asercja rozmiaru
- Asercja XML
- Asercja BeanShell
- Asercja MD5Hex
- Asercja HTML
- Asercja XPath
- Asercja schematu XML
Poniższy zrzut ekranu przedstawia panel sterowania potwierdzania odpowiedzi -
Elementy konfiguracji
Elementy konfiguracji umożliwiają tworzenie wartości domyślnych i zmiennych, które będą używane przez samplery. Służą do dodawania lub modyfikowania żądań wysyłanych przez samplery.
Są one wykonywane na początku zakresu, którego są częścią, przed próbnikami znajdującymi się w tym samym zakresie. Dlatego dostęp do elementu konfiguracji jest możliwy tylko z wnętrza gałęzi, w której został umieszczony.
Poniższa lista zawiera wszystkie elementy konfiguracji, które zapewnia JMeter -
- Counter
- Konfiguracja zbioru danych CSV
- Ustawienia domyślne żądania FTP
- Menedżer autoryzacji HTTP
- Menedżer pamięci podręcznej HTTP
- Menedżer plików cookie HTTP
- Serwer proxy HTTP
- Ustawienia domyślne żądania HTTP
- Menedżer nagłówków HTTP
- Ustawienia domyślne żądania Java
- Konfiguracja magazynu kluczy
- Konfiguracja połączenia JDBC
- Element konfiguracji logowania
- Domyślne żądania LDAP
- Rozszerzone ustawienia domyślne żądania LDAP
- Konfiguracja TCP Sampler
- Zmienne zdefiniowane przez użytkownika
- Prosty element konfiguracji
- Zmienna losowa
Elementy preprocesora
Element preprocesora to coś, co działa tuż przed wykonaniem samplera. Często są używane do modyfikowania ustawień żądania próbki tuż przed jego uruchomieniem lub do aktualizowania zmiennych, które nie są wyodrębniane z tekstu odpowiedzi.
Poniższa lista zawiera wszystkie elementy preprocesora, które zapewnia JMeter -
- Parser linków HTML
- Modyfikator ponownego zapisu adresu URL HTTP
- Modyfikator parametrów użytkownika HTTP
- Parametry użytkownika
- JDBC PreProcessor
- JSR223 PreProcessor
- Parametry użytkownika wyrażenia regularnego
- BeanShell PreProcessor
- BSF PreProcessor
Elementy postprocesora
Postprocesor jest wykonywany po zakończeniu wykonywania próbnika. Ten element jest najczęściej używany do przetwarzania danych odpowiedzi, na przykład w celu pobrania określonej wartości do późniejszego wykorzystania.
Poniższa lista zawiera wszystkie postprocesorowe elementy JMeter zapewniające -
- Ekstraktor wyrażeń regularnych
- Ekstraktor XPath
- Stan wyniku Procedura obsługi działania
- PostProcesor JSR223
- JDBC PostProcessor
- BSF PostProcessor
- Ekstraktor CSS / JQuery
- BeanShell PostProcessor
- Debuguj PostProcessor
Kolejność wykonywania elementów testowych
Poniżej znajduje się kolejność wykonywania elementów planu testów -
- Elementy konfiguracji
- Pre-Processors
- Timers
- Sampler
- Postprocesory (chyba że SampleResult ma wartość null)
- Asercje (chyba że SampleResult ma wartość null)
- Listeners (chyba że SampleResult ma wartość null)
Zbudujmy prosty plan testów, który testuje stronę internetową. Piszemy plan testów w Apache JMeter, abyśmy mogli przetestować działanie strony internetowej wyświetlanej pod adresem URL - www.tutorialspoint.com .
Uruchom JMeter
Otwórz okno JMeter, klikając /home/manisha/apache-jmeter-2.9/bin/jmeter.sh. Pojawi się okno JMeter, jak poniżej -
Zmień nazwę planu testów
Zmień nazwę węzła planu testów na Przykładowy test w polu tekstowym Nazwa . Musisz zmienić fokus na węzeł Środowisko pracy iz powrotem na węzeł Test Plan, aby zobaczyć odzwierciedlenie nazwy.
Dodaj grupę wątków
Teraz dodajemy nasz pierwszy element w oknie. Dodajemy jedną grupę wątków, która jest symbolem zastępczym dla wszystkich innych elementów, takich jak Samplers, Controllers i Listeners. Potrzebujemy jednego, abyśmy mogli skonfigurować liczbę użytkowników do symulacji.
W JMeter wszystkie elementy węzłów są dodawane za pomocą menu kontekstowego.
Kliknij prawym przyciskiem myszy element, do którego chcesz dodać węzeł elementu potomnego.
Wybierz odpowiednią opcję do dodania.
Kliknij prawym przyciskiem myszy przykładowy test (nasz plan testów) → Dodaj → Wątki (użytkownicy) → Grupa wątków. W ten sposób grupa wątków zostanie dodana w węźle Plan testów (test przykładowy).
Nazwij grupę wątków jako Użytkownicy . Dla nas ten element oznacza użytkowników odwiedzających stronę główną TutorialsPoint.
Dodaj sampler
Musimy dodać jeden sampler do naszej grupy wątków (użytkownicy). Tak jak to zrobiono wcześniej przy dodawaniu grupy wątków, tym razem otworzymy menu kontekstowe węzła Thread Group (Users) klikając prawym przyciskiem myszy i dodamy HTTP Request Sampler, wybierając opcję Add → Sampler → HTTP request.
Doda jeden pusty próbnik żądań HTTP pod węzłem Thread Group (Users). Skonfigurujmy ten element węzła -
Name- Zmienimy nazwę, aby odzwierciedlić działanie, które chcemy osiągnąć. Nazwiemy to jakoVisit TutorialsPoint Home Page
Server Name or IP- Tutaj musimy wpisać nazwę serwera WWW. W naszym przypadku tak jestwww.tutorialspoint.com. (http: // część nie jest zapisana to jest tylko nazwa serwera lub jego IP)
Protocol - Zostawimy to pole puste, co oznacza, że chcemy HTTP jako protokołu.
Path- Wpisujemy ścieżkę jako / (ukośnik). Oznacza to, że chcemy mieć stronę główną serwera.
Dodaj odbiorcę
Dodamy teraz słuchacza. Dodajmy odbiornik drzewa widoku wyników pod węzłem Grupa wątków (użytkownik). Zapewni to, że wyniki próbnika będą dostępne do wyświetlenia w tym elemencie węzła Listener.
Aby dodać słuchacza -
Otwórz menu kontekstowe
Kliknij prawym przyciskiem myszy grupę wątków (użytkownicy)
Wybierz opcję Dodaj → Listener → Wyświetl drzewo wyników
Uruchom plan testów
Teraz, po całej konfiguracji, wykonajmy plan testów. Przy konfiguracji grupy wątków (użytkowników) zachowujemy wszystkie wartości domyślne. Oznacza to, że JMeter wykona sampler tylko raz. Jest podobny do pojedynczego użytkownika, tylko raz.
Jest to podobne do użytkownika odwiedzającego stronę internetową przez przeglądarkę, z próbnikiem JMeter. Aby wykonać plan testów, wybierz Uruchom z menu i wybierz opcję Start.
Apache JMeter prosi nas o zapisanie planu testów w pliku dyskowym przed faktycznym rozpoczęciem testu. Jest to ważne, jeśli chcesz wielokrotnie uruchamiać plan testów. Możesz zdecydować się na uruchomienie go bez oszczędzania.
Wyświetl dane wyjściowe
Zachowaliśmy ustawienie grupy wątków jako pojedynczy wątek (tylko jeden użytkownik) i pętlę na 1 raz (uruchamiamy tylko jeden raz), stąd wynik jednej pojedynczej transakcji otrzymamy w Odbiorniku drzewa wyników widoku.
Szczegóły powyższego wyniku to -
Zielony kolor na tle nazwy Odwiedź stronę główną TutorialsPoint oznacza sukces.
JMeter przechował wszystkie nagłówki i odpowiedzi przesłane przez serwer sieciowy i jest gotowy do pokazania nam wyniku na wiele sposobów.
Pierwsza zakładka to Wyniki próbnika. Pokazuje dane JMeter, a także dane zwrócone przez serwer WWW.
Druga zakładka to Żądanie, która pokazuje wszystkie dane przesłane do serwera WWW w ramach żądania.
Ostatnia zakładka to Dane odpowiedzi. W tej zakładce odbiornik pokazuje dane odebrane z serwera w formacie tekstowym.
To tylko prosty plan testów, który wykonuje tylko jedno żądanie. Ale prawdziwą siłą JMeter jest wysyłanie tego samego żądania, tak jakby wysyłało je wielu użytkowników. Aby przetestować serwery internetowe z wieloma użytkownikami, musimy zmienić ustawienia grupy wątków (Użytkownicy).
W tym rozdziale zobaczymy, jak stworzyć prosty plan testów w celu przetestowania serwera bazy danych. Do naszych celów testowych używamy serwera bazy danych MYSQL. Do testowania możesz użyć dowolnej innej bazy danych. Informacje na temat instalacji i tworzenia tabel w MYSQL można znaleźć w samouczku MYSQL .
Po zainstalowaniu MYSQL wykonaj poniższe czynności, aby skonfigurować bazę danych -
Utwórz bazę danych o nazwie „tutorial”.
Utwórz tabelę tutorials_tbl .
Wstaw rekordy do tutorials_tbl, jak pokazano poniżej -
mysql> use TUTORIALS;
Database changed
mysql> INSERT INTO tutorials_tbl
->(tutorial_title, tutorial_author, submission_date)
->VALUES
->("Learn PHP", "John Poul", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
->(tutorial_title, tutorial_author, submission_date)
->VALUES
->("Learn MySQL", "Abdul S", NOW());
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
->(tutorial_title, tutorial_author, submission_date)
->VALUES
->("JAVA Tutorial", "Sanjay", '2007-05-06');
Query OK, 1 row affected (0.01 sec)
mysql>
Skopiuj odpowiedni sterownik JDBC do /home/manisha/apache-jmeter-2.9/lib.
Utwórz plan testów JMeter
Zacznijmy od JMeter /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.
Dodaj użytkowników
Aby utworzyć grupę wątków,
Kliknij prawym przyciskiem myszy Plan testów.
Wybierz Dodaj → Wątki (użytkownicy) → Grupa wątków.
W ten sposób grupa wątków zostanie dodana w węźle Plan testów.
Zmień nazwę tej grupy wątków na Użytkownicy JDBC .
Nie zmienimy domyślnych właściwości grupy wątków.
Dodawanie żądań JDBC
Teraz, gdy zdefiniowaliśmy naszych użytkowników, przyszedł czas na zdefiniowanie zadań, które będą wykonywać. W tej sekcji określ żądania JDBC do wykonania.
Kliknij prawym przyciskiem myszy element Użytkownicy JDBC.
Wybierz Add → Config Element → JDBC Connection Configuration.
Skonfiguruj następujące pola (używamy bazy danych MySQL o nazwie tutorial) -
Nazwa zmiennej powiązanej z pulą. To musi jednoznacznie zidentyfikować konfigurację. Jest używany przez JDBC Sampler do identyfikacji konfiguracji, która ma zostać użyta. Nazwaliśmy to testem .
Adres URL bazy danych - jdbc: mysql: // localhost: 3306 / tutorial.
Klasa sterownika JDBC: com.mysql.jdbc.Driver.
Nazwa użytkownika: root.
Hasło: hasło użytkownika root.
Pozostałe pola na ekranie są pozostawione jako domyślne, jak pokazano poniżej -
Teraz dodaj żądanie JDBC, które odwołuje się do puli konfiguracji JDBC zdefiniowanej powyżej. Wybierz element Użytkownicy JDBC.
Kliknij prawym przyciskiem myszy, aby wyświetlić menu Dodaj
Wybierz Add → Sampler → JDBC Request.
Wybierz ten nowy element, aby wyświetlić jego Panel sterowania.
Edytuj właściwości, jak pokazano poniżej -
Nazwa zmiennej powiązanej z pulą. To musi jednoznacznie zidentyfikować konfigurację. Jest używany przez JDBC Sampler do identyfikacji konfiguracji, która ma zostać użyta. Nazwał to testem .
Imię - Dowiedz się.
Wpisz nazwę puli - test (tak samo jak w elemencie konfiguracyjnym).
Typ zapytania - wybierz instrukcję.
Wprowadź pole Ciąg zapytania SQL.
Utwórz odbiornik
Teraz dodaj element Listener. Ten element jest odpowiedzialny za przechowywanie wszystkich wyników żądań JDBC w pliku i prezentację wizualnego modelu danych.
Wybierz element Użytkownicy JDBC
Dodaj odbiornik widoku drzewa wyników (Add → Listener → View Results Tree).
Zapisz i wykonaj plan testów
Teraz zapisz powyższy plan testu jako db_test.jmx . Wykonaj ten plan testów za pomocąRun → Start opcja.
Sprawdź dane wyjściowe
Na ostatnim obrazie widać, że wybrano dwa rekordy.
W tym rozdziale zobaczymy, jak przetestować witrynę FTP za pomocą narzędzia JMeter. Stwórzmy plan testów, aby przetestować witrynę FTP.
Zmień nazwę planu testów
Otwórz okno JMeter, klikając /home/manisha/apache-jmeter-2.9/bin/jmeter.sh
Kliknij węzeł Test Plan.
Zmień nazwę tego węzła planu testów na TestFTPSite.
Dodaj grupę wątków
Dodaj jedną grupę wątków, która jest symbolem zastępczym dla wszystkich innych elementów, takich jak Samplers, Controllers i Listeners.
Kliknij prawym przyciskiem myszy TestFTPSite (nasz plan testów)
Wybierz Dodaj → Wątki (użytkownicy) → Grupa wątków. Grupa wątków zostanie dodana w węźle Plan testów (TestFTPSite).
Zmodyfikuj domyślne właściwości grupy wątków, aby odpowiadały naszym testom w następujący sposób -
Name - Użytkownicy FTP
Number of Threads (Users) - 4
Ramp-Up Period - pozostaw domyślną wartość 0 sekund.
Loop Count - 1
Dodaj próbnik - żądanie FTP
Teraz, gdy zdefiniowaliśmy naszych użytkowników, nadszedł czas na zdefiniowanie zadań, które będą wykonywać. Dodaj elementy żądania FTP. Dodajemy dwa elementy żądania FTP, jeden, który pobiera plik, a drugi umieszcza plik na stronie ftp.
Wybierz element użytkowników FTP.
Kliknij prawym przyciskiem myszy, aby wyświetlić menu Dodaj
Wybierz Dodaj → Sampler → Żądanie FTP.
Wybierz element żądania FTP w drzewie.
Edytuj następujące właściwości, jak pokazano poniżej -
W tym elemencie wprowadzane są następujące szczegóły -
Name - Pobieranie żądania FTP
Server Name or IP - 184.168.74.29
Remote File - /home/manisha/sample_ftp.txt
Local File - sample_ftp.txt
Wybierz pobierz (RETR)
Username - manisha
Password - manisha123
Teraz dodaj kolejne żądanie FTP, jak powyżej i edytuj właściwości, jak pokazano na poniższym zrzucie ekranu -
W tym elemencie wprowadzane są następujące szczegóły -
Name - Wysyłanie żądania FTP
Server Name or IP - 184.168.74.29
Remote File - /home/manisha/examplefile.txt
Local File - /home/manisha/work/examplefile.txt
Wybierz put (STOR)
Username - manisha
Password - manisha123
Dodaj odbiorcę
Ostatnim elementem, który musisz dodać do swojego planu testów, jest Listener. Ten element jest odpowiedzialny za przechowywanie wszystkich wyników twoich żądań FTP w pliku i prezentację wizualnego modelu danych.
Wybierz element użytkowników FTP.
Dodaj odbiornik widoku drzewa wyników, wybierając Dodaj> Odbiornik> Wyświetl drzewo wyników.
Uruchom plan testów
Teraz zapisz powyższy plan testów jako ftpsite_test.jmx . Wykonaj ten plan testów za pomocąRun → Start opcja.
Wyświetl dane wyjściowe
Następujące dane wyjściowe można zobaczyć w odbiorniku.
Możesz zobaczyć, że dla każdego żądania FTP są wysyłane cztery żądania i test się powiódł. Pobrany plik dla żądania GET jest przechowywany w folderze / bin. W naszym przypadku tak jest/home/manisha/apache-jmeter-2.9/bin/. W przypadku żądania PUT plik jest przesyłany pod ścieżką/home/manisha/.
W tym rozdziale dowiemy się, jak utworzyć plan testów, aby przetestować usługę sieciową. Do naszych celów testowych stworzyliśmy prosty projekt usługi sieciowej i wdrożyliśmy go lokalnie na serwerze Tomcat.
Utwórz projekt usługi internetowej
Do stworzenia projektu webservice użyliśmy Eclipse IDE. Najpierw napisz interfejs punktu końcowego usługiHelloWorld pod pakietem com.tutorialspoint.ws. Zawartość HelloWorld.java jest następująca -
package com.tutorialspoint.ws;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)
public interface HelloWorld {
@WebMethod String getHelloWorldMessage(String string);
}
Ta usługa ma metodę getHelloWorldMessage który przyjmuje parametr typu String.
Następnie utwórz klasę implementacji HelloWorldImpl.java pod pakietem com.tutorialspoint.ws.
package com.tutorialspoint.ws;
import javax.jws.WebService;
@WebService(endpointInterface="com.tutorialspoint.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
@Override
public String getHelloWorldMessage(String myName) {
return("Hello "+myName+" to JAX WS world");
}
}
Opublikujmy teraz tę usługę sieciową lokalnie, tworząc wydawcę punktu końcowego i udostępniając usługę na serwerze.
Metoda publikowania przyjmuje dwa parametry -
Ciąg adresu URL punktu końcowego.
Implementor, w tym przypadku klasa implementacji HelloWorld, która jest udostępniana jako usługa sieci Web w punkcie końcowym identyfikowanym przez adres URL wymieniony w powyższym parametrze.
Zawartość HelloWorldPublisher.java jest następująca -
package com.tutorialspoint.endpoint;
import javax.xml.ws.Endpoint;
import com.tutorialspoint.ws.HelloWorldImpl;
public class HelloWorldPublisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9000/ws/hello", new HelloWorldImpl());
}
}
Zmodyfikuj zawartość web.xml, jak pokazano poniżej -
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>120</session-timeout>
</session-config>
</web-app>
Aby wdrożyć tę aplikację jako usługę sieciową, potrzebowalibyśmy innego pliku konfiguracyjnego sun-jaxws.xml. Zawartość tego pliku jest następująca -
<?xml version = "1.0" encoding = "UTF-8"?>
<endpoints
xmlns = "http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version = "2.0">
<endpoint name = "HelloWorld"
implementation = "com.tutorialspoint.ws.HelloWorldImpl"
url-pattern = "/hello"/>
</endpoints>
Teraz, gdy wszystkie pliki są gotowe, struktura katalogów wyglądałaby tak, jak pokazano na poniższym zrzucie ekranu -
Teraz utwórz plik WAR tej aplikacji.
Wybierz projekt → kliknij prawym przyciskiem myszy → Eksportuj → plik WAR.
Zapisz to jako hello.war plik pod webapps folder serwera Tomcat.
Teraz uruchom serwer Tomcat.
Po uruchomieniu serwera powinieneś mieć dostęp do usługi sieciowej za pomocą adresu URL - http: // localhost: 8080 / hello / hello
Utwórz plan testów JMeter
Teraz stwórzmy plan testów, aby przetestować powyższą usługę sieciową.
Zmień nazwę planu testów
Otwórz okno JMeter, klikając /home/manisha/apache-jmeter2.9/bin/jmeter.sh.
Kliknij węzeł Test Plan.
Zmień nazwę tego węzła planu testów na WebserviceTest.
Dodaj grupę wątków
Dodaj jedną grupę wątków, która jest symbolem zastępczym dla wszystkich innych elementów, takich jak Samplers, Controllers i Listeners.
Kliknij prawym przyciskiem myszy na WebserviceTest (nasz plan testów) → Dodaj → Wątki (Użytkownicy) → Grupa wątków. Grupa wątków zostanie dodana w węźle Plan testów (WebserviceTest).
Następnie zmodyfikujmy domyślne właściwości grupy wątków, aby pasowały do naszych testów. Następujące właściwości są zmieniane -
Name - użytkownik serwisu internetowego
Number of Threads (Users) - 2
Ramp-Up Period - pozostaw domyślną wartość 0 sekund.
Loop Count - 2
Dodaj próbnik - żądanie SOAP / XML-RPC
Teraz, gdy zdefiniowaliśmy użytkowników, nadszedł czas na zdefiniowanie zadań, które będą wykonywać.
Dodamy element żądania SOAP / XML-RPC -
Kliknij prawym przyciskiem myszy, aby wyświetlić menu Dodaj.
Wybierz Dodaj → Sampler → Żądanie SOAP / XML-RPC.
Wybierz element żądania SOAP / XML-RPC w drzewie
Edytuj następujące właściwości, jak na poniższym obrazku -
W tym elemencie wprowadzane są następujące szczegóły -
Name − SOAP/XML-RPC Request
URL - http: // localhost: 8080 / hello / hello? Wsdl
Soap/XML-RPC Data - Wprowadź poniższą zawartość
<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web = "http://ws.tutorialspoint.com/">
<soapenv:Header/>
<soapenv:Body>
<web:getHelloWorldMessage>
<arg0>Manisha</arg0>
</web:getHelloWorldMessage>
</soapenv:Body>
</soapenv:Envelope>
Dodaj odbiorcę
Ostatnim elementem, który musisz dodać do swojego planu testów, jest Listener. Ten element jest odpowiedzialny za przechowywanie wszystkich wyników twoich żądań HTTP w pliku i prezentację wizualnego modelu danych.
Wybierz element użytkownika usługi sieciowej.
Dodaj odbiornik widoku drzewa wyników, wybierając Dodaj → Listener → Wyświetl drzewo wyników.
Uruchom plan testów
Teraz zapisz powyższy plan testów jako test_webservice.jmx . Wykonaj ten plan testu za pomocą opcji Uruchom → Start.
Wyświetl dane wyjściowe
Następujące dane wyjściowe można zobaczyć w odbiorniku.
Na ostatnim obrazie możesz zobaczyć wiadomość odpowiedzi „Hello Manisha to JAX WS world”.
W tym rozdziale nauczymy się, jak napisać prosty plan testów, aby przetestować usługę Java Messaging Service (JMS). JMS obsługuje dwa typy wiadomości -
Point-to-Point messaging- Komunikaty kolejki są zwykle używane do transakcji, w których nadawca oczekuje odpowiedzi. Systemy przesyłania wiadomości różnią się znacznie od zwykłych żądań HTTP. W HTTP pojedynczy użytkownik wysyła żądanie i otrzymuje odpowiedź.
Topic messaging- Wiadomości tematyczne są powszechnie znane jako wiadomości publikowane / subskrybowane. Wiadomości tematyczne są zwykle używane w przypadkach, gdy wiadomość jest publikowana przez producenta i używana przez wielu subskrybentów.
Zobaczmy przykład testowy dla każdego z nich. Wymagania wstępne do testowania JMS to -
W przykładzie używamy Apache ActiveMQ. Istnieją różne serwery JMS, takie jak IBM WebSphere MQ (dawniej MQSeries), Tibco itp. Pobierz je z plików binarnych z serwisu WWW Apache ActiveMQ.
Rozpakuj archiwum, przejdź do rozpakowanego katalogu i uruchom następujące polecenie z konsoli poleceń, aby uruchomić serwer ActiveMQ -
.\bin\activemq start
Możesz sprawdzić, czy serwer ActiveMQ został uruchomiony, odwiedzając interfejs administratora pod następującym adresem http://localhost:8161/admin/. Jeśli poprosi o uwierzytelnienie, wprowadź identyfikator użytkownika i hasło jako admin . Ekran jest podobny do pokazanego poniżej -
Teraz skopiuj activemq-all-xxxjar (XXX w zależności od wersji) z rozpakowanego katalogu ActiveMQ do /home/manisha/apache-jmeter-2.9/lib.
Przy powyższej konfiguracji zbudujmy plan testów dla -
Plan testów punkt-punkt JMS
Plan testów tematycznych JMS
W tym rozdziale omówimy sposób tworzenia planu testów przy użyciu narzędzia JMeter do monitorowania serwerów WWW. Zastosowania testów monitora są następujące:
Monitory są przydatne do testów warunków skrajnych i zarządzania systemem.
W przypadku testów warunków skrajnych monitor dostarcza dodatkowych informacji o wydajności serwera.
Monitory ułatwiają dostrzeżenie związku między wydajnością serwera a czasem odpowiedzi po stronie klienta.
Monitor jako narzędzie do administrowania systemem zapewnia łatwy sposób monitorowania wielu serwerów z jednej konsoli.
Do monitorowania potrzebujemy Tomcat 5 lub nowszego. W celach testowych będziemy monitorować serwer Tomcat 7.0.42. Możesz przetestować dowolny kontener serwletów, który obsługuje rozszerzenie Java Management Extension (JMX). Napiszmy przypadek testowy do monitorowania serwera Tomcat. Najpierw skonfigurujmy nasz serwer tomcat.
Skonfiguruj serwer Tomcat
Rozpoczynamy od otwarcia statusu usługi Tomcat. Aby to zrobić, edytuj plik konfiguracyjny dla użytkowników,<TOMCAT_HOME>/conf/tomcat-users.xml. Ten plik zawiera sekcję tomcat-users (skomentowaną), jak pokazano -
<tomcat-users>
<!--
<role rolename = "tomcat"/>
<role rolename = "role1"/>
<user username = "tomcat" password = "tomcat" roles = "tomcat"/>
<user username = "both" password = "tomcat" roles = "tomcat,role1"/>
<user username = "role1" password = "tomcat" roles = "role1"/>
-->
</tomcat-users>
Musimy zmienić tę sekcję, aby dodać role administratora, menedżera, menedżera-gui i przypisać użytkownikowi „admin”. Poprawiony plik jest następujący -
<tomcat-users>
<role rolename = "manager-gui"/>
<role rolename = "manager-script"/>
<role rolename = "manager-jmx"/>
<role rolename = "manager-status"/>
<user username = "admin" password = "admin" roles = "manager-gui,manager-script,manager-jmx,manager-status"/>
</tomcat-users>
Teraz uruchom serwer tomcat <TOMCAT_HOME> /bin/startup.sh dla systemu Linux i <TOMCAT_HOME> /bin/startup.bat dla systemu Windows. Po uruchomieniu sprawdź, czy nadzór Tomcat działa, wprowadzając następujący link w przeglądarce -
http://localhost:8080/manager/status?XML=true
W przeglądarce pojawi się okno uwierzytelniania. Wpisz login i hasło Tomcat (w naszym przypadku jest to admin). Następnie przeglądarka wyświetli stan wykonania Tomcata, jak poniżej -
Na powyższym zrzucie ekranu możemy zauważyć kilka rzeczy -
W adresie URL zwróć uwagę, że XML = true (zwróć uwagę na wielkość liter) umożliwia przejrzyste wyświetlanie nadzorującego Tomcata niezbędnego do działania narzędzia JMeter.
Należy również pamiętać, że są domyślnie dwa złącza. Złącze AJP używane ogólnie w połączeniu z modułem przednim mod_jk Apache HTTPD i złączem HTTP, które jest powszechnie używanym złączem do bezpośredniego dostępu do Tomcata przez port 8080.
Napisz plan testów JMeter
Pozwól nam monitorować serwer Tomcat, pisząc plan testów -
Zmień nazwę planu testów
Otwórz okno JMeter, klikając /home/manisha/apache-jmeter2.9/bin/jmeter.sh.
Kliknij węzeł Test Plan.
Dodaj grupę wątków, jak wyjaśniono w następnym kroku.
Dodaj grupę wątków
Kliknij prawym przyciskiem myszy Test Plan → Add → Threads(Users) → Thread Group. Grupa wątków zostanie dodana w węźle Plan testów.
Zmień liczbę pętli na wieczną (lub pewną dużą liczbę), aby wygenerować wystarczającą liczbę próbek.
Menedżer autoryzacji HTTP
Dodaj Menedżera autoryzacji HTTP do elementu Grupy wątków, wybierając Dodaj → Element konfiguracyjny → Menedżer autoryzacji HTTP. Ten element zarządza uwierzytelnianiem żądanym przez przeglądarkę w celu sprawdzenia stanu serwera Tomcat.
Wybierz Menedżera autoryzacji HTTP.
Edytuj następujące szczegóły -
Username - admin (w zależności od konfiguracji w pliku tomcat-users.xml)
Password - admin (w zależności od konfiguracji w pliku tomcatusers.xml)
Pozostałe pola są puste.
Dodaj żądanie Sampler-HTTP
Teraz, gdy zdefiniowaliśmy naszych użytkowników, nadszedł czas na zdefiniowanie zadań, które będą wykonywać. Dodajemy element HTTP Request.
Kliknij prawym przyciskiem myszy, aby wyświetlić menu Dodaj.
Wybierz Dodaj → Sampler → Żądanie HTTP.
Następnie wybierz element HTTP Request w drzewie.
Edytuj następujące właściwości, jak na poniższym obrazku -
W tym elemencie wprowadzane są następujące szczegóły -
Name - Stan serwera
Server Name or IP - localhost
Port - 8080
Path - / menedżer / status
Parameters- Dodaj parametr żądania o nazwie „XML” zapisany wielkimi literami. Podaj wartość „prawda” małymi literami.
Optional Tasks - Zaznacz „Użyj jako monitora” na dole próbnika.
Dodaj stały zegar
Aby okresowo żądać statusu serwera, dodaj stały zegar, który pozwoli na odstęp czasu między każdym żądaniem. Dodaj licznik czasu do tej grupy wątków, wybierając Dodaj → Czasomierz → Stały licznik czasu.
Wprowadź 5000 milisekund w polu Opóźnienie wątku . Ogólnie rzecz biorąc, używanie interwałów krótszych niż 5 sekund może zwiększyć stres serwera. Dowiedz się, jaki jest dopuszczalny odstęp czasu przed wdrożeniem monitora w środowisku produkcyjnym.
Dodaj odbiorcę
Ostatnim elementem, który musisz dodać do swojego planu testów, jest Listener. Dodajemy dwa rodzaje słuchaczy. Jeden, który przechowuje wyniki w pliku, a drugi, który przedstawia graficzny widok wyników.
Wybierz element grupy gwintów.
Dodaj odbiornik prostego modułu zapisującego dane Dodaj → Listener → Prosty moduł zapisujący dane.
Określ katalog i nazwę pliku wyjściowego (w naszym przypadku jest to /home/manisha/work/sample.csv)
Dodajmy kolejnego słuchacza, wybierając element planu testów Dodaj → Listener → Monitoruj wyniki.
Uruchom plan testów
Teraz zapisz powyższy plan testów jako monitor_test.jmx . Wykonaj ten plan testu za pomocą opcji Uruchom → Start.
Wyświetl dane wyjściowe
Wyniki zostaną zapisane w pliku /home/manisha/work/sample.csv. Możesz również zobaczyć wynik graficzny w odbiorniku wyników monitorowania, jak na poniższym obrazku.
Zauważ, że wykres ma podpisy po obu stronach wykresu. Po lewej stronie jest procent, a po prawej jest martwy / zdrowy. Jeśli linia pamięci gwałtownie rośnie i maleje, może to oznaczać problemy z pamięcią. W takich sytuacjach dobrym pomysłem jest profilowanie aplikacji za pomocą Borland OptimizeIt lub JProbe. To, co chcesz zobaczyć, to regularny wzorzec ładowania, pamięci i wątków. Każde błędne zachowanie zwykle wskazuje na słabą wydajność lub jakiś błąd.
Elementy nasłuchujące zapewniają dostęp do informacji gromadzonych przez JMeter na temat przypadków testowych podczas działania JMeter. Wyniki lub informacje zebrane przez słuchaczy można przedstawić w postaci -
- tree
- tables
- graphs
- plik dziennika
Wszyscy nasłuchujący zapisują te same nieprzetworzone dane do pliku wyjściowego, jeśli taki jest określony.
Konfiguracja domyślna
Domyślne elementy do zapisania można zdefiniować na jeden z następujących dwóch sposobów -
w jmeter.properties(lub user.properties). Ten plik jest obecny w/bin Aby zmienić domyślny format, znajdź następującą linię w jmeter.properties -
jmeter.save.saveservice.output_format=
Korzystając z wyskakującego okienka konfiguracji, jak pokazano na poniższym zrzucie ekranu -
JMeter tworzy wyniki testu w postaci dzienników tekstowych JMeter (JTL). Są one zwykle nazywane plikami JTL, ponieważ jest to rozszerzenie domyślne - ale można użyć dowolnego rozszerzenia.
Jeśli wiele testów jest uruchamianych przy użyciu tej samej nazwy pliku wyjściowego, narzędzie JMeter automatycznie dołącza nowe dane na końcu pliku.
Odbiornik może zapisywać wyniki do pliku, ale nie do interfejsu użytkownika. Ma na celu zapewnienie wydajnego sposobu rejestrowania danych poprzez wyeliminowanie narzutu GUI.
Podczas wjazdu -
GUI mode - użyj listenera Simple Data Writer
non-GUI mode - flagi -l można użyć do utworzenia pliku danych.
Słuchacze mogą używać dużo pamięci, jeśli jest dużo próbek. Aby zminimalizować ilość potrzebnej pamięci, użyj prostego zapisu danych w formacie CSV.
Format dziennika CSV
Format dziennika CSV zależy od tego, które elementy danych zostały wybrane w konfiguracji. W pliku zapisywane są tylko określone pozycje danych. Kolejność pojawiania się kolumn jest stała i wygląda następująco:
Pole | Opis | Przykład wartości |
---|---|---|
znak czasu | w milisekundach od 01.01.1970 | 1354223881017 |
upłynął | w milisekundach | 1858 |
etykieta | etykieta próbnika | Żądanie HTTP |
responseCode | np. 200, 404 | 200 |
responseMessage | np. OK | dobrze |
ThreadName | Grupa wątków 1-1 | |
typ danych | np. tekst | tekst |
powodzenie | prawda czy fałsz | prawdziwe |
failureMessage | Jeśli w ogóle | |
bajtów | liczba bajtów w próbce | 34908 |
grpThreads | liczba aktywnych wątków w tej grupie wątków | 1 |
wszystkie wątki | łączna liczba aktywnych wątków we wszystkich grupach | 1 |
URL | http://tutorialspoint.com | |
Nazwa pliku | jeśli użyto opcji Zapisz odpowiedź do pliku | |
czas oczekiwania | czas na pierwszą odpowiedź | 132 |
kodowanie | utf-8 | |
SampleCount | liczba próbek (1, chyba że wiele próbek jest połączonych) | 1 |
ErrorCount | liczba błędów (0 lub 1, chyba że zagregowano wiele próbek) | 0 |
Nazwa hosta | gdzie próbka została wygenerowana | LaptopManisha |
Czas bezczynności | liczba milisekund czasu bezczynności (zwykle 0) | |
Zmienne | jeśli określono |
Zapisywanie danych odpowiedzi
W razie potrzeby dane odpowiedzi można zapisać w pliku dziennika XML. Jednak nie pozwala na zapisywanie dużych plików i obrazów. W takich przypadkach użyj Post-Processor Save_Responses_to_a_file. Spowoduje to wygenerowanie nowego pliku dla każdej próbki i zapisanie nazwy pliku z próbką. Nazwę pliku można następnie uwzględnić w danych wyjściowych przykładowego dziennika. Dane zostaną w razie potrzeby pobrane z pliku po ponownym załadowaniu przykładowego pliku dziennika.
Ładowanie (odczytywanie) danych odpowiedzi
Aby wyświetlić istniejący plik wyników, możesz użyć przycisku „Przeglądaj ...”, aby wybrać plik. Jeśli to konieczne, po prostu utwórz fałszywy plan testowy z odpowiednim odbiornikiem.
Zapisywanie danych GUI słuchacza
JMeter jest w stanie zapisać dowolny odbiornik jako plik PNG. Aby to zrobić,
Wybierz odbiornik w lewym panelu, wybierając Edytuj → Zapisz jako obraz. Pojawi się okno dialogowe pliku.
Wprowadź żądaną nazwę.
Zapisz słuchacza.
Funkcje JMeter i zmienne użytkownika
Funkcje JMeter to specjalne wartości, które mogą wypełniać pola dowolnego Samplera lub innego elementu w drzewie testowym.
Wywołanie funkcji wygląda następująco -
${__functionName(var1,var2,var3)}
_functionName odpowiada nazwie funkcji. Na przykład${__threadNum}.
Jeśli parametr funkcji zawiera przecinek, upewnij się, że został on zastąpiony znakiem „\”, jak pokazano poniżej -
${__time(EEE\, d MMM yyyy)}
Zmienne są określane jako -
${VARIABLE}
Lista funkcji
Poniższa tabela zawiera listę funkcji luźno pogrupowanych w typy -
Typ funkcji | Nazwa | Komentarz |
---|---|---|
Informacja | ThreadNum | Uzyskaj numer wątku. |
Informacja | samplerName | Uzyskaj nazwę próbnika (etykietę). |
Informacja | machineIP | Uzyskaj adres IP komputera lokalnego. |
Informacja | machineName | Uzyskaj nazwę komputera lokalnego. |
Informacja | czas | Pokaż aktualny czas w różnych formatach. |
Informacja | log | Zapisz (lub wyświetl) komunikat (i zwróć wartość). |
Informacja | logn | Zapisz (lub wyświetl) komunikat (pusta wartość zwracana). |
Wejście | StringFromFile | Przeczytaj wiersz z pliku. |
Wejście | FileToString | Przeczytaj cały plik. |
Wejście | CSVRead | Odczyt z pliku rozdzielanego CSV. |
Wejście | XPath | Użyj wyrażenia XPath, aby odczytać z pliku. |
Obliczenie | licznik | Wygeneruj rosnącą liczbę. |
Obliczenie | intSum | Dodaj numery wewnętrzne. |
Obliczenie | longSum | Dodaj długie liczby. |
Obliczenie | Losowy | Wygeneruj liczbę losową. |
Obliczenie | RandomString | Wygeneruj losowy ciąg. |
Obliczenie | UUID | Wygeneruj losowy UUID typu 4. |
Skrypty | BeanShell | Uruchom skrypt BeanShell. |
Skrypty | javaScript | Przetwarzaj JavaScript (Mozilla Rhino). |
Skrypty | jexl, jexl2 | Oceń wyrażenie Commons Jexl. |
Nieruchomości | własność | Przeczytaj nieruchomość. |
Nieruchomości | P. | Przeczytaj właściwość (metoda skrócona). |
Nieruchomości | setProperty | Ustaw właściwość JMeter. |
Zmienne | rozdzielać | Podziel ciąg na zmienne. |
Zmienne | V | Oceń nazwę zmiennej. |
Zmienne | eval | Oceń wyrażenie zmiennej. |
Zmienne | evalVar | Oceń wyrażenie przechowywane w zmiennej. |
Strunowy | regexFunction | Przeanalizuj poprzednią odpowiedź przy użyciu wyrażenia regularnego. |
Strunowy | escapeOroRegexpChars | Cytuj metaznaki używane przez wyrażenie regularne ORO. |
Strunowy | zwęglać | Generuj wartości znaków Unicode z listy liczb. |
Strunowy | unescape | Przetwarzaj ciągi znaków zawierające znaki ucieczki Java (np. \ N & \ t). |
Strunowy | unescapeHtml | Dekoduj ciągi zakodowane w formacie HTML. |
Strunowy | escapeHtml | Zakoduj ciągi przy użyciu kodowania HTML. |
Strunowy | TestPlanName | Zwróć nazwę bieżącego planu testów. |
Istnieją dwa rodzaje funkcji -
Wartości statyczne (lub zmienne) zdefiniowane przez użytkownika
Wbudowane funkcje
Zdefiniowane przez użytkownika wartości statyczne pozwalają użytkownikowi zdefiniować zmienne, które mają zostać zastąpione ich wartością statyczną, gdy drzewo testów jest kompilowane i przesyłane do uruchomienia.
Zmienne nie mogą być zagnieżdżane; to znaczy${Var${N}} nie działa.
Można do tego użyć funkcji __V (zmienna) (wersje po 2.2) - $ {__ V (Var $ {N})}.
Ten rodzaj wymiany jest możliwy bez funkcji, ale jest mniej wygodny i mniej intuicyjny.
Gdzie używać funkcji i zmiennych
Funkcje i zmienne można zapisać w dowolnym polu dowolnego składnika testowego.
Następujące funkcje powinny dobrze działać w planie testów -
- intSum
- longSum
- machineName
- BeanShell
- javaScript
- jexl
- random
- time
- funkcje właściwości
- funkcje dziennika
Funkcje używane w Planie testów mają pewne ograniczenia. Zmienne wątku JMeter nie zostaną w pełni skonfigurowane podczas przetwarzania funkcji, więc nazwy zmiennych przekazane jako parametry nie zostaną skonfigurowane, a odwołania do zmiennych nie będą działać. Dlatego split () i regex () oraz funkcje oceny zmiennych nie będą działać. Funkcja threadNum () nie będzie działać i nie ma sensu na poziomie planu testów.
Odwoływanie się do zmiennych i funkcji
Odwoływanie się do zmiennej w elemencie testowym odbywa się poprzez umieszczenie nazwy zmiennej w nawiasach kwadratowych za pomocą „$ {” i „}”.
Do funkcji odwołuje się w ten sam sposób, ale zgodnie z konwencją nazwy funkcji zaczynają się od „__”, aby uniknąć konfliktu z nazwami wartości użytkownika.
Niektóre funkcje do ich konfiguracji pobierają argumenty, które są umieszczane w nawiasach i rozdzielane przecinkami. Jeśli funkcja nie przyjmuje argumentów, nawiasy można pominąć. Na przykład -
${__BeanShell(vars.put("name"\,"value"))}
Alternatywnie możesz zdefiniować swój skrypt jako zmienną, np. W Planie testów -
SCRIPT vars.put("name","value")
Następnie można odwoływać się do skryptu w następujący sposób -
${__BeanShell(${SCRIPT})}
Okno dialogowe pomocnika funkcji
Okno dialogowe pomocnika funkcji jest dostępne w JMeter's Options patka.
Korzystając z pomocnika funkcji, możesz wybrać funkcję z listy rozwijanej i przypisać wartości jej argumentom. Lewa kolumna tabeli zawiera krótki opis argumentu, a prawa kolumna to miejsce, w którym wpisujesz wartość tego argumentu. Różne funkcje przyjmują różne argumenty.
Gdy to zrobisz, kliknij przycisk „Generuj”, a odpowiedni ciąg zostanie wygenerowany, który możesz skopiować i wkleić do planu testów, gdziekolwiek chcesz.
Zmienne predefiniowane
Niektóre zmienne są definiowane wewnętrznie przez JMeter. Oni są -
COOKIE_cookiename - zawiera wartość pliku cookie.
JMeterThread.last_sample_ok - czy ostatnia próbka była OK - prawda / fałsz. Uwaga - jest to aktualizowane po uruchomieniu PostProcessors i Assertions.
Zmienne START.
Wstępnie zdefiniowane właściwości
Niektóre wbudowane właściwości są definiowane przez narzędzie JMeter. Są one wymienione poniżej. Dla wygody właściwości START są również kopiowane do zmiennych o tych samych nazwach.
START.MS - czas rozpoczęcia JMeter w milisekundach.
START.YMD - czas rozpoczęcia JMeter jako rrrrMMdd.
START.HMS - czas rozpoczęcia JMeter jako GGmmss.
TESTSTART.MS - czas rozpoczęcia testu w milisekundach.
Zwróć uwagę, że zmienne / właściwości START reprezentują czas uruchamiania narzędzia JMeter, a nie czas rozpoczęcia testu. Są przeznaczone głównie do użytku w nazwach plików itp.
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 całym 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 znaki „(” 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 -
JMeter ma pewne ograniczenia, zwłaszcza gdy jest uruchamiany w środowisku rozproszonym. Przestrzeganie tych wskazówek pomoże w tworzeniu rzeczywistego i ciągłego obciążenia -
Użyj wielu wystąpień narzędzia JMeter na wypadek, gdyby liczba wątków była większa.
Sprawdź zasady określania zakresu i odpowiednio je zaprojektuj.
Zawsze używaj konwencji nazewnictwa dla wszystkich elementów.
Przed wykonaniem skryptów sprawdź domyślne ustawienia łączności przeglądarki.
Dodaj odpowiednio słuchaczy.
Oto kilka sugestii dotyczących zmniejszenia wymagań dotyczących zasobów -
Użyj trybu innego niż GUI: jmeter -n -t test.jmx -l test.jtl.
Użyj jak najmniejszej liczby słuchaczy; jeśli używasz flagi -l jak powyżej, wszystkie mogą zostać usunięte lub wyłączone.
Wyłącz odbiornik „Wyświetl drzewo wyników”, ponieważ zużywa dużo pamięci i może spowodować zawieszenie konsoli lub brak pamięci w narzędziu JMeter. Bezpiecznie jest jednak używać odbiornika „Wyświetl drzewo wyników” z zaznaczonymi tylko „błędami”.
Zamiast używać wielu podobnych samplerów, użyj tego samego próbnika w pętli i użyj zmiennych (zestaw danych CSV), aby zróżnicować próbkę. Lub użyj narzędzia Access Log Sampler.
Nie używaj trybu funkcjonalnego.
Użyj danych wyjściowych CSV zamiast XML.
Zapisuj tylko te dane, których potrzebujesz.
Używaj jak najmniej asercji.
Wyłącz wszystkie wykresy JMeter, ponieważ zajmują dużo pamięci. Możesz przeglądać wszystkie wykresy w czasie rzeczywistym za pomocą zakładki JTLs w interfejsie internetowym.
Nie zapomnij usunąć ścieżki lokalnej z konfiguracji zestawu danych CSV, jeśli jest używana.
Wyczyść kartę Pliki przed każdym uruchomieniem testowym.