Automation of functional tests using JMeter (in Polish)

1,381
-1

Published on

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.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,381
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
35
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Automation of functional tests using JMeter (in Polish)

  1. 1. ©2010TietoCorporation Automatyzacja testów funkcjonalnych z wykorzystaniem narzędzia JMeter Tomasz Stupak Senior Test Engineer Tieto,
  2. 2. © 2010 Tieto Corporation 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 2 Tomasz Stupak 2013-09-27
  3. 3. © 2010 Tieto Corporation 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 3 Tomasz Stupak 2013-09-27
  4. 4. ©2010TietoCorporation Wstęp teoretyczny 4 2013-09-27
  5. 5. © 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
  6. 6. © 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
  7. 7. © 2010 Tieto Corporation Po co automatyzować testy funkcjonalne? • Automatyzacja przyspiesza i polepsza jakość • Długofalowe rezultaty: – Możliwość ponownego wykorzystania – Przewidywalność i metodyczność – Produktywność
  8. 8. © 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
  9. 9. © 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
  10. 10. ©2010TietoCorporation Czym jest JMeter? 10 2013-09-27
  11. 11. © 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
  12. 12. © 2010 Tieto Corporation 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 12 Tomasz Stupak 2013-09-27
  13. 13. © 2010 Tieto Corporation 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ą! 13 Tomasz Stupak 2013-09-27
  14. 14. ©2010TietoCorporation Elementy Test Planu
  15. 15. © 2010 Tieto Corporation Thread Group Test 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) 2013-09-2715 Tomasz Stupak
  16. 16. © 2010 Tieto Corporation Thread Group 16 Tomasz Stupak 2013-09-27 Liczba wątków Czas uruchamiania Liczba iteracji
  17. 17. © 2010 Tieto Corporation 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) 17 Tomasz Stupak 2013-09-27
  18. 18. © 2010 Tieto Corporation 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 18 Tomasz Stupak 2013-09-27
  19. 19. © 2010 Tieto Corporation Samplery Thread 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 19 Tomasz Stupak 2013-09-27
  20. 20. © 2010 Tieto Corporation Logic Controllers Thread 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 20 Tomasz Stupak 2013-09-27
  21. 21. © 2010 Tieto Corporation Listenery Test 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 21 Tomasz Stupak 2013-09-27
  22. 22. © 2010 Tieto Corporation Timery Test 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 22 Tomasz Stupak 2013-09-27
  23. 23. © 2010 Tieto Corporation Asercje Test 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 23 Tomasz Stupak 2013-09-27
  24. 24. © 2010 Tieto Corporation Configuration Elements Test 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 24 Tomasz Stupak 2013-09-27
  25. 25. © 2010 Tieto Corporation Pre-Processor Elements Test 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 25 Tomasz Stupak 2013-09-27
  26. 26. © 2010 Tieto Corporation Post-Processor Elements Test 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 26 Tomasz Stupak 2013-09-27
  27. 27. © 2010 Tieto Corporation Kolejność wykonywania 1. Configuration elements 2. Pre-Processors 3. Timery 4. Samplery 5. 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 27 Tomasz Stupak 2013-09-27
  28. 28. ©2010TietoCorporation Przykład Podstawy JMeter – budowanie test planu z użyciem podstawowych elementów 28 2013-09-27
  29. 29. © 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
  30. 30. © 2010 Tieto Corporation Pobranie i uruchomienie JMetera • Strona pobierania Jmetera • Uruchomienie: /bin/jmeter.bat 30 Tomasz Stupak 2013-09-27
  31. 31. © 2010 Tieto Corporation 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 31 Tomasz Stupak 2013-09-27
  32. 32. © 2010 Tieto Corporation Konfiguracja liczby użytkowników 32 Tomasz Stupak 2013-09-27
  33. 33. © 2010 Tieto Corporation 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 33 Tomasz Stupak 2013-09-27
  34. 34. © 2010 Tieto Corporation Dodanie HTTP Request Defaults 34 Tomasz Stupak 2013-09-27
  35. 35. © 2010 Tieto Corporation 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 35 Tomasz Stupak 2013-09-27
  36. 36. © 2010 Tieto Corporation 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 36 Tomasz Stupak 2013-09-27
  37. 37. © 2010 Tieto Corporation Wysyłanie requestu 37 Tomasz Stupak 2013-09-27
  38. 38. © 2010 Tieto Corporation 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 38 Tomasz Stupak 2013-09-27
  39. 39. © 2010 Tieto Corporation Dodawanie Listenera 39 Tomasz Stupak 2013-09-27
  40. 40. © 2010 Tieto Corporation Start / Stop Testu • Start testu: • Run -> Start • CTRL+R • Stop testu: • Run -> Stop • CTRL+. • Wyczyszczenie wyników • Run -> Clear All • CTRL+E 40 Tomasz Stupak 2013-09-27
  41. 41. © 2010 Tieto Corporation Wyniki testu 41 Tomasz Stupak 2013-09-27
  42. 42. © 2010 Tieto Corporation 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 42 Tomasz Stupak 2013-09-27
  43. 43. ©2010TietoCorporation Tomasz Stupak Senior Tests Engineer Tieto,
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×