Chciałbym napisać zautomatyzowany pakiet testowy dla REST API. Gdy wykonujemy nowe usługi, chcielibyśmy sprawdzić, czy wszystkie wcześniej utworzone usługi działają zgodnie z oczekiwaniami. Jakieś sugestie dotyczące najlepszych narzędzi do osiągnięcia tego celu? Wiem, że istnieją narzędzia takie jak Apigee, które pozwalają testować 1 usługę naraz, ale chcielibyśmy mieć sposób na przetestowanie wszystkich usług za pomocą jednego kliknięcia.
api
rest
testing
automation
Prasad
źródło
źródło
Odpowiedzi:
W mojej pracy ostatnio zebraliśmy kilka zestawów testów napisanych w Javie, aby przetestować niektóre zbudowane przez nas API RESTful. Nasze usługi mogą wywoływać inne interfejsy API RESTful, od których zależą. Podzieliliśmy go na dwa apartamenty.
Zdecydowanie poleciłbym to zrobić. U nas zadziałało naprawdę dobrze. Główne zalety to:
Ten pakiet wymaga od nas skonfigurowania danych w usługach równorzędnych, co oznacza, że napisanie testów zajmuje zwykle więcej czasu. W miarę możliwości używamy klientów REST do konfigurowania danych w usługach równorzędnych.
Testy w tym pakiecie zwykle trwają dłużej, więc większość naszego pokrycia umieszczamy w pakiecie 1. To powiedziawszy, ten pakiet ma nadal wyraźną wartość, ponieważ nasze makiety w pakiecie 1 mogą nie zachowywać się tak, jak prawdziwe usługi.
źródło
Frisby to platforma do testowania REST API oparta na node.js i Jasmine, która sprawia, że testowanie punktów końcowych API jest łatwe, szybkie i przyjemne. http://frisbyjs.com
Przykład:
źródło
Współpracowałem z jednym z moich współpracowników, aby uruchomić framework PyRestTest z tego powodu: https://github.com/svanoort/pyresttest
Chociaż możesz pracować z testami w Pythonie, normalny format testu to YAML.
Przykładowy zestaw testów dla podstawowej aplikacji REST - weryfikuje, czy interfejsy API odpowiadają poprawnie, sprawdzając kody stanu HTTP, ale można również sprawić, by badał treści odpowiedzi:
źródło
Użyłem interfejsu SOAP do testów funkcjonalnych i zautomatyzowanych. SOAP UI umożliwia uruchamianie testów jednym kliknięciem przycisku. Istnieje również strona testowa sterowników sprężyn stworzona przez Teda Younga. W tym artykule stworzyłem testy jednostkowe Rest w naszej aplikacji.
źródło
Jednym z problemów związanych z wykonywaniem testów automatycznych dla interfejsów API jest to, że wiele narzędzi wymaga skonfigurowania i uruchomienia serwera API przed uruchomieniem zestawu testów. Prawdziwą zaletą może być posiadanie struktury testów jednostkowych, która jest w stanie uruchamiać i wysyłać zapytania do API w całkowicie zautomatyzowanym środowisku testowym.
Opcją, która jest dobra dla interfejsów API zaimplementowanych w Node.JS / Express, jest użycie mokki do automatycznego testowania. Oprócz testów jednostkowych można łatwo napisać testy funkcjonalne względem interfejsów API, podzielone na różne zestawy testów. Możesz uruchomić serwer API automatycznie w lokalnym środowisku testowym i skonfigurować lokalną testową bazę danych. Używając make, npm i serwera kompilacji, możesz utworzyć cel „make test” oraz kompilację przyrostową, która będzie uruchamiać cały zestaw testów za każdym razem, gdy fragment kodu zostanie przesłany do repozytorium. Dla naprawdę wybrednego programisty wygeneruje nawet ładny raport o pokryciu kodu HTML, pokazujący, które części bazy kodu są objęte testami, a które nie. Jeśli brzmi to interesująco, oto wpis na blogu zawierający wszystkie szczegóły techniczne.
Jeśli nie używasz węzła, to niezależnie od tego, jaki jest framework do testów jednostkowych defacto dla tego języka (jUnit, cucumber / capybara, itp.) - spójrz na jego obsługę uruchamiania serwerów w lokalnym środowisku testowym i uruchamiania zapytań HTTP. Jeśli jest to duży projekt, wysiłek związany z automatycznym testowaniem API i ciągłą integracją opłaci się dość szybko.
Mam nadzieję, że to pomoże.
źródło
Runscope to usługa oparta na chmurze, która może monitorować interfejsy API sieci Web za pomocą zestawu testów. Testy można zaplanować i / lub uruchomić za pomocą sparametryzowanych podpięć sieci Web. Testy można również przeprowadzać w centrach danych na całym świecie, aby zapewnić akceptowalny czas reakcji dla globalnej bazy klientów.
Bezpłatna warstwa Runscope obsługuje do 10 000 żądań miesięcznie.
Zastrzeżenie: Jestem zwolennikiem programisty Runscope.
źródło
Wdrożyłem wiele przypadków automatyzacji opartych na REST Assured, jave DSL do testowania restful service. https://code.google.com/p/rest-assured/
Składnia jest prosta, obsługuje json i xml. https://code.google.com/p/rest-assured/wiki/Usage
Wcześniej próbowałem SOAPUI i miałem problemy z darmową wersją. Poza tym skrzynki są w plikach xml, które trudno jest rozszerzyć i ponownie wykorzystać, po prostu mi się nie podoba
źródło
Możesz także skorzystać z biblioteki Rest Assured. Demo z przykładowym skryptem można znaleźć pod adresem http://artoftesting.com/automationTesting/restAPIAutomationGetRequest.html
źródło
Automatyzacja testów API, nawet raz na minutę, jest usługą dostępną przez RightAPI . Tworzysz scenariusze testowe i wykonujesz je. Gdy testy wykonają to, czego od nich oczekujesz, możesz je zaplanować. Testy można łączyć ze sobą w scenariuszach wymagających uwierzytelniania. Na przykład możesz mieć test, który wysyła żądanie OAuth do Twittera i tworzy udostępniony token, który może być następnie użyty w dowolnym innym teście. Testy mogą również mieć dołączone kryteria walidacji, aby zapewnić kody statusu http, a nawet szczegółową kontrolę odpowiedzi za pomocą javascript lub walidacji schematu. Po zaplanowaniu testów możesz ustawić alerty powiadamiające Cię, gdy tylko dany test nie przejdzie walidacji lub zachowuje się poza ustalonymi zakresami czasu odpowiedzi lub rozmiaru odpowiedzi.
źródło
Użyłem klas TestNG i Apache HTTP do zbudowania własnego szkieletu testowego REST API, koncepcję tę opracowałem po dwóch latach pracy w Selenium.
Wszystko jest takie samo, z wyjątkiem tego, że powinieneś używać klas Apache HTTP zamiast klas Selenium.
spróbuj, to naprawdę urocze i dobre, masz całą moc, aby dostosować strukturę testową do swoich najpełniejszych możliwości.
źródło