Application Programming Interface (API) w dużym uproszczeniu jest kodem, który umożliwia komunikację pomiędzy różnymi procesami, programami i/lub systemami. Często wykorzystywany jest w relacjach klient/serwer, gdzie jeden proces dostarcza funkcjonalności do innego procesu.
Testowanie interfejsu programowania aplikacji API to testowanie komunikacji i często zawiera testowanie negatywne, np. aby sprawdzić odporność obsługi błędów. W pewnym sensie zbliżone jest do testowania graficznego interfejsu użytkownika (GUI).
Zorientowane jest głównie na ocenę wartości wejściowych i wyjściowych.
Testy, które należy wykonać:
- odporność i obsługa błędów, aby uniknąć niepoprawnych operacji
- testowanie kombinatoryjne wielu różnych interfejsów.
API są często używane w połączniu z innymi API, a pojedynczy interfejs może zawierać wiele parametrów, gdzie ich wartości mogą być łączone na wiele różnych sposobów. Należy przeprowadzić testowanie mechanizmu odzyskiwania i ponownego próbowania (recovery and retry) w celu uniknięcia:
- utraty transakcji
- awarii powiązanych z czasem.
Interfejs API musi mieć wysoką dostępność, co z kolei wymaga testów niezawodności przez publikujących API oraz dobrego wsparcia dla infrastruktury.
Testowanie API ma szczególne znaczenie dla systemów rozproszonych lub aplikacji ze zdalnym przetwarzaniem jak:
- wywołania w systemach operacyjnych
- architektura zorientowana na usługi (SOA)
- zdalne wywołanie procedur (RPC)
- usługi sieciowe
- systemy zbudowane z systemów
- ... i praktycznie każda aplikacja rozproszona.
Przy API natrafimy na możliwe trudności z użyciem specjalistycznych narzędzi (które nie posiadają GUI). Narzędzia te mogą być używane dla ustawienia inicjalnego środowiska, zebrania danych, wzbudzenia API i określenia wyników końcowych.
Typowymi defektami przy testowaniu API będą problemy z interfejsem, problemy z obsługą danych, problemy z czasem, utrata transakcji i duplikacja transakcji.