automation of functional tests using jmeter (in polish)
DESCRIPTION
Presentation from a webinar dedicated to a user who don't have previous experience with automation of web applications tests using JMeter tool. At this virtual meet up you will get basic theoretical knowledge about automation test and some practical examples of using JMeter tool. The webinar on YouTube: http://youtu.be/3_o3IOJEcxw Tomasz Stupak is Senior Test Engineer working for 5 years in Tieto. During his profession career he has experience with software and hardware testing.TRANSCRIPT
© 2
010
Tie
to C
orpo
ratio
n
Automatyzacja testów funkcjonalnychz wykorzystaniem narzędzia JMeter
Tomasz Stupak
Senior Test EngineerTieto,
© 2010 Tieto Corporation2 Tomasz Stupak 11.04.2023
Table of contents• Wstęp teoretyczny
4• Czym jest testowanie funkcjonalne?
5• Po co automatyzować testy funkcjonalne?
6• Po co automatyzować testy funkcjonalne?
7• Jak zautomatyzować proces testowania funkcjonalnego?
8• Na co zwrócić uwagę przy wyborze narzędzia do automatyzacji?
9
• Czym jest JMeter?
10• Czym jest JMeter?
11• Co można zrobić za pomocą JMetera?
12• Właściwości JMetera
13
• Elementy Test Planu
14• Thread Group
15• Thread Group
16• Ramp-up Period
17• Controllers
18• Samplery
19• Logic Controllers
20• Listenery
21• Timery
22
© 2010 Tieto Corporation3 Tomasz Stupak 11.04.2023
Spis Treści• Asercje
23• Configuration Elements
24• Pre-Processor Elements
25• Post-Processor Elements
26• Kolejność wykonywania
27
• Przykład
28• Co będziemy testować?
29• Pobranie i uruchomienie JMetera
30• Konfiguracja liczby użytkowników
31• Konfiguracja liczby użytkowników
32• Dodanie HTTP Request Defaults
33• Dodanie HTTP Request Defaults
34• Obsługa Coockies
35• Wysyłanie requestu
36• Wysyłanie requestu
37• Dodawanie Listenera
38• Dodawanie Listenera
39• Start / Stop Testu
40• Wyniki testu
41• W następnym odcinku
42
© 2
010
Tie
to C
orpo
ratio
n
Wstęp teoretyczny
4 11.04.2023
© 2010 Tieto Corporation
Czym jest testowanie funkcjonalne?
• Integralna część procesu zapewniania jakości– Stosowana w celu zweryfikowania czy aplikacja działa
zgodnie z przyjętymi wcześniej założeniami
• Ciąg testów emulujących interakcje pomiędzy użytkownikiem a aplikacją
• Może obejmować testy manualne i automatyczne
© 2010 Tieto Corporation
Po co automatyzować testy funkcjonalne?
• Czasochłonność testów manualnych
• Pobieżność i pomijanie części funkcjonalności
• Trudność wykonania testów regresyjnych
© 2010 Tieto Corporation
Po co automatyzować testy funkcjonalne?
• Automatyzacja przyspiesza i polepsza jakość
• Długofalowe rezultaty:
– Możliwość ponownego wykorzystania
– Przewidywalność i metodyczność
– Produktywność
© 2010 Tieto Corporation
Jak zautomatyzować proces testowania funkcjonalnego?
1. Ustalenie aplikacji, które powinny podlegać automatyzacji
2. Wybranie właściwego podejścia testowego
3. Stworzenie planu testowania aplikacji
4. Stworzenie i wdrożenie testów automatycznych
© 2010 Tieto Corporation
Na co zwrócić uwagę przy wyborze narzędzia do automatyzacji?
• Zintegrowane środowisko do automatyzacji testów• Dobra adaptacja do ciągłych zmian wymagań
biznesowych• Wsparcie wielu technologii• Optymalizacja zapewnienia jakości w całym cyklu
tworzenia oprogramowania• Rozwinięta społeczność użytkowników• Odpowiedni poziom wsparcia i usług dodatkowych
© 2
010
Tie
to C
orpo
ratio
n
Czym jest JMeter?
10 11.04.2023
© 2010 Tieto Corporation
Czym jest JMeter?
• Aplikacja typu open source napisana w języku Java
• Zaprojektowany do:– Testów obciążeniowych– Testów funkcjonalnych– Mierzenia wydajności
• Pierwotnie zaprojektowany do testowania aplikacji webowych
© 2010 Tieto Corporation12 Tomasz Stupak 11.04.2023
Co można zrobić za pomocą JMetera?
• Testowanie statycznych i dynamicznych zasobów– Pliki, Servlety, skrypty Perl, Obiekty Java, bazy danych i
zapytania do baz danych, serwery FTP i inne
• Symulacja wysokiego obciążenia w celu przetestowania odporności
• Graficzna analiza wydajności
© 2010 Tieto Corporation13 Tomasz Stupak 11.04.2023
Właściwości JMetera
• Testy na wielu typach serwerów:– HTTP(S), SOAP, bazy danych (przez JDBC), LDAP, JMS,
poczta – SMTP, POP3 i IMAP• Pełna przenaszalność• Wielowątkowy framework• Interfejs graficzny• Analiza offline• Elastoczność– samplery, timery, wizualizacja, funkcje, skrypty
• JMeter nie jest przeglądarką!
© 2
010
Tie
to C
orpo
ratio
n
Elementy Test Planu
© 2010 Tieto Corporation15 Tomasz Stupak 11.04.2023
Thread GroupTest Plan (RMB) -> Add -> Threads (Users) -> Thread Group• Punkt początkowy każdego test planu• Kontroluje ilość wątków używanych przy wykonywaniu testu• Symuluje wielu użytkowników łączących się z serwerem• Pozwala:
• Okreslić liczbę wątków• Określić czas uruchamiania• Określić ilość iteracji testu
• Wszystkie kontrolery i samplery muszą być pod daną grupą wątków
• Inne elementy mogą być umieszczone bezpośrednio pod test planem (będą dotyczyć wszystkich grup wątków)
© 2010 Tieto Corporation16 Tomasz Stupak 11.04.2023
Thread Group
Liczba wątków
Czas uruchamiania
Liczba iteracji
© 2010 Tieto Corporation17 Tomasz Stupak 11.04.2023
Ramp-up Period• Określa po jakim czasie uruchomią się wszystkie wątki.• Przykład:
• Threads: 10• Ramp-Up: 100 sekund• Po 100 sekundach uruchomi się 10 wątków• Każdy wątek będzie uruchamiał się 10 sekund po poprzednim
(100s/10)• Czas musi być odpowiednio długi, żeby nie przeciążyć
JMetera już na początku• Czas musi być odpowiednio krótki, żeby ostatni wątek
uruchomił się przed końcem działania pierwszego (chyba, że taki scenariusz jest zamierzony)
© 2010 Tieto Corporation18 Tomasz Stupak 11.04.2023
Controllers• JMeter oferuje 2 rodzaje kontrolerów
• Samplery• Logical Controllers (kontrolery logiczne)
• Samplery:• Używane przez JMeter do wysyłania requestów do
serwera• Można je dostosować za pomocą Configuration Elements
• Logical Controllers:• Używane do określenia logiki decydującej o tym, kiedy
wysłać request
© 2010 Tieto Corporation19 Tomasz Stupak 11.04.2023
SampleryThread Group-> Add -> Sampler• Wysyła request i czeka na odpowiedź serwera• Przetwarzane w kolejności położenia na drzewie• Można je dostosować za pomocą kontrolerów logicznych• Przykłady:
• FTP Request• HTTP Request• JDBC Request• Java object request• LDAP Request • SOAP/XML-RPC Request• WebService (SOAP) Request
© 2010 Tieto Corporation20 Tomasz Stupak 11.04.2023
Logic ControllersThread Group -> Add -> Logic Controller• Określają logikę decydującą o tym, kiedy wysłać request• Mogą zmienić kolejność wykonywania requestów• Mogą modyfikować requesty• Mogą powodować powtórzenie wykonania requestów• Można je łączyć w celu uzyskania danych rezultatów• Przykłady:
• ForEach Controller• If Controller• Loop Controller• Random Controller• Recording Controller
© 2010 Tieto Corporation21 Tomasz Stupak 11.04.2023
ListeneryTest Plan / Thread Group -> Add -> Listener• Wyświetlają rezultaty wykonania zadań JMetera, takie jak
np:• Czasy odpowiedzi• Szczegóły zapytania i odpowiedź
• Możliwość zapisu danych do pliku• Każdy listener przechowuje te same dane, róznica polega
na sposobie wyświetlania ich• Przykłady:
• View Results Tree• Graph Results• Aggregate Report
© 2010 Tieto Corporation22 Tomasz Stupak 11.04.2023
TimeryTest Plan / Thread Group -> Add -> Timer• Używane do określenia przerw między wykonywaniem
requestów• Domyślnie JMeter wysyła requesty bez przerw, co może
spowodować przeciążenie serwera• Gdy użyty jest więcej niż jeden timer, JMeter sumuje ich
wartości• Dodawane jako podelementy samplerów lub kontrolerów• Przykłady:
• Constant Timer• Gaussian Random Timer• Synchronizing Timer
© 2010 Tieto Corporation23 Tomasz Stupak 11.04.2023
AsercjeTest Plan / Thread Group -> Add -> Assertions• Używane do sprawdzania poprawności odpowiedzi serwera• „Testują” czy aplikacja zwraca wyniki zgodnie z
oczekiwaniami• Przykład:
• Można sprawdzić, czy odpowiedź zawiera dany tekst• Możliwość wykorzystania wyrażeń regularnych
• Dodawane jako podelementy Samplerów• W celu wyświetlenia wyników asercji, używa się litenera:
Assertion Results• Przykłady:
• Response Assertion• Size Assertion
© 2010 Tieto Corporation24 Tomasz Stupak 11.04.2023
Configuration ElementsTest Plan / Thread Group -> Add -> Config Element• Łączą się z Samplerami• Same z siebie nie wysyłają requestów, ale mogą je
modyfikować• Mają zastosowanie tylko w głązi, w której są umieszczone
• Wyjątek: User Defined Variables, który przetwarzany jest na początku testu, bez względu na to, gdzie jest umieszczony
• Przykłady:• HTTP Coockie Manager• HTTP Request Defaults• HTTP Authorization Manager• Counter
© 2010 Tieto Corporation25 Tomasz Stupak 11.04.2023
Pre-Processor ElementsTest Plan / Thread Group -> Add -> Pre Processors• Wykonują daną akcję przed danym requestem• Gdy dodane jako podelement danego Samplera,
wykonuwane są przed nim• Najczęściej używane do modyfikacji requestu przed
jego wykonaniem (przez np. zmianę wartości zmiennej)
• Przykłady:• User Parameters• HTTP URL Re-writing Modifier
© 2010 Tieto Corporation26 Tomasz Stupak 11.04.2023
Post-Processor ElementsTest Plan / Thread Group -> Add -> Post Processors• Wykonują daną akcję po danym requeście• Gdy dodane jako podelement danego Samplera,
wykonywane są po nim• Najczęściej używane do przetwarzania danych z
odpowiedzi danego requestu, np. wyciągnięcia wartości
• Przykłady:• Regular Expression Extractor• XPath Extractor
© 2010 Tieto Corporation27 Tomasz Stupak 11.04.2023
Kolejność wykonywania1. Configuration elements2. Pre-Processors3. Timery4. Samplery5. Post-Processors (o ile wynik requestu jest różny od nulla)6. Asercje (o ile wynik requestu jest różny od nulla)7. Listnery (o ile wynik requestu jest różny od nulla)
• Timery, Asercje, Pre i Post-Procesory wykonywane są tylko wtedy, gdy są podelementem Samplera
• Samplery i Logic Controllers wykonywane są w kolejności ułożenia na drzewie
© 2
010
Tie
to C
orpo
ratio
n
PrzykładPodstawy JMeter – budowanie test planu z użyciem podstawowych elementów
28 11.04.2023
© 2010 Tieto Corporation
Co będziemy testować?• Przykładowy Test Plan do testowania stron www• 5 użytkowników wysyła requesty do 2 stron, użytkownicy
przeprowadzają test dwukrotnie (5 userów * 2 requesty * 2 = 20 requestów HTTP)
• Używane elementy:• Thread Group• HTTP request• HTTP Request Defaults• HTTP Coockie Manager• Graph Results• View Results Tree• View Results in Table• Aggregate Graph
© 2010 Tieto Corporation30 Tomasz Stupak 11.04.2023
Pobranie i uruchomienie JMetera• Strona pobierania Jmetera• Uruchomienie:
/bin/jmeter.bat
© 2010 Tieto Corporation31 Tomasz Stupak 11.04.2023
Konfiguracja liczby użytkowników• Test Plan -> Add -> Threads (users) -> Thread
Group• Opcjonalnie można zmienić nazwę (pole Name)• Numer of Threads (users): 5• Ramp-Up Period (in seconds): 1• Loop Count: 2
• UWAGA: W odróżnieniu od większości aplikacji (gdzie zmiany trzeba potwierdzać), JMeter automatycznie wprowadza wpisane zmiany
© 2010 Tieto Corporation32 Tomasz Stupak 11.04.2023
Konfiguracja liczby użytkowników
© 2010 Tieto Corporation33 Tomasz Stupak 11.04.2023
Dodanie HTTP Request Defaults• Thread Group -> Add -> Config Element -> HTTP
Request Defaults• Zapytania będą wysyłane do tego samego serwera,
więc:Server Name or IP: bash.org.pl
• UWAGA: Element HTTP Request Defaults nie wysyła requestów HTTP, tylko definiuje domyślne wartości, używane przez elementy wysyłające takie requesty
© 2010 Tieto Corporation34 Tomasz Stupak 11.04.2023
Dodanie HTTP Request Defaults
© 2010 Tieto Corporation35 Tomasz Stupak 11.04.2023
Obsługa Coockies• Prawie wszystkie strony www używają plików
coockies• Do obsługi coockies w JMeter do Test Planu dodaje
się HTTP Coockie Manager• W ten sposób każdy wątek będzie miał swój plik
coockie, używany przez zawarte w nim HTTP
• Thread Group -> Add -> Config Element -> HTTP Coockie Manager
© 2010 Tieto Corporation36 Tomasz Stupak 11.04.2023
Wysyłanie requestu• W naszym Test Planie wysyłamy 2 requesty HTTP:
• http://bash.org.pl/• http://bash.org.pl/latest
• Thread Group -> Add -> Sampler -> HTTP Request• Pole Server Name or IP pozostawiamy puste, gdyż adres
ustawiony jest w elemencie HTTP Request Defaults• W pierwszym requeście pole Path zostawiamy puste, gdyż
wysyłamy zapytanie do strony głównej• W drugim requeście ustawiamy odpowiednią ścieżkę:
• Patch: /latest
© 2010 Tieto Corporation37 Tomasz Stupak 11.04.2023
Wysyłanie requestu
© 2010 Tieto Corporation38 Tomasz Stupak 11.04.2023
Dodawanie Listenera• Listner odpowiada za przechowywanie wyników
requestu HTTP i wyświetlanie ich w formie zależnej od typu Listenera
• Test Plan -> Add -> Listener• W naszym teście dodamy 4 różne Listenery:
• Graph Results• View Results Tree• View Results in Table• Aggregate Report
© 2010 Tieto Corporation39 Tomasz Stupak 11.04.2023
Dodawanie Listenera
© 2010 Tieto Corporation40 Tomasz Stupak 11.04.2023
Start / Stop Testu• Start testu:
• Run -> Start• CTRL+R
• Stop testu:• Run -> Stop• CTRL+.
• Wyczyszczenie wyników• Run -> Clear All• CTRL+E
© 2010 Tieto Corporation41 Tomasz Stupak 11.04.2023
Wyniki testu
© 2010 Tieto Corporation42 Tomasz Stupak 11.04.2023
W następnym odcinku• JMeter advanced – wykorzytanie bardziej
skomplikowanych elementów aplikacji:• Nagrywanie skryptów za pomocą elementu HTTP Proxy
Server• Parametryzacja testu• Użycie asercji• Użycie Logic Controllers• Użycie Timerów• Symulacja „żywych” użytkowników
© 2
010
Tie
to C
orpo
ratio
n
Tomasz Stupak
Senior Tests EngineerTieto,