Interfejs programowania aplikacji (ang. API – Application Programming Interface) to zdefiniowany interfejs umożliwiający komunikację z innym systemem, który dostarcza go wraz z określonymi usługami, takimi jak dostęp do zdalnego zasobu. Typowe usługi to:
- usługi sieciowe (ang. web services),
- korporacyjne magistrale usług (ang. enterprise service buses - ESB),
- bazy danych,
- komputery głównego szeregu (ang. mainframes)
- webowe interfejsy użytkownika (ang. Web UIs).
Testowanie API to w zasadzie rodzaj testowania, a nie konkretna technika. W pewnym zakresie testowanie API przypomina testowanie graficznego interfejsu użytkownika (ang. GUI – graphical user interface). Testowanie koncentruje się na analizowaniu wartości wejściowych i zwracanych danych.
Istotnym elementem badania API jest często testowanie negatywne. Programiści, którzy wykorzystują interfejsy API do uzyskiwania dostępu do usług zewnętrznych w stosunku do tworzonego przez nich kodu, mogą podejmować próby użycia interfejsów API w sposób niezgodny z ich przeznaczeniem. Oznacza to konieczność wprowadzenia odpornych mechanizmów obsługi błędów, zapobiegających niepoprawnemu działaniu. Może być niezbędne przeprowadzenie testowania kombinatorycznego wielu interfejsów, ponieważ interfejsy 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.
Interfejsy 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 interfejs API, musi zagwarantować bardzo wysoką dostępność wszystkich usług. Na ogół wymaga to rygorystycznego testowania niezawodności oraz zapewnienia obsługi infrastruktury przez wydawcę/dostawcę API.
Testowanie API jest szczególnie przydatne w przypadku systemów złożonych z podsystemów (systemy systemów), ponieważ pojawia się coraz więcej systemów rozproszonych i korzystających ze zdalnego przetwarzania w celu przekierowania części zadań na inne procesory. Przykłady takich zastosowań:
- wywołania systemu operacyjnego,
- architektury zorientowane na usługi (ang. SOA – service-oriented architectures),
- zdalne wywołania procedur (ang. RPC – remote procedure calls),
- usługi internetowe (Web services).
Efektem konteneryzacji oprogramowania jest podział programu na kilka kontenerów, które komunikują się ze sobą z wykorzystaniem mechanizmów takich jak wymienione na powyższej liście. Testowanie API powinno uwzględnić również takie interfejsy.
Bezpośrednie testowanie API na ogół wymaga zastosowania specjalistycznych narzędzi. Ponieważ zwykle nie istnieje interfejs graficzny bezpośrednio powiązany z interfejsem API, do skonfigurowania początkowego środowiska, serializacji danych, wywołania funkcji API i określenia wyniku wykorzystuje się odpowiednie narzędzia.
Testowanie API to opis typu testów, a nie opis konkretnego poziomu pokrycia. Test interfejsu API powinien obejmować co najmniej wywołania funkcji API z realistycznymi, poprawnymi wartościami parametrów wejściowych oraz z wartościami niepoprawnymi w celu sprawdzenia obsługi wyjątków. W bardziej szczegółowych testach interfejsów API można przyjąć, że wszystkie wywoływalne obiekty powinny zostać sprawdzone co najmniej raz, albo że zrealizowano co najmniej raz każde możliwe wywołanie każdej funkcji API.
Reprezentacyjny transfer stanu (ang. Representational State Transfer, REST) jest stylem architektury oprogramowania. Wykorzystujące go usługi sieciowe (web serwisy), tzw. usługi RESTful, pozwalają na dostęp do zasobów sieciowych poprzez wykorzystanie jednolitego zbioru bezstanowych operacji. Istnieje szereg kryteriów pokrycia dla interfejsów API usług sieciowych RESTful. Można je podzielić na dwie grupy: kryteria pokrycia wejścia i kryteria pokrycia wyjścia. Kryteria wejścia mogą wymagać wykonania wszystkich możliwych operacji API, wykorzystanie wszystkich możliwych parametrów funkcji API, pokrycie sekwencji operacji (wywołań funkcji) API. Kryteria wyjścia mogą wymagać wygenerowania wszystkich możliwych kodów statusów wykonania operacji (poprawnych oraz błędnych) oraz wygenerowania odpowiedzi zawierających zasoby o wszystkich możliwych własnościach (lub typach własności).
Typy defektów, które mogą zostać wykryte w trakcie testowania API, są dość różne. Przykłady:
- problemy dotyczące obsługi danych,
- problemy zależności czasowych,
- utraty transakcji,
- duplikowania transakcji,
- problemy z obsługą sytuacji wyjątkowych.
Powyższe, z niewielkimi przeróbkami, pochodzi z sylabusa ISTQB® Poziomu Zaawansowanego Techniczny Analityk Testów 2021 v4.0, w wersji polskiej.
Jeśli chcesz dowiedzieć się więcej o testowaniu technicznym w ujęciu certyfikacji ISTQB®, zapraszamy na nasze szkolenia. W agendzie między innymi:
- Zadania technicznego analityka testów w testowaniu opartym na ryzyku
- Białoskrzynkowe techniki testowania
- Analiza statyczna i dynamiczna
- Charakterystyki jakościowe w testach technicznych
- Przeglądy
- Narzędzia testowe i automatyzacja testów
Rezerwacji miejsc można dokonać poprzez nasz formularz.
Więcej na: https://testerzy.pl/szkolenia/teoria-testowania/istqb-advanced-technical-test-analyst-certyfikowany-tester-poziom-zaawansowany-techniczny-analityk-testow
A jeśli preferujesz praktykę od podstaw zapraszamy na "Testowanie REST API dla początkujących". Dowiesz się o:
- Czym jest REST API
- Komunikacja z REST API oraz metody GET, POST, PUT i DELETE
- Omówienie i analiza aplikacji web przygotowanej do testowania
- Biblioteka requests i wysyłanie zapytań protokołem HTTP
- Pisanie prostych testów oraz ćwiczenia
- Omówienie oraz budowanie bazy frameworka testowego.
- Podział frameworka na czytelne warstwy oraz ich omówienie
- Przetwarzanie odpowiedzi REST API i konwertowanie ich na obiekty
- Autoryzacja basic authentication oraz wbudowanie automatycznej autoryzacji do frameworka
- Obsługiwanie zwrotnych kodów HTTP oraz ich weryfikacja
- Dziedziczenie klasy unittest.TestCase oraz rozbudowanie jej o własne metody testowe
- Pisanie testów automatycznych przy użyciu frameworka
- Uruchamianie testów jedną komendą - Makefile.
Więcej na: https://testerzy.pl/szkolenia/szkolenia-narzedziowe/testowanie-rest-api-dla-poczatkujacych
Formularz rezerwacji miejsca na szkoleniu dostępny jest tutaj.