JMeter tworzenie raportów CSV to zagadnienie ważne i potrzebne w pracy testera, który tworzy testy wydajnościowe. Podstawą do stworzenia tego wpisu, były rozmowy rekrutacyjne, które przeprowadzałem, podczas których kandydaci informowali, że analizy dokonywali przy użyciu listnerów w wersji GUI.
JMeter dobre praktyki
JMeter jak każde inne narzędzie można używać w różny sposób. Warto zapoznać się z dobrymi praktykami, aby nasze testy a także ich wyniki były jak najbardziej odzwierciedlające rzeczywistość i pozwoliły uzyskać jak najwięcej informacji na temat naszej aplikacji.
Tworzenie raportów
Jak przeczytaliście w dobrych praktykach, aby uzyskiwać bardziej wiarygodne wyniki, konieczne jest uruchamianie JMetera w poziomu wiersza poleceń. Żeby uzyskać raport csv wystarczy wprowadzić odpowiednią komendę, by taki raport z naszych testów został automatycznie wygenerowany:
jmeter -n -t test.jmx -l test -e -o C:\apache-jmeter-5.4\bin\Raports\wyniki.csv
lub na Linuxie:
/jmeter.sh -n -t test.jmx -l test -e -o /usr/local/inp/apache-jmeter-5.4/bin/Raports/wyniki
Taka krótka dodatkowa komenda pozwala na wygenerowanie w określonym przez nas miejscu raportu CSV. W przypadku problemów z raportem, zweryfikuj czy na pewno w pliku user.properties masz zahaszowaną linijkę:
#jmeter.save.saveservice.output_format=xml
Zawartość raportów
Główna strona raportu pokazuje nam wiele informacji na temat przeprowadzonego testu w podstawowej wersji.
Jak widzimy na dashoboardzie mamy datę testu, nazwę pliku i podsumowanie testu – ile requestów było prawidłowych a ile błędnych. Do błędnych zaliczono by wszystkie statusy nie zakończone 200 a także wszystkie inne które mielibyśmy zabezpieczone asercjami w teście – np. czas odpowiedzi.
Tutaj mamy wyniki dla poszczególnych grup testowych z podziałem na ilość requestów, czasy minimalne/maksymalne i inne przydatne informacje.
Errory – wykaz z jakich powodów były errory w naszej aplikacji, ile takich przypadków było.
W przypadku dużej ilości różnych problemów w aplikacji warto udać się do TOP 5 errors i wyciągnięcie wniosków w tym zakresie aby zabezpieczyć aplikację, a następnie postarać się poprawić najczęstsze błędy, przeprowadzić testy ponownie i skupić się na innych.
Dokładniejsze informacje
Z lewej strony mamy rozwijane menu, z którego możemy wyczytać wiele informacji przydatnych w szczegółowej analizie wyników naszej aplikacji. Zakładki dzielą się na Charts – Over Time, Throughput i Response Time, a takżę Customs Graphs. W tym opisie skupimy się tylko na kilku elementach z tej listy.
Active Threads Over Time
Bardzo ważna rzecz. Czy rzeczywiście zaplanowana ilość wątków została wysłana w danym czasie do naszej aplikacji.
Bytes throughput Over Time
Latencies Over Time
Connect Time Over Time
Hits per second
Response codes per second
Transactions per second
Response Time vs Request per second
Latency vs Request per second
Times vs Threads
Dodatek
Wszystkie właściwości generowania raportów możemy znaleźć w pliku reportgenerator.properties. Jeżeli chcemy dostosować właściwości, należy przenieść je do pliku user.properties. W ostatnich wersjach JMetera raport csv działa poprawnie automatycznie. Gdybyś dokonywał zmian musisz mieć takie minimalne ustawienia by poprawnie generować raporty:
jmeter.save.saveservice.bytes = true # Only available with HttpClient4 #jmeter.save.saveservice.sent_bytes=true jmeter.save.saveservice.label = true jmeter.save.saveservice.latency = true jmeter.save.saveservice.response_code = true jmeter.save.saveservice.response_message = true jmeter.save.saveservice.successful = true jmeter.save.saveservice.thread_counts = true jmeter.save.saveservice.thread_name = true jmeter.save.saveservice.time = true jmeter.save.saveservice.connect_time = true jmeter.save.saveservice.assertion_results_failure_message = true # the timestamp format must include the time and should include the date. # For example the default, which is milliseconds since the epoch: jmeter.save.saveservice.timestamp_format = ms # Or the following would also be suitable # jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
Podsumowanie
JMeter tworzenie raportów CSV szybka opcja dla osób testujących wydajność, aby uzyskać jak najwięcej infromacji z przeprowadzonego testu. Więcej o JMeterze stale piszemy w dziale dedykowanym dla tego narzędzia.