Samouczek testowania API: Co to jest automatyzacja testów API?
Co to jest testowanie API?
Testowanie API jest typem testowania oprogramowania, który weryfikuje interfejsy programowania aplikacji (API). Celem testowania API jest sprawdzenie funkcjonalności, niezawodności, wydajności i bezpieczeństwa interfejsów programowania. W testowaniu API zamiast używania standardowych danych wejściowych użytkownika (klawiatury) i danych wyjściowych, używasz oprogramowania do wysyłania wywołań do API, pobierania danych wyjściowych i zapisywania odpowiedzi systemu. Testy API bardzo różnią się od testów GUI i nie koncentrują się na wyglądzie i działaniu aplikacji. Koncentrują się głównie na warstwie logiki biznesowej architektury oprogramowania.
W tle API (interfejs programowania aplikacji) to interfejs obliczeniowy umożliwiający komunikację i wymianę danych pomiędzy dwoma odrębnymi systemami oprogramowania. System oprogramowania wykonujący interfejs API zawiera kilka funkcji/podprogramów, które może wykonać inny system oprogramowania. API definiuje żądania, które można wysyłać, sposób wysyłania żądań, formaty danych, których można używać itp. pomiędzy dwoma systemami oprogramowania.
Konfiguracja środowiska automatyzacji testów API
Automatyzacja API Testowanie wymaga aplikacji, z którą można wchodzić w interakcję poprzez API. Aby przetestować interfejs API, musisz to zrobić
- Użyj narzędzia testowego do sterowania interfejsem API
- Napisz własny kod, aby przetestować API
Kilka punktów wartych odnotowania
- Testowanie API różni się od innych typów testowania oprogramowania, ponieważ GUI nie jest dostępne, a mimo to wymagane jest skonfigurowanie środowiska początkowego, które wywołuje API z wymaganym zestawem parametrów, a następnie ostateczne sprawdzenie wyniku testu.
- Dlatego skonfigurowanie środowiska testowego do testowania automatyzacji interfejsu API wydaje się nieco skomplikowane.
- Bazę danych i serwer należy skonfigurować zgodnie z wymaganiami aplikacji.
- Po zakończeniu instalacji należy wywołać funkcję API w celu sprawdzenia, czy API działa.
Rodzaje danych wyjściowych interfejsu API
Dane wyjściowe API mogą być
- Dowolny rodzaj danych
- Status (powiedz Pass lub Fail)
- Wywołaj inną funkcję API.
Przyjrzyjmy się przykładowi każdego z powyższych typów w tym samouczku dotyczącym testowania interfejsu API
Dowolny typ danych
Przykład: Istnieje funkcja API, która powinna dodać dwie liczby całkowite.
Long add(int a, int b)
Liczby muszą być podane jako parametry wejściowe. Wyjście powinno być sumą dwóch liczb całkowitych. To wyjście musi zostać zweryfikowane z oczekiwanym wynikiem.
Należy wykonać połączenie, np
add (1234, 5656)
Jeśli liczba przekracza limit liczb całkowitych, należy obsłużyć wyjątki.
Status (powiedz Pass lub Fail)
Rozważ poniższą funkcję API –
- Zamek()
- Odblokować()
- Usuwać()
Jako wynik zwracają dowolną wartość, taką jak Prawda (w przypadku powodzenia) lub Fałsz (w przypadku błędu).
Bardziej dokładny Przypadek testowy można wywołać funkcje w dowolnym skrypcie, a następnie sprawdzić, czy nastąpiły zmiany w bazie danych lub w interfejsie graficznym aplikacji.
Wywołanie innego API/zdarzenia
W tym przypadku wywołujemy jedną z funkcji API, która z kolei wywoła inną funkcję.
Przykładowo – Funkcja First API może służyć do usunięcia określonego rekordu w tabeli i ta funkcja z kolei wywołuje inną funkcję w celu ODŚWIEŻENIA bazy danych.
Przypadki testowe do testowania API:
Na czym opierają się przypadki testowe testów API
- Wartość zwracana na podstawie warunku wejściowego: testowanie jest stosunkowo łatwe, ponieważ można zdefiniować dane wejściowe i uwierzytelnić wyniki
- Nic nie zwraca: Jeśli nie ma wartości zwracanej, należy sprawdzić zachowanie API w systemie
- Wywołaj inne API/zdarzenie/przerwanie: Jeśli wyjście interfejsu API wyzwala jakieś zdarzenie lub przerwanie, należy śledzić te zdarzenia i odbiorniki przerwań
- Zaktualizuj strukturę danych: Aktualizacja struktury danych będzie miała pewien skutek lub wpływ na system i należy to uwierzytelnić
- Zmodyfikuj niektóre zasoby: Jeśli wywołanie API modyfikuje niektóre zasoby, należy je zweryfikować, uzyskując dostęp do odpowiednich zasobów
Podejście do testowania API
Podejście do testowania API to predefiniowana strategia lub metoda, którą zespół QA zastosuje w celu przeprowadzenia testów API po przygotowaniu kompilacji. Testowanie to nie obejmuje kodu źródłowego. Podejście do testowania API pomaga lepiej zrozumieć funkcjonalności, techniki testowania, parametry wejściowe i wykonanie przypadków testowych.
Poniższe punkty pomogą użytkownikowi w przeprowadzeniu testu interfejsu API:
- Zrozumienie funkcjonalności programu API i jasne określenie zakresu programu
- Stosuj techniki testowania, takie jak klasy równoważności, analiza wartości brzegowych i zgadywanie błędów, a także pisz przypadki testowe dla interfejsu API
- Parametry wejściowe interfejsu API muszą być odpowiednio zaplanowane i zdefiniowane
- Wykonaj przypadki testowe i porównaj oczekiwane i rzeczywiste wyniki.
Różnica między testowaniem API a testowaniem jednostkowym
Testy jednostkowe | Testowanie API |
---|---|
Deweloperzy to wykonują | Testerzy to wykonują |
Testowana jest osobna funkcjonalność | Testowana jest kompleksowa funkcjonalność |
Programista może uzyskać dostęp do kodu źródłowego | Testerzy nie mają dostępu do kodu źródłowego |
W grę wchodzi także testowanie interfejsu użytkownika | Testowane są tylko funkcje API |
Testowane są tylko podstawowe funkcjonalności | Wszystkie problemy funkcjonalne są testowane |
Ograniczony zakres | Szerszy zakres |
Zwykle biegał przed odprawą | Uruchomienie testu po utworzeniu kompilacji |
Jak przetestować API
Testowanie automatyzacji interfejsu API powinno obejmować co najmniej następujące metody testowania poza zwykłym procesem SDLC
- Testowanie odkrywania: Grupa testowa powinna ręcznie wykonać zestaw wywołań udokumentowanych w interfejsie API, np. sprawdzić, czy konkretny zasób udostępniony przez interfejs API może zostać odpowiednio wyszczególniony, utworzony i usunięty
- Test użyteczności: Testowanie to sprawdza, czy interfejs API jest funkcjonalny i przyjazny dla użytkownika. I czy API dobrze integruje się również z inną platformą
- Testowanie bezpieczeństwa: Testowanie to obejmuje wymagany typ uwierzytelniania i to, czy wrażliwe dane są szyfrowane za pośrednictwem protokołu HTTP, czy obu
- Automatyczne testy: Testowanie API powinno zakończyć się stworzeniem zestawu skryptów lub narzędzia, które będzie można wykorzystać do regularnego uruchamiania API
- Dokumentacja: Zespół testowy musi upewnić się, że dokumentacja jest odpowiednia i zapewnia wystarczającą ilość informacji do interakcji z API. Dokumentacja powinna stanowić część produktu końcowego
Najlepsze praktyki testowania API:
- Przypadki testowe API należy pogrupować według kategorii testów
- Oprócz każdego testu należy dołączyć deklaracje wywoływanych interfejsów API.
- Wybór parametrów powinien być wyraźnie wspomniany w samym przypadku testowym
- Nadaj priorytet wywołaniom funkcji API, aby testerzy mogli łatwo je testować
- Każdy przypadek testowy powinien być możliwie niezależny i niezależny od zależności
- Unikaj „łączenia testów” w swoim rozwoju
- Należy zachować szczególną ostrożność podczas obsługi funkcji wywołań jednorazowych, takich jak – Usuń, Zamknij okno itp.
- Kolejność połączeń powinna być przeprowadzona i dobrze zaplanowana
- Aby zapewnić pełne pokrycie testami, utwórz przypadki testowe API dla wszystkich możliwych kombinacji wejściowych API.
Rodzaje błędów wykrywanych podczas testów API
- Nie radzi sobie z błędami w należyty sposób
- Nieużywane flagi
- Brakująca lub zduplikowana funkcjonalność
- Problemy z niezawodnością. Trudności z połączeniem i uzyskaniem odpowiedzi API.
- Problemy z bezpieczeństwem
- Problemy z wielowątkowością
- Problemy z wydajnością. Czas odpowiedzi API jest bardzo długi.
- Niewłaściwe błędy/ostrzeżenie dla osoby dzwoniącej
- Niepoprawna obsługa prawidłowych wartości argumentów
- Dane odpowiedzi nie mają prawidłowej struktury (JSON lub XML)
Jak przeprowadzić automatyzację testów API
1) Gotowe API
Gotowe API to wiodące narzędzie do testowania funkcjonalności, bezpieczeństwa i obciążenia RESTful, SOAP, GraphQL i innych usług internetowych. W jednej intuicyjnej platformie otrzymasz trzy potężne narzędzia: ReadyAPI Test, ReadyAPI Performance i ReadyAPI Virtualization. Za pomocą tych narzędzi można przeprowadzać testy funkcjonalne, bezpieczeństwa i wydajności/obciążenia. Za pomocą naszego niezawodnego narzędzia do wirtualizacji możesz także wyśmiewać interfejsy API i usługi internetowe. Dodatkowo możesz łatwo zintegrować swój Potok CI/CD podczas każdej budowy.
Podstawowe dane
- ReadyAPI można zintegrować z dowolnym środowiskiem.
- Posiada funkcję inteligentnej asercji, która pozwala szybko tworzyć zbiorcze potwierdzenia dla setek punktów końcowych.
- Natywne wsparcie dla Git, Docker, Jenkins, Azure, itp.
- Obsługuje wiersz poleceń do testów automatycznych.
- Obsługuje równoległe wykonywanie testów funkcjonalnych i kolejkowanie zadań.
- Promoponowne wykorzystanie kodu tes
- Usuwa zależności podczas testowania i programowania.
14-dniowy bezpłatny okres próbny (karta kredytowa nie jest wymagana)
Poniższe samouczki zawierają szczegółowy przewodnik po automatyzacji testów API.
- Jak przetestować API z REST Assured
- Jak przetestować API za pomocą Postman
- Jak przetestować API za pomocą UFT
Poza tym istnieją inne narzędzia do testowania API. Sprawdź je tutaj
Wyzwania testowania API
Wyzwania związane z testowaniem API obejmują:
- Główne wyzwania związane z testowaniem Web API to Kombinacja parametrów, wybór parametrów i sekwencjonowanie wywołań
- Nie ma dostępnego GUI przetestować aplikację, która sprawia trudno podać wartości wejściowe
- Walidacja i weryfikacja wyników w innym systemie jest dla testerów nieco trudna
- Testerzy muszą znać dobór i kategoryzację parametrów
- Funkcja obsługi wyjątków trzeba przetestować
- Znajomość kodowania jest niezbędna dla testerów
Podsumowanie
API składa się z zestawu klas/funkcji/procedur reprezentujących warstwę logiki biznesowej. Jeśli API nie zostanie odpowiednio przetestowane, może to spowodować problemy nie tylko w aplikacji API, ale także w aplikacji wywołującej. Jest to niezbędny test w inżynierii oprogramowania.