Przygotowanie środowiska do testów wydajności w Gatlingu. Część 2.

Część druga z serii artykułów poświęconych Gatlingowi, przygotowanej przez serwis testywydajnosci.pl.

 

W naszym artykule postaramy się pokazać jak krok po kroku przygotować podstawowe środowisko umożliwiające pracę w narzędziu Gatling. Dodatkowo dowiecie się, jak uruchomić samo narzędzie oraz jak uruchomić Recorder do nagrywania skryptów.

 

Pobieranie narzędzia

Narzędzie Gatling można pobrać ze strony http://gatling.io jako paczkę zip. Po zapisaniu pobranego pliku na dysku trzeba go rozpakować do wybranego folderu. Ważne, aby nie był to katalog, w którym mamy ograniczone uprawnienia np. w systemach Windows nie powinniśmy wykorzystywać do tego katalogu „Program Files…”. Po rozpakowaniu nazwa domyślnego folderu może okazać się niewygodna w użyciu, ponieważ jest dość długa: „gatling-charts-highcharts-bundle-x.x.x-bundle”, dlatego dla ułatwienia można zmienić nazwę na wygodniejszą. Będzie to tzw. katalog domowy Gatlinga.

 

Struktura plików i katalogów wygląda następująco:

  • katalogu „bin” zawiera pliki umożliwiające uruchomienie narzędzia,
  • katalog „conf” zawiera pliki konfiguracyjne,
  • katalog „lib” zawiera pliki bibliotek potrzebnych do funkcjonowania narzędzia,
  • katalog „results” to katalog, w którym zapisywane są raporty z testów,
  • katalog „user-files” zawiera skrypty symulacyjne uruchamiane do testów,
  • katalog „target”, utworzony po uruchomienia narzędzia, zawiera skompilowane skrypty testowe w postaci plików .class.

 

Zrzut ekranu 1. Zawartość katalogu Gatling.

 

Do uruchomienia narzędzia Gatling należy mieć zainstalowane i odpowiednio skonfigurowane środowisko JAVA JDK, najlepiej ze wszystkimi najnowszymi aktualizacjami. 

Aby sprawdzić zainstalowaną wersję środowiska JAVA powinniśmy wywołać polecenie „java -version” w wierszu poleceń (Windows). Po zainstalowaniu JDK trzeba ustawić zmienną środowiskową JAVA_HOME na katalog, w którym zostało zainstalowane środowisko Java, o ile zmienna nie została ustawiona wcześniej.

Katalog „bin” zawiera przygotowane pliki dla systemów Windows oraz Linux/MacOS, które służą do uruchamiania narzędzia Gatling oraz Recorder. 

W systemach Windows do uruchomienia narzędzia Gatling należy użyć pliku ‘gatling.bat’, do uruchomienia Recorder – „recorder.bat”. 

Pliki „gatling.sh” oraz „recorder.sh” służą analogicznie do uruchomienia narzędzia Gatling i Recorder na systemach Linux / MacOS.

 

Zrzut ekranu 2. Pliki uruchamiające narzędzie Gatling i Recorder.

 

W katalogu Gatling otrzymujemy również gotowe skrypty umożliwiające przetestowanie testowej aplikacji „Computer-Database”, dostępnej pod adresem http://computer-database.gatling.io. Jest to prosta aplikacja webowa stworzona w celach testowych. Pozwala na dodawanie, edycję i usuwanie pozycji z bazy. 

 

Zrzut ekranu 3. Aplikacja „Computer-Database”.

 

Powyższe skrypty testowe znajdują się w katalogu „user-files\simulations\computerdatabase”. Pliki są podzielone ze względu na zaawansowanie skryptów. W głównym katalogu znajduje się tylko jeden plik, który przedstawia podstawowy skrypt w takiej postaci, w jakiej skrypty zostają nagrywane w narzędziu Recorder. W katalogu „advanced” zostały umieszczone skrypty, w których scenariusze testowe zostały zmodyfikowane i podzielone na złożone procesy biznesowe, w sposób podobny do wzorca PageObject. 

Omawianiem budowy skryptów zajmiemy się w kolejnych artykułach.

 

Zrzut ekranu 4. Główny katalog ze skryptami testowymi.

 

Zrzut ekranu 5. Katalog „advanced” ze skryptami testowymi.

 

Test uruchomienie - Gatling

Po przygotowaniu i skonfigurowaniu środowiska możemy sprawdzić czy nasze środowisko jest gotowe do uruchomienia narzędzia. W tym celu przechodzimy do katalogu „bin” i uruchamiamy narzędzie odpowiednim plikiem, zależnie od systemu na jakim pracujemy – „gatling.bat” dla systemu Windows lub „gatling.sh” dla systemów Linux/MacOS. 

Na początku pracy z Gatlingiem zachęcamy do uruchamiania narzędzia z konsoli (lub terminala) poprzez plik „gatling.bat” (w terminalu „./gatling.sh”). Będąc w katalogu „bin” wykonujemy komendę:

> gatling.bat

dla systemu Windows, a dla terminala systemu Linuksowego wykonujemy polecenie:

$ ./gatling.sh

co umożliwia obserwację ewentualnych błędów.

Uruchomienie narzędzia spowoduje wyświetlenie zmiennej „GATLING_HOME”, która zawiera ścieżkę do katalogu z plikami narzędzia. Następnie zostanie wyświetlona zmienna „JAVA” z wartością, jaka została ustawiona w „JAVA_HOME”. 

Działania w przypadku pojawienia się błędów w konsoli i problemów z uruchomieniem narzędzia:

Jeśli podczas uruchamiania w wierszu poleceń pojawi się komunikat podobny do:

JAVA = "java"
Error: missing `server’ JVM at `C:\Program Files (x86)\Java\jre1.8.0_144\bin\serv
er\jvm.dll’.

Please install or use the JRE or JDK that contains these missing components.

będzie to oznaczać, że nie mamy poprawnie zainstalowanej lub skonfigurowanej Javy.

Jeśli podczas uruchamiania w wierszu poleceń pojawi się komunikat podobny do:

Error occurred during initialization of VM
java.lang.OutOfMemoryError: unable to create new native thread
There is no simulation script. Please check that your scripts are in user-files/

simulations

lub

Error occurred during initialization of VM

Could not reserve enough space for 1048576KB object heap

najprawdopodobniej będzie spowodowany tym, że domyślne parametry, z jakimi uruchamiany jest Gatling nie są odpowiednie dla naszego systemu - niewystarczające zasoby do uruchomienia narzędzia. W takim przypadku należy edytować skrypt, z którego uruchamiamy Gatlinga („gatling.bat”) i zmienić wartość w parametrze „JAVA_OPTS” z „Xmx1G” na „Xmx512M”, co spowoduje rezerwowanie mniejszej ilości pamięci przez narzędzie. Po zapisaniu pliku można spróbować uruchomić narzędzie ponownie.

Pierwsze uruchomienie może potrwać dłużej niż kolejne, gdyż w momencie pierwszego uruchomienia kompilowane są wszystkie skrypty testowe. Jeśli nie ma żadnych innych błędów z kompilacji skryptów (nie będzie błędów, ponieważ mamy na razie tylko skrypty dostarczone z narzędziem), to w kolejnym punkcie uruchamiania narzędzia należy wybrać skrypt testowy, który chcemy uruchomić. Wybranie skryptu odbywa się poprzez podanie cyfry przyporządkowanej do wybranego skryptu dostępnego na liście. W naszym przypadku wybieramy pierwszy skrypt przez wpisane „0” i potwierdzamy klawiszem „Enter”.

 

Zrzut ekranu 6. Uruchamianie Gatlinga - wybór skryptu testowego.

 

W następnej kolejności można podać identyfikator uruchamianego testu, zostanie on nadany folderowi z raportem. Domyślnie raport zostanie zapisany w katalogu z nazwą naszego skryptu – „basicsimulation”. Jeżeli nie podamy identyfikatora do nazwy, zostanie dołączony wygenerowany identyfikator w postaci ciągu cyfr. Na tym etapie nie podajemy żadnej wartości, tylko potwierdzamy klawiszem „Enter”.

 

Zrzut ekranu 7. Uruchamianie Gatlinga - określenie identyfikatora testu dla raportu.

 

Przed finalnym uruchomieniem testu jesteśmy proszeni o podanie opcjonalnego opisu dla uruchamianego skryptu. Opis ten będzie widoczny po wyświetleniu raportu. W tym momencie także nie podajemy żadnego opisu, tylko ponownie potwierdzamy klawiszem „Enter”.

 

Zrzut ekranu 8. Uruchamianie Gatlinga - określenie opisu testu.

 

Po potwierdzeniu opisu Gatling uruchomi wybrany przez nas wcześniej skrypt testowy, co zostanie potwierdzone komunikatem w konsoli 

Simulation computerdatabase.BasicSimulation started…

 

Zrzut ekranu 9. Uruchamianie Gatlinga - uruchomienie skryptu.

 

W trakcie wykonywania skryptu testowego w odstępach co 5 sekund będziemy informowani o wykonanych zapytaniach (request) i statusach ich wykonania.

 

Zrzut ekranu 10. Uruchomienie skryptu - raporty z wykonanych zapytań.

 

Na zakończenie wykonania skryptu wyświetlone zostanie krótkie podsumowanie z ogólnymi wartościami z wykonania testu, a także informacje dotyczące zapisu raportu: 

Please open the following file: d:\gatling\results\basicsimulation-1503579827086\index.html

 

Zrzut ekranu 11. Uruchomienie skryptu - podsumowanie wykonania skryptu.

 

Mając powyższe informacje wiemy, że skrypt zakończył pracę, a raport został zapisany we wskazanej lokalizacji. Raporty zapisywane są w postaci plików HTML, więc można otworzyć je w przeglądarce. Raport z naszego uruchomionego skryptu nie zawiera dużej liczby wiadomości, ponieważ skrypt został uruchomiony tylko dla jednego użytkownika. Daje jednak obraz tego, co raporty z przebiegu testów mogą przedstawiać/zawierać.

W raporcie dostępne mamy dwie zakładki, które zawierają zestaw informacji o zrealizowanych testach. Na pierwszej zakładce znajdują się:

  • ogólne informacje w postaci graficznej z wykonania skryptu na temat zapytań, które zostały wykonane oraz czasów ich odpowiedzi,
  • ogólne statystyki z czasem odpowiedzi dla kolejnych zapytań,
  • liczba aktywnych użytkowników w czasie wykonywania testów (Active Users along the Simulation),
  • procentowy rozkład czasu odpowiedzi (Response Time Distribution),
  • procentowy rozkład czasu odpowiedzi w czasie (Response Time Percentiles over Time),
  • liczba zapytań na sekundę w czasie wykonywania testów (Number of requests per second),
  • liczba odpowiedzi na sekundę w czasie wykonywania testów (Number of responses per second).

 

Na drugiej zakładce znajdują się:

  • ogólne informacje w postaci graficznej z ilością zapytań, które zostały wykonane i czasy ich odpowiedzi,
  • statystyki z czasem odpowiedzi dla wybranego zapytania,
  • procentowy rozkład czasu odpowiedzi (Response time distribution),
  • odsetek czasu odpowiedzi w czasie (Response time percentiles over time),
  • liczba zapytań na sekundę w czasie wykonywania testów dla wybranego zapytania (Number of requests per second),
  • liczba odpowiedzi na sekundę w czasie wykonywania testów dla wybranego zapytania (Number of responses per second),
  • czas odpowiedzi w stosunku do globalnego czasu RPS dla wybranego zapytania (Response time against global RPS).

 

Zrzut ekranu 12. Raport - informacje ogólne (1/2).

 

Zrzut ekranu 13. Raport - informacje ogólne (2/2).

 

Zrzut ekranu 14. Raport - informacje szczegółowe dla zapytań (1/2).

 

Zrzut ekranu 15. Raport - informacje szczegółowe dla zapytań (2/2).

 

Test uruchomienie - Recorder

W celu pełnego sprawdzenia, czy Gatling został poprawnie skonfigurowany powinniśmy jeszcze uruchomić narzędzie Recorder.

Recorder, w odróżnieniu od samego narzędzia Gatling, jest narzędziem z interfejsem graficznym. Służy do nagrywania scenariuszy testowych, które Gatling uruchamia jako skrypty testowe. Recorder pozwala na wygenerowanie skryptu scenariusza w języku Scala przez podpięcie się jako proxy pomiędzy przeglądarką a serwerem HTTP. Skrypt może zostać także wygenerowany przez wczytanie pliku HAR (Http ARchive), który został utworzony przez zapisanie sesji w przeglądarce.

Do uruchomienia narzędzia Recorder używamy plików z katalogu ”bin” w folderze domowym Gatlinga. W systemie Windows jest to „recorder.bat”, w systemach Linux/MacOS jest to „recorder.sh”.

Tu również najlepiej uruchamiać z poziomu wiersza poleceń, gdzie będąc w katalogu „bin” dla systemu Windows wykonujemy komendę:

> recorder.bat

a dla terminala systemu Linuksowego wykonujemy polecenie:

$ ./recorder.sh

co umożliwia obserwację ewentualnych błędów.

Jeśli nie będzie błędów i problemów, to uruchamiając narzędzie Recorder zobaczymy okno konfiguracji narzędzia. W oknie konsoli podobnie do uruchamiania skryptu „gatling.bat” pojawi się komunikat o ustawieniu zmiennej „GATLING_HOME”, ze wskazaniem na katalog domowy Gatlinga oraz zmienną „JAVA”’.

 

Zrzut ekranu 16. Uruchamianie narzędzia Recorder – konsola.

 

Otwarcie okna konfiguracyjnego „Gatling Recorder – Configuration” potwierdza fakt, że mamy poprawnie przygotowane środowisko do rozpoczęcia pracy z narzędziami Gatling i Recorder. Konfiguracją i nagrywaniem skryptów testowych zajmiemy się w następnych artykułach.

 

Zrzut ekranu 17. Uruchamianie narzędzia Recorder - okno konfiguracji.

 

Podsumowanie

W tym artykule przygotowaliśmy i skonfigurowaliśmy podstawowe środowisko do testów wydajnościowych z użyciem narzędzia Gatling. Wiemy już, jak uruchomić narzędzia oraz mamy pewność, że działają poprawnie w naszym środowisku. W następnych artykułach opiszemy dalsze kroki w pracy z tym narzędziem.

 

Autor: Marcin Herber

 

 

SPRAWDŹ TAKŻE
Gatling. Testy wydajności w innej formie. Część 1. 

 

 

 

Najbliższe terminy szkoleń

 

21-22 października - Kraków weekend!

ISTQB Poziom Podstawowy (Foundation Level) 


26-27 listopada - Kraków

Dobry Tester - Laboratorium


8-10 listopada - Gdańsk

ISTQB Poziom Podstawowy (Foundation Level)

 

Partnerzy

Narzędzia testerskie