Testowanie REST API:
Jak zacząć i co warto wiedzieć ?
Niniejsza publikacja stanowi obszerne kompendium wiedzy, poświęcone fundamentalnym aspektom związanym z testowaniem interfejsów REST API. Skupia się na zalecanych podejściach i praktykach, które mają na celu efektywne przeprowadzanie testów. Kluczowym elementem skutecznego testowania API jest znalezienie równowagi między dokładnością, kompleksowością a efektywnością procesu testowania. Publikacja ta została stworzona w celu dostarczenia wskazówek wspierających ten proces, zwłaszcza dla osób zaczynających swoją przygodę z testowaniem interfejsów REST API.
Co to jest API ?
Zanim przejdziemy do tematu związanego z testowaniem samego API, warto zrozumieć, czym ogólnie jest API, do czego jest wykorzystywane oraz w jaki sposób jest zbudowane. API, stanowi zbiór reguł, protokołów i narzędzi, które umożliwiają jednej aplikacji lub serwisowi korzystanie z funkcji lub zasobów innego programu, serwisu lub platformy. Pełni ono rolę pośrednika, umożliwiając komunikację między różnymi aplikacjami, co z kolei pozwala im na wymianę danych. API to interfejs, który precyzyjnie definiuje, w jaki sposób dwie różne aplikacje mogą komunikować się, jakie zapytania mogą być wysyłane, oraz jakich odpowiedzi można się spodziewać. Dużą zaletą API jest to, że umożliwia jednej aplikacji korzystanie z drugiej bez konieczności dokładnego zrozumienia oraz posiadania wiedzy o jej wewnętrznej implementacji. API są kluczowym elementem współczesnych aplikacji, umożliwiających integrację między różnymi systemami.
Podczas codziennego użytkowania różnych aplikacji wielokrotnie mieliśmy do czynienia z interfejsami API. Poniżej kilka popularnych przykładów interfejsów API, z którymi jest duże prawdopodobieństwo, że miało się do czynienia przy korzystaniu z innych aplikacji:
Podczas pracy z API możemy najczęściej spotkać następujące typy interfejsów API, takie jak REST API, SOAP, GraphQL, oraz kilka innych. REST API jest obecnie najbardziej popularnym interfejsem API, jednak należy pamiętać, że nie jest to jedyny rodzaj interfejsu, a wybór zależy od konkretnego przypadku. W zależności od typu API, który testujemy, konieczne może być użycie odpowiednich narzędzi do jego weryfikacji. W tej publikacji skoncentrujemy się na testowaniu interfejsów REST API. Samo REST API to styl architektoniczny oparty na zasadach API. Wykorzystuje standardowe metody HTTP (GET, POST, PUT, DELETE) do manipulacji zasobami za pomocą identyfikatorów URL. Jest szeroko stosowany w aplikacjach webowych oraz mobilnych.
Jak działa REST API
Działanie API często jest porównywane do roli kelnera w restauracji. Rola tego „kelnera” polega na dostarczeniu tego, co klient (ang. REQUEST) zamówił do obsługi. Zamówione „potrawy” są dostarczane z powrotem w formie odpowiedzi (ang. RESPONSE). Dane zwracane do klienta są zazwyczaj w formacie JSON lub XML, dlatego warto zaznajomić się z tymi sposobami reprezentacji struktury danych. Klientem API może być przeglądarka internetowa, aplikacja mobilna, lub narzędzie takie jak Postman.
Komunikacja z API zachodzi poprzez dostęp do jego zasobów znajdujących się w tzw. punkcie końcowym. W trakcie weryfikacji API często będziesz mieć do czynienia z pojęciem tzw. endpointa, który to właśnie jest miejscem, które podlega weryfikacji.
Jak widać na przykładzie po prawej stronie dostęp do endpontu odbywa się poprzez protokół HTTP. Trzeba jednak wiedzieć że REST jest niezależy od protokołu natomiast najczęściej jest on jednak łączony z HTTP. Jednym z elementów protokołu HTTP są metody HTTP które pozwalają na zdefiniowanie rodzaju akcji jaka ma zostać wykonana po stronie serwera. Takich metod jest wiele natomiast mamy 5 podstawowych które przedstawia tabelka poniżej. Jakie metody możemy wykonać w danym żądaniu do endpointa powinna określać dokumentacja.
Widzimy, że REST API wykorzystuje cztery podstawowe operacje, które często pojawiają się również w kontekście operacji bazodanowych i są opisane akronimem CRUD. Operacje CRUD w kontekście REST API odnoszą się do podstawowych operacji, które można wykonać na zasobach przy użyciu protokołu REST. Akronim CRUD odnosi się do czterech podstawowych operacji, o których już wspomniano powyżej.
Zobaczmy sobie przykłady 4 podstawowych operacji:
Operacje CRUD stanowią podstawową funkcjonalność wielu systemów opartych na REST API, umożliwiając interakcję z zasobami poprzez standardowe metody HTTP.
Po co testować Rest API
Testowanie interfejsów API odgrywa kluczową rolę w procesie tworzenia oprogramowania wysokiej jakości. Podczas testowania interfejsów API skupiamy się na kilku fundamentalnych aspektach, na które zwracamy uwagę przy testach interfejsów REST API.
Na co zwracać uwagę przy testach API ?
Podczas weryfikacji i testowania interfejsów API poprzez wysyłanie żądań i badanie odpowiedzi, należy zwrócić uwagę na następujące elementy:
Testowanie interfejsów API
Kiedy podchodzimy do testów API, jedną z największych korzyści, jakie możemy czerpać, to fakt, że testowanie API możemy przeprowadzać na wczesnym etapie produkcji systemów, ponieważ komponent API często jest opracowywany przed interfejsem użytkownika. Warto przypomnieć sobie piramidę testów automatycznych, która przedstawia, co warto automatyzować oraz w jakiej skali, ponieważ powinno to ogólnie wpływać na to, w jaki sposób podchodzimy do automatyzacji testów naszych systemów.
Korzyści płynące z testowania API
Przyjrzyjmy się teraz podstawowym korzyściom wynikającym z testowania interfejsów REST:
Ograniczenia podczas testowania API
Przyjrzyjmy się teraz podstawowym ograniczeniom wynikającym z testowania interfejsów REST:
Testy API – Manualnie czy automatycznie ?
Testy API mogą być wykonywane w sposób manualny i/lub automatyczny. Wszystko zależy od potrzeb, zasobów oraz kontekstu projektu. Testy API wykonywane manualnie polegają na manualnym wysyłaniu zapytań do interfejsu APIi ręcznym sprawdzaniu odpowiedzi oraz istotnych dla Nas informacji. Drugim podejściem jest wykonywanie testów w sposób automatyczny przy użyciu odpowiednich narzędzi który automatyzują ten proces. W praktyce często używa się modelu hybrydowego, gdzie testy automatyczne używane są do sprawdzania stabilności i powtarzalnych scenariuszy, a testy ręczne są wykorzystywane do bardziej zaawansowanego eksploracyjnego testowania i analizy przypadków brzegowych
Czy muszę potrafić programować aby testować API ?
Na początku nie jest konieczne abyś był ekspertem w programowaniu aby rozpocząć testować API, ale podstawowa znajomość programowania może być pomocna i pozwala na zrozumienie jak działa API oraz pozwoli na tworzenie bardziej zaawansowanych testów. Dużo zależy też z jakich narzędzi do testowania API będziesz korzystał.
Co powinienem znać aby testować REST API
Ważne jest zrozumienie protokołów komunikacyjnych takich jak HTTP/HTTPS bo są one często podstawą działania REST API i bez ich poznania może być ciężko weryfikować API. Dodatkowo należy poznać formatów danych takich jak JSON czy XML jak są zbudowane jak tworzyć dane z wykorzystaniem tych formatów bo są one wykorzysytwane do przesyłania danych poprzez API.
Jakie mamy narzędzia do testowania API ?
Wybór narzędzia do testowania API zależy od wielu czynników, takich jak specyfikacja projektu, preferencje zespołu, rodzaju API które chcemy weryfikować, kompetencji zespołu czy posiadanych pieniędzy które możemy wykorzystać na zakup / przeszkolenie osób z zespołu. Przed ostatecznym wyborem narzędzia warto przetestować kilka narzędzi, aby znaleźć to, które najlepiej spełnia twoje konkretne potrzeby i Twojego zespołu. Podstawowe narzędzia które mogą być użyteczne w testach API to: