TABLE OF CONTENTS:
Wynajmujesz samochód, robisz przelew, rezerwujesz nocleg – a czy wiesz, że za tymi wszystkimi operacjami kryje się tajemnicze API? Jeśli API nie byłoby przetestowane na wszystkie możliwe sposoby, to jest spora szansa, że aplikacja, z której korzystasz, nie pozwoliłaby Ci na wykonanie konkretnych operacji. Z artykułu dowiesz się, czym jest testowanie API i dlaczego ten etap podczas tworzenia systemu lub aplikacji jest kluczowy dla Twoich przyszłych klientów i użytkowników.
API (Application Programming Interface) to interfejs umożliwiający komunikację między aplikacjami czy programami. API zawiera w sobie pewnego rodzaju specyfikację, która opisuje zasady i wymagania, które obie strony muszą spełnić, żeby komunikacja była możliwa i żeby mogły wymieniać dane.
Załóżmy, że wybierasz się na upragnione wakacje i chcesz wynająć samochód. Jeśli zależy Ci na konkretnym dostawcy, możesz sprawdzić cenę oraz dostępność na jego stronie internetowej. Ponieważ konkurencja nie śpi, zwykle lepiej skorzystać ze strony, która gromadzi oferty wielu dostawców tego typu usług. Taka wyszukiwarka nie ma dostępu do bazy danych poszczególnych dostawców aut, może jednak łączyć się z API każdego dostawcy i wyszukać najkorzystniejsze oferty.
Zanim jednak będziemy mieć pewność, że wszystko działa jak należy, API musi zostać przetestowane.
Testowanie API to taki rodzaj testowania oprogramowania, w którym sprawdzamy interfejsy programowania aplikacji. Koncentrujemy się na weryfikacji funkcjonalności, niezawodności, wydajności oraz bezpieczeństwa API. Nie skupiamy się na wyglądzie aplikacji, czy szerzej na GUI (graficznym interfejsie użytkownika, ang. graphical user interface). Najważniejsze jest przeanalizowanie wartości wejściowych i zwracanych danych.
Testy API są wykonywane z użyciem specjalistycznego oprogramowania. Dzięki niemu możemy wysyłać zapytania (request) do odpowiednich endpointów (linków, pod którym znajduje się usługa API), a następnie odczytywać oraz interpretować odpowiedź systemu (response).
Aby w pełni zrozumieć, jak ma działać dane API, musimy wiedzieć jakie kody odpowiedzi (kody HTTP) są oczekiwane dla poszczególnych żądań, jakich kodów możemy oczekiwać w przypadku nieudanych żądań oraz jakie komunikaty powinniśmy zobaczyć dla nieudanego żądania.
W przypadku REST API zapytania korzystają ze standardowych metod HTTP: GET, POST, PUT/PATCH, DELETE. Metody te umożliwiają działanie stron internetowych, natomiast w przypadku API są wykorzystywane do wykonywania podstawowych operacji na zasobach. Operacje te to CREATE, READ, UPDATE, DELETE, w skrócie CRUD.
Metoda HTTP | Opis | Akcja API |
POST | Tworzy nowy zasób | Create |
GET | Pobiera dane | Read |
PUT/PATCH | Aktualizuje istniejący zasób | Update |
DELETE | Usuwa dane | Delete |
Jeśli chodzi o kody odpowiedzi dla powyższych metod, wygląda to następująco.
Status odpowiedzi | Odpowiedź |
Informacyjne | 1XX |
Sukcesu | 2XX |
Przekierowań | 3XX |
Błędów po stronie klienta | 4XX |
Błędów po stronie serwera | 5XX |
Testowanie API jest możliwe już na bardzo wczesnym etapie rozwoju oprogramowania, dzięki czemu ewentualne błędy wykrywa się bardzo szybko, zanim jeszcze trafią do środowiska produkcyjnego. Pozwala to na oszczędność czasu, gdy na kolejnym etapie odbywają się testy interfejsu użytkownika GUI.
API powinno oczywiście działać zgodnie z dokumentacją, która opisuje dostępne endpointy, parametry, metody HTTP itp. Testy API mogą potwierdzić, że API działa zgodnie z tą dokumentacją.
Testy API mogą być zautomatyzowane dzięki czemu łatwo je powtarzać po każdej zmianie w kodzie źródłowym. Przykładowe narzędzia, które można wykorzystać do testowania API to Postman, SoapUI, Swagger, JMeter.
Podsumowując, warto pamiętać, że testowanie API jest kluczowym etapem w procesie tworzenia i rozwijania oprogramowania, zapewniającym zgodne z oczekiwaniami działanie interfejsów programistycznych oraz wysoką jakość aplikacji.
Jednym z ciekawych przykładów aplikacji, korzystającej z różnych źródeł danych przez API, jest system firmy Carnect, która jest wiodącym i światowym specjalistą w dziedzinie dystrybucji wynajmu samochodów. Mieliśmy okazję pracować nad usprawnieniem ich procesu fakturowania i stworzyliśmy rozwiązanie, które połączyło dwa systemy klienta, rewolucjonizując ten trudny proces, dzięki czemu zaoszczędzony czas i zasoby można przeznaczyć na zadania bardziej angażujące i wpływające na rozwój biznesu. Testy systemu były integralną częścią projektu – zweryfikowaliśmy wymagania funkcjonalne, przez co wiemy, że najważniejsze elementy działają zgodnie z założeniami.