Interfejs programowania aplikacji (API) to kod umożliwiający komunikację między różnymi procesami, programami i/lub systemami. API są często stosowane do obsługi relacji klient/serwer, gdy jeden z procesów udostępnia pewien rodzaj funkcjonalności innym procesom.
W pewnym zakresie testowanie API przypomina testowanie graficznego interfejsu użytkownika (GUI). Technika koncentruje się na analizowaniu wartości wejściowych i zwracanych danych.
Testowanie negatywne jest często istotnym elementem badania API. Programiści, którzy wykorzystują API do uzyskiwania dostępu do usług zewnętrznych w stosunku do tworzonego przez nich kodu, mogą podejmować próby użycia API w sposób niezgodny z ich przeznaczeniem. Oznacza to konieczność wprowadzenia odpornych mechanizmów obsługi błędów, zapobiegających nieprawidłowemu działaniu. Może być niezbędne przeprowadzenie testowania kombinatorycznego różnych interfejsów, ponieważ API są często używane wspólnie, a każdy z nich może zawierać różne parametry, których wartości da się połączyć na różne sposoby. API są często luźno powiązane, co zwiększa prawdopodobieństwo wystąpienia utraconych transakcji i zakłóceń czasowych. Niezbędne jest zatem dokładne przetestowanie mechanizmów odtwarzania i ponawiania.
Organizacja, która udostępnia API, musi zagwarantować bardzo wysoką dostępność wszystkich usług. Często wymaga to rygorystycznego testowania niezawodności przez dostawcę usług oraz zespół obsługujący infrastrukturę.
Obszar zastosowania
Testowanie API staje się coraz ważniejszą techniką, ponieważ pojawia się coraz więcej systemów rozproszonych i korzystających ze zdalnego przetwarzania w celu przekierowania części zadań na inne procesory. Można tu wspomnieć na przykład o wywołaniach systemów operacyjnych, architekturach zorientowanych na usługi (SOA), zdalnych wywołaniach procedur (RPC) i właściwie wszystkich innych rodzajach aplikacji rozproszonych. Testowanie interfejsów API jest szczególnie przydatne w przypadku systemów złożonych z podsystemów.
Ograniczenia/trudności
Bezpośrednie testowanie API na ogół wymaga zastosowania specjalistycznych narzędzi przez technicznego analityka testowego. Ponieważ zwykle nie istnieje interfejs graficzny bezpośrednio powiązany z API, do skonfigurowania początkowego środowiska, serializacji danych, wywołania funkcji API i określenia wyniku wykorzystuje się odpowiednie narzędzia.
Pokrycie
Testowanie API to typ prowadzenia testów, a nie opis konkretnego poziomu pokrycia. Test interfejsu API powinien obejmować co najmniej wszystkie wywołania funkcji API oraz uwzględniać wszystkie poprawne wartości i sensowne wartości niepoprawne.
Typy defektów
W trakcie testów interfejsów API można wykryć różne rodzaje błędów. Są to między innymi problemy dotyczące obsługi danych, zależności czasowych, utraty transakcji i duplikowania transakcji.