REST Assured vs. JMeter: porównanie narzędzi testowych REST

Opublikowany: 2022-03-11

Testowanie automatyczne jest kluczowym elementem procesu zapewniania jakości oprogramowania. Jednak testowanie interfejsów API do reprezentacyjnego transferu stanu (REST) ​​może być trudną sprawą. Wiele osób, które uciekają się do ręcznego testowania interfejsów API REST, przeocza szczegóły i pomija sposoby na zaoszczędzenie czasu.

Każda poprawnie testowana usługa REST API będzie obejmować następujące obszary:

  • Testowanie zgodności usługi API ze standardami REST
  • Testowanie kodów odpowiedzi usługi API
  • Zapewnienie treści odpowiedzi usługi API
  • Testowanie wydajności usługi API

Narzędzia do testu REST

Do tego potrzebne są odpowiednie narzędzia. Apache JMeter i REST Assured to dwa popularne narzędzia testowe REST do testowania usług REST API. Możesz dowiedzieć się więcej o tym, jak możesz z nich korzystać w praktyce tutaj i tutaj.

W tym artykule poznasz zalety i wady obu tych narzędzi oraz dowiesz się, gdzie najlepiej pasują do istniejących projektów REST API.

Łatwość konfiguracji

Jest jeden warunek wstępny: zarówno JMeter, jak i REST Assured wymagają Java, więc musisz mieć zainstalowaną Java na swoim komputerze, aby uruchomić JMeter lub REST Assured.

Instalacja Apache JMeter jest bardzo prosta: przejdź do strony pobierania, wybierz plik ZIP lub TAR, pobierz archiwum, rozpakuj je i gotowe.

Przejdź do folderu, w którym rozpakowałeś archiwum, przejdź do podfolderu bin i uruchom jmeter.bat (lub podobny dla twojego systemu operacyjnego, jeśli jest inny niż Windows). Więcej szczegółowych informacji na temat konfiguracji Apache JMeter można znaleźć na tej stronie.

Instalacja REST Assured to trochę inne doświadczenie. REST Assured nie jest samodzielnym narzędziem. Jest to biblioteka Java. Aby z niego skorzystać, musisz założyć nowy projekt Java i dołączyć go jako bibliotekę do swojego projektu. Oczywiście istnieje wsparcie dla wielu narzędzi do budowania, więc możesz po prostu skierować swój program rozpoznawania zależności do jakiegoś publicznego repozytorium (Maven). Więcej szczegółowych informacji na temat konfiguracji REST Assured znajdziesz tutaj.

Dokumentacja

Dokumentację Apache JMeter można znaleźć na oficjalnej stronie JMeter. Zapewnia dość dokładną dokumentację od początku do złożonych funkcji, takich jak słuchacze. Ponadto na oficjalnej stronie JMeter można znaleźć linki do bardzo bogatych zasobów, takich jak samouczki wideo. Jeśli mniej interesuje Cię czytanie, a bardziej oglądanie, to zdecydowanie jest to dla Ciebie plus.

Dokumentację REST Assured, podobnie jak samo narzędzie/bibliotekę, można znaleźć w repozytorium Github. Ma dużą listę funkcji wymienionych w dokumentacji online z bardzo szczegółowymi wyjaśnieniami, jak coś osiągnąć. Jednak cała dokumentacja to jedna ogromna strona internetowa — nie jest to najbardziej przyjazny dla użytkownika sposób eksploracji narzędzia.

Automatyczne tworzenie i konserwacja testów REST

Apache JMeter, jako samodzielna aplikacja z graficznym interfejsem użytkownika (GUI), umożliwia tworzenie testów z GUI. Może to być przydatne, zwłaszcza ze względu na hierarchię jednostek wprowadzoną z JMeter — wszystko, co utworzysz w swoim teście, zostanie pokazane w formie drzewiastej w GUI JMeter.

Aby stworzyć test, nie trzeba posiadać umiejętności kodowania. GUI nie ogranicza jednak żadnych możliwości dotyczących planowania testów. Jeśli nadal chcesz dodać niestandardowe programowanie/przepływ, komponent(y) BeanShell pozwolą Ci to zrobić.

Zrzut ekranu GUI JMeter

Kiedy zapiszesz swój projekt JMeter, wszystko, co utworzyłeś, zostanie zapisane w jednym ogromnym pliku XML (z rozszerzeniem .jmx ). Generalnie, nawet w przypadku niewielkiej zmiany w jednym z testów, będziesz (bardzo prawdopodobne) musiał ponownie otworzyć projekt w GUI, aby dokonać zmiany.

Jeśli musisz współpracować z innymi nad tym samym plikiem projektu JMeter, ten ogromny plik XML nie będzie łatwy w utrzymaniu przy użyciu żadnego z systemów zarządzania kontrolą źródła (SCM) (takich jak Git, SVN, Perforce itp.).

Z kolei REST Assured wymaga umiejętności kodowania w języku Java do tworzenia testów. Nie ma przyjaznego dla użytkownika GUI do tworzenia testów. Jednak REST Assured umożliwia pisanie testów przy użyciu języka Gherkin (składnia podana-kiedy-to), więc nawet jeśli potrzebujesz pewnych umiejętności kodowania w Javie, testy są dość czytelne dla człowieka.

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

Ponieważ REST Assured jest biblioteką, a testy są faktycznie napisane w Javie, możesz organizować swoje testy w osobnych plikach Java, więc gdy potrzebujesz zmienić jeden test, wystarczy otworzyć jeden plik. Nie potrzebujesz GUI, więc możesz łatwo edytować test nawet przez terminal SSH. Współpraca z innymi jest dość prosta, ponieważ łatwo jest zarządzać plikami Java za pomocą dowolnego SCM.

Rodzaje testów REST

JMeter jest dobrze znanym narzędziem do testowania wydajności do testowania aplikacji i usług internetowych. Po wyjęciu z pudełka ma ładne opcje raportowania z różnymi typami wykresów, których można użyć do pokazania metryk testu wydajności.

Zrzut ekranu czasu reakcji JMeter

Z drugiej strony nie jest to również podstawowy scenariusz użycia JMeter. Za pomocą JMeter można tworzyć testy funkcjonalne dla interfejsów API REST, w tym asercję odpowiedzi.

Podstawowym scenariuszem użycia usługi REST Assured jest testowanie funkcjonalne usług interfejsu API REST. Ma nawet własny mechanizm asercji odpowiedzi (składnia Gherkin). Ponieważ REST Assured jest biblioteką Java, można ją łatwo zintegrować z testami jednostkowymi.

Jeśli chodzi o testowanie wydajności, REST Assured nie obsługuje testowania wydajności po wyjęciu z pudełka. Jeśli jednak chciałbyś użyć go do testowania wydajności, musiałbyś opracować własną niestandardową platformę do testowania wydajności wokół REST Assured.

Wykonanie testu

Testy JMeter można wywoływać na dwa sposoby.

Z interfejsu użytkownika, klikając przycisk Uruchom:

Zrzut ekranu przycisku uruchamiania JMeter

Z wiersza poleceń:

 jmeter -n -t your_script.jmx

Oficjalnym zaleceniem JMeter jest, aby nie uruchamiać testów wydajności za pomocą GUI, ponieważ testy będą działać wolniej (pod względem liczby żądań na sekundę) w porównaniu z uruchamianiem ich z wiersza poleceń.

Z kolei REST Assured wymaga osobnego programu uruchamiającego testy, na przykład jUnit lub TestNG (lub innego sposobu wykonywania kodu Java).

Z Eclipse za pomocą TestNG:

REST Assured Zrzut ekranu Eclipse

Z wiersza poleceń za pomocą np. narzędzia Ant build:

 ant run-tests

Rodzaje raportów

Apache JMeter, ze względu na swoje główne przeznaczenie, posiada dużą liczbę typów raportów, które możesz tworzyć na podstawie wyników swoich testów. Ponieważ możesz uruchamiać testy wydajności z JMeter, metryki wydajności są zwykle wyświetlane za pomocą wykresów takich jak ten:

Raport wydajności JMeter

Możesz dowiedzieć się więcej o raportach JMeter i typach raportów, które możesz tworzyć tutaj.

REST Assured sam w sobie nie tworzy żadnych raportów, więc zależy to od Ciebie i wybranego przez Ciebie frameworka testowego. Jednak po zintegrowaniu z niektórymi strukturami testów jednostkowych można uzyskać całkiem użyteczne raporty w formatach HTML, tekstowych lub XML.

Raport HTML gwarantowanego REST

Integracja z Jenkinsem

Jeśli chodzi o ciągłą integrację testowanych produktów, bardzo ważne jest zintegrowanie struktury automatyzacji testów z narzędziami CI zarówno do przeprowadzania testów, jak i raportowania wyników.

Testy automatyczne JMeter można łatwo zintegrować z Jenkins za pomocą wtyczki Performance, która pozwala skonfigurować działania po kompilacji i uzyskać ładnie wyglądającą stronę pulpitu nawigacyjnego ze strony zadań Jenkins.

Zrzut ekranu JMeter Jenkins

REST Assured można również łatwo zintegrować z Jenkins, ponieważ Jenkins ma wtyczki do prawie wszystkich frameworków testowych; na przykład wtyczka TestNG, która ponownie może stworzyć solidny wykres trendów dla wyników testów.

Zrzut ekranu Jenkinsa REST Assured

Aktywność społeczności

To kategoria, której nie da się łatwo zmierzyć. Aktywność społeczności zależy od wielu czynników, takich jak dojrzałość narzędzia czy liczba współpracowników.

Apache JMeter ma obecnie większą społeczność. Wynika to głównie z faktu, że JMeter pojawił się na rynku dawno temu i jest uważany za standard branżowy, jeśli chodzi o testowanie wydajności aplikacji i usług internetowych. JMeter publikuje oficjalne komunikaty co 5-6 miesięcy. Jego repozytorium GitHub jest bardzo aktywne, codziennie nowe zatwierdzenia. JMeter używa Bugzilli do śledzenia problemów i zawiera listę otwartych problemów, które są często zmieniane. Istnieje ponad 23000 wyników dla JMeter w wyszukiwaniu StackOverflow. Z serwisów społecznościowych JMeter ma oficjalne konto na Twitterze. Na Facebooku i LinkedIn nie ma oficjalnego konta dla JMeter, ale istnieje kilka grup, z których większa to ta grupa na Facebooku i ta grupa na LinkedIn.

REST Assured wkracza na scenę główną i stał się pierwszym wyborem, rekomendacją z wielu źródeł, jeśli chodzi o automatyzację testów funkcjonalnych usług REST API. Od dwóch lat REST Assured publikuje oficjalne wydania raz na 6 miesięcy. Repozytorium GitHub ma wielu współtwórców i jest nieco mniej aktywne niż JMeter, ale jest również bardzo aktywne. REST Assured śledzi problemy w repozytorium GitHub, więc wszystko jest w jednym miejscu. W StackOverflow istnieje ponad 2000 wyników wyszukiwania dla REST Assured, więc możemy powiedzieć, że jest znacznie niższy w porównaniu z wynikami wyszukiwania JMeter. Jeśli chodzi o grupy społecznościowe, znaleziono tylko grupę LinkedIn ze znacznie mniejszą liczbą członków w porównaniu do JMeter. Społeczność REST Assured może nie jest tak duża jak społeczność JMeter, ale jest bardzo aktywna.

Streszczenie

Zarówno JMeter, jak i REST Assured mają nad sobą przewagę. Jednak w oparciu o projekt, nad którym pracujesz, jeden z nich będzie lepiej pasował do automatyzacji testów REST API. Oba są bardzo solidne, mają przydatne opcje testowania, oferują ładne możliwości raportowania i można je łatwo zintegrować z niestandardowymi platformami testowymi.

Oto podsumowanie wszystkich kryteriów porównawczych omówionych w tym artykule dla tych dwóch popularnych narzędzi testowych REST:

Apache JMeter GWARANTOWANY ODPOCZYNEK
Wymaga umiejętności kodowania Nie Tak (Java)
Dokładne dokumenty TAk TAk
Testy funkcjonalności Tak (ale przesada) TAk
Test wydajności TAk Nie (po wyjęciu z pudełka)
Nadaje się do SCM (Git, P4...) Nie TAk
Raporty z testów TAk Nie
Integracja z narzędziami CI TAk TAk
Integracja z testami jednostkowymi Nie TAk
Przetestuj zrównoleglenie TAk TAk
Aktywność społeczności TAk TAk