REST Assured vs. JMeter: porównanie narzędzi testowych REST
Opublikowany: 2022-03-11Testowanie 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
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ć.
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.
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:
Z wiersza poleceń:
jmeter -n -t your_script.jmxOficjalnym 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:
Z wiersza poleceń za pomocą np. narzędzia Ant build:
ant run-testsRodzaje 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:
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.
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.
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.
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 |
