Automation of functional tests using JMeter (in Polish)

43
© 2010 Tieto Corporation Automatyzacja testów funkcjonalnych z wykorzystaniem narzędzia JMeter Tomasz Stupak Senior Test Engineer Tieto,

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 of Automation of functional tests using JMeter (in Polish)

Page 1: Automation of functional tests using JMeter (in Polish)

© 2

010

Tie

to C

orpo

ratio

n

Automatyzacja testów funkcjonalnychz wykorzystaniem narzędzia JMeter

Tomasz Stupak

Senior Test EngineerTieto,

Page 2: Automation of functional tests using JMeter (in Polish)

© 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

Page 3: Automation of functional tests using JMeter (in Polish)

© 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

Page 4: Automation of functional tests using JMeter (in Polish)

© 2

010

Tie

to C

orpo

ratio

n

Wstęp teoretyczny

4 11.04.2023

Page 5: Automation of functional tests using JMeter (in Polish)

© 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

Page 6: Automation of functional tests using JMeter (in Polish)

© 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

Page 7: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation

Po co automatyzować testy funkcjonalne?

• Automatyzacja przyspiesza i polepsza jakość

• Długofalowe rezultaty:

– Możliwość ponownego wykorzystania

– Przewidywalność i metodyczność

– Produktywność

Page 8: Automation of functional tests using JMeter (in Polish)

© 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

Page 9: Automation of functional tests using JMeter (in Polish)

© 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

Page 10: Automation of functional tests using JMeter (in Polish)

© 2

010

Tie

to C

orpo

ratio

n

Czym jest JMeter?

10 11.04.2023

Page 11: Automation of functional tests using JMeter (in Polish)

© 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

Page 12: Automation of functional tests using JMeter (in Polish)

© 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

Page 13: Automation of functional tests using JMeter (in Polish)

© 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ą!

Page 14: Automation of functional tests using JMeter (in Polish)

© 2

010

Tie

to C

orpo

ratio

n

Elementy Test Planu

Page 15: Automation of functional tests using JMeter (in Polish)

© 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)

Page 16: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation16 Tomasz Stupak 11.04.2023

Thread Group

Liczba wątków

Czas uruchamiania

Liczba iteracji

Page 17: Automation of functional tests using JMeter (in Polish)

© 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)

Page 18: Automation of functional tests using JMeter (in Polish)

© 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

Page 19: Automation of functional tests using JMeter (in Polish)

© 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

Page 20: Automation of functional tests using JMeter (in Polish)

© 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

Page 21: Automation of functional tests using JMeter (in Polish)

© 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

Page 22: Automation of functional tests using JMeter (in Polish)

© 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

Page 23: Automation of functional tests using JMeter (in Polish)

© 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

Page 24: Automation of functional tests using JMeter (in Polish)

© 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

Page 25: Automation of functional tests using JMeter (in Polish)

© 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

Page 26: Automation of functional tests using JMeter (in Polish)

© 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

Page 27: Automation of functional tests using JMeter (in Polish)

© 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

Page 28: Automation of functional tests using JMeter (in Polish)

© 2

010

Tie

to C

orpo

ratio

n

PrzykładPodstawy JMeter – budowanie test planu z użyciem podstawowych elementów

28 11.04.2023

Page 29: Automation of functional tests using JMeter (in Polish)

© 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

Page 30: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation30 Tomasz Stupak 11.04.2023

Pobranie i uruchomienie JMetera• Strona pobierania Jmetera• Uruchomienie:

/bin/jmeter.bat

Page 31: Automation of functional tests using JMeter (in Polish)

© 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

Page 32: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation32 Tomasz Stupak 11.04.2023

Konfiguracja liczby użytkowników

Page 33: Automation of functional tests using JMeter (in Polish)

© 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

Page 34: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation34 Tomasz Stupak 11.04.2023

Dodanie HTTP Request Defaults

Page 35: Automation of functional tests using JMeter (in Polish)

© 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

Page 36: Automation of functional tests using JMeter (in Polish)

© 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

Page 37: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation37 Tomasz Stupak 11.04.2023

Wysyłanie requestu

Page 38: Automation of functional tests using JMeter (in Polish)

© 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

Page 39: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation39 Tomasz Stupak 11.04.2023

Dodawanie Listenera

Page 40: Automation of functional tests using JMeter (in Polish)

© 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

Page 41: Automation of functional tests using JMeter (in Polish)

© 2010 Tieto Corporation41 Tomasz Stupak 11.04.2023

Wyniki testu

Page 42: Automation of functional tests using JMeter (in Polish)

© 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

Page 43: Automation of functional tests using JMeter (in Polish)

© 2

010

Tie

to C

orpo

ratio

n

Tomasz Stupak

Senior Tests EngineerTieto,