Gatling. Przygotowanie środowiska. Część 2.

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.

 

Testowe 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).

 

Testowe 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