Pytania rekrutacyjne dotyczące testowania API

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Uwaga, testerzy manualni i automatyzujący przygotowujący się do rozmów rekrutacyjnych! Nasz przewodnik po pytaniach rekrutacyjnych dotyczących testowania API obejmuje podstawowe pojęcia, różnice między testowaniem API a testowaniem interfejsu użytkownika, metody HTTP i kody statusu, popularne narzędzia oraz metody uwierzytelniania. Zdajmy tę rozmowę celująco!

Według badania SlashData z 2020 roku prawie 90% ankietowanych programistów korzystało w pewnym stopniu z interfejsów API. Mając to na uwadze, nic dziwnego, że nawet jeśli jesteś testerem manualnym lub testerem automatyzującym i szukasz zmiany pracy, rozmowa rekrutacyjna będzie obejmować pytania związane z API. 

W tym artykule przedstawię niektóre z najczęstszych i najważniejszych pytań rekrutacyjnych dotyczących testowania API oraz podam idealną odpowiedź na każde z nich. Zaczynajmy!

1. Na czym polega testowanie API?

Testowanie API to rodzaj testowania oprogramowania, który polega na ocenie interfejsów API (interfejsów programistycznych aplikacji) pod kątem spełniania wymagań dotyczących funkcjonalności, niezawodności, wydajności i bezpieczeństwa. Ponieważ interfejsy API nie mają GUI, testowanie API odbywa się na poziomie komunikatów systemu. 

2. Jakie są zalety przeprowadzania testów API?

Testowanie API ma kilka zalet. Wśród najważniejszych można wymienić:

  • Testowanie bez GUI: Testerzy mogą przeprowadzać testy API bez konieczności bezpośredniego korzystania z oprogramowania. Jest to ogromna korzyść, ponieważ zapewnia inżynierom QA wczesny wgląd w wady i błędy, umożliwiając programistom ich naprawienie, zanim wpłyną one na GUI.
  • Testowanie podstawowej funkcjonalności: Testowanie funkcjonalności aplikacji na poziomie kodu przed przeprowadzeniem testów GUI pozwala ocenić ogólną jakość jej kompilacji. Pomaga to ujawnić drobne błędy, które mogą przerodzić się w poważniejsze problemy na poziomie GUI. Dostęp do podstawowych funkcji umożliwia prowadzenie testów równolegle z procesem tworzenia oprogramowania, co sprzyja komunikacji i lepszej współpracy.
  • Oszczędność czasu: Testy API zwykle zajmują mniej czasu niż funkcjonalne testy GUI. Testowanie GUI trwa dłużej, ponieważ konieczne jest odpytywanie komponentów internetowych. Automatyzacja testów API wymaga w szczególności mniejszej ilości kodu oraz zapewnia lepsze i szybsze pokrycie testami w porównaniu z automatycznym testowaniem GUI.
  • Niezależność od języka: Test API wykorzystuje XML lub JSON do wymiany danych. Te tryby transferu nie zależą od języka, dlatego podczas pisania automatycznych testów API można używać dowolnego języka programowania. 

3. Czym testowanie API różni się od testowania interfejsu użytkownika?

Testowanie API koncentruje się w znacznie większym stopniu na testowaniu logiki biznesowej, odpowiedzi danych i bezpieczeństwa, a także wąskich gardeł wydajnościowych. Z kolei testowanie interfejsu użytkownika skupia się na sprawdzaniu wyglądu i sposobu działania interfejsu internetowego lub tego, czy określone przyciski, formularze, listy rozwijane itp. działają prawidłowo.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

4. Jakie są elementy żądania HTTP?

Żądanie HTTP składa się z pięciu elementów:

  • Metoda HTTP (omówiona poniżej), która określa działanie.
  • URI (ujednolicony identyfikator zasobu) to identyfikator zasobu na serwerze.
  • Wersja HTTP, np. HTTP v1.1.
  • Nagłówek żądania zawiera metadane (w postaci par klucz-wartość) dotyczące komunikatu żądania HTTP. Przykładami metadanych są typ klienta (lub przeglądarki), formaty obsługiwane przez klienta, formaty treści komunikatu, ustawienia pamięci podręcznej i inne informacje.
  • Treść żądania przedstawia dane wysłane przez klienta do API.

5. Jakie są najczęściej używane metody HTTP w interfejsach REST API?

Najważniejsze metody HTTP stosowane podczas testowania REST API to metody wykonujące operacje CRUD:

  • GET to metoda HTTP, która odczytuje informacje z zasobu.
  • Metoda POST służy do tworzenia lub aktualizowania zasobów.
  • PUT modyfikuje istniejący zasób.
  • DELETE usuwa określony zasób.

6. Jaka jest różnica między metodami PUT i POST?

To pytanie rekrutacyjne, które często mi zadawano, a odpowiedź na nie została częściowo przedstawiona powyżej. 

Gdy trzeba zmienić pojedynczy zasób będący elementem kolekcji zasobów, wywołuje się metodę PUT. Gdy trzeba dodać zasób podrzędny do kolekcji zasobów, należy użyć metody POST. Jeśli wywołanie HTTP PUT zostanie wysłane więcej niż raz, wyniki pozostaną takie same. Jeśli żądanie POST zostanie wysłane wielokrotnie, wyniki będą się różnić, czyli może zostać utworzonych wiele zasobów lub zwrócony zostanie błąd.

Na przykład, jeśli masz zasób do tworzenia i aktualizowania użytkowników, wysłanie tej samej metody PUT dla użytkownika spowoduje jego aktualizację za każdym razem. Wysłanie tej samej metody POST dla użytkownika spowoduje utworzenie wielu użytkowników albo wyświetlenie błędu informującego, że nazwa użytkownika lub adres e-mail jest już używany.

7. Czym są klasy kodów statusu odpowiedzi HTTP?

To kolejne często zadawane pytanie podczas rozmów kwalifikacyjnych, a znajomość odpowiedzi jest ważna podczas przeprowadzania testów API. Klasy kodów odpowiedzi HTTP to:

  • 1xx: odpowiedzi z tej kategorii mają charakter informacyjny. Oznaczają, że klient powinien kontynuować żądanie albo zignorować odpowiedź, jeśli żądanie zostało zakończone.
  • 2xx: kod 200 oznacza powodzenie. 
  • 3xx: te odpowiedzi oznaczają przekierowanie. Oznacza to, że istnieje wiele możliwych odpowiedzi na żądanie. Jedna z nich powinna zostać wybrana przez agenta użytkownika lub użytkownika. 
  • 4xx: kody z tej grupy oznaczają błąd po stronie klienta. Oznacza to, że serwer nie może przetworzyć żądania i interpretuje je jako błąd po stronie klienta, na przykład nierozpoznany adres URL, nieprawidłową składnię żądania i tak dalej.
  • 5xx: kod odpowiedzi HTTP 500 jest zwracany, gdy po stronie serwera wystąpił błąd i serwer nie może wykonać żądania.

Jeśli chcesz poznać szczegóły dotyczące statusów odpowiedzi, pełną listę znajdziesz w internecie. 

8. Jakie są popularne narzędzia do automatyzacji testów API?

W odpowiedzi na to pytanie wymieniłbym narzędzia, z którymi już pracowałem lub które przynajmniej trochę znam. Jeśli więc masz doświadczenie z dowolnymi narzędziami do testowania API, wymień je. Jeśli nie, możesz podać kilka popularnych przykładów, takich jak Katalon, Postman lub SoapUI. Zajrzyj do naszego artykułu przedstawiającego najlepsze narzędzia do testowania API, aby znaleźć inspirację. 

9. Jakie są najczęściej stosowane metody uwierzytelniania w testowaniu API?  

Odpowiedź na to pytanie mogłaby brzmieć:

  • Uwierzytelnianie oparte na sesji lub plikach cookie
  • Uwierzytelnianie podstawowe
  • Uwierzytelnianie skrótem
  • OAuth

10. Jaka jest różnica między uwierzytelnianiem a autoryzacją?

Krótko mówiąc, uwierzytelnianie to proces weryfikowania tożsamości użytkownika, natomiast autoryzacja to proces potwierdzania poziomu jego dostępu. 

More Articles

11. Dlaczego testowanie API jest preferowane w automatyzacji testów zamiast testowania interfejsu użytkownika?

Wracając do klasycznej piramidy automatyzacji testów, w naszej branży powszechnie wiadomo, że kompleksowe testy interfejsu użytkownika powinny znajdować się na jej szczycie, co oznacza, że powinny stanowić najmniejszą liczbę testów. Wynika to z faktu, że automatyczne testy interfejsu użytkownika zwykle wymagają więcej czasu i są bardziej podatne na niestabilność, ponieważ mają wiele zależności. Automatyczne testy API reprezentują część piramidy dotyczącą testów integracyjnych, a ponadto są znacznie szybsze i zazwyczaj bardziej niezawodne.

12. Jaka jest różnica między testowaniem API a testowaniem jednostkowym?

Testowanie jednostkowe należy do testów białoskrzynkowych, podczas gdy testowanie API jest zazwyczaj testowaniem czarnoskrzynkowym. Ponieważ użytkownik końcowy korzysta z interfejsu użytkownika, testowanie API musi odzwierciedlać system jako całość. W testowaniu jednostkowym kluczowe znaczenie ma sprawdzenie, czy każdy komponent lub moduł działa bez zarzutu. Oznacza to, że aby osiągnąć solidną architekturę modułów, należy ograniczyć liczbę zależności. 

13. Jakie rodzaje testów można stosować w przypadku API?

Większość rodzajów testów stosowanych podczas testowania interfejsu użytkownika sprawdza się również w przypadku API. Kilka najważniejszych rodzajów testów, które możesz wymienić w odpowiedzi na to pytanie podczas rozmowy kwalifikacyjnej dotyczącej API, to:

  • Testowanie funkcjonalne: w większości przypadków będziesz chcieć sprawdzić, czy interfejsy API wykonują zadania, do których zostały zaprojektowane. Oznacza to, że będziesz przeprowadzać przypadki testów funkcjonalnych interfejsów API. 
  • Testowanie manualne: to, że nie zajmujesz się automatyzacją testów, nie oznacza, że nie możesz testować interfejsów API. Możesz używać narzędzi takich jak Postman do wysyłania żądań i ręcznego testowania odpowiedzi.
  • Testowanie automatyczne: dobrym pomysłem jest automatyzacja przypadków testowych API. Wiele z powyższych narzędzi może Ci w tym pomóc. Możesz też utworzyć własny framework API. 
  • Testowanie obciążeniowe: symulując ruch kierowany do interfejsów API, testerzy mogą zidentyfikować wąskie gardła, zanim system trafi na środowisko produkcyjne. Przy braku obciążenia produkcyjnego identyfikacja tych wąskich gardeł w środowiskach programistycznych może być trudna. Istnieją narzędzia do testowania obciążeniowego, które umożliwiają wysyłanie wywołań HTTP do określonego punktu końcowego oraz mierzenie czasu odpowiedzi, liczby błędów i współczynnika błędów, a także innych wartościowych danych zawartych w odpowiedziach. Mogą one również pomóc w symulowaniu dużych ilości danych w celu oceny działania aplikacji.
  • Testowanie bezpieczeństwa: dzięki testowaniu bezpieczeństwa implementacja API jest chroniona przed zagrożeniami zewnętrznymi. Etapy testowania bezpieczeństwa obejmują weryfikację technik szyfrowania oraz architektury mechanizmów kontroli dostępu do API. Obejmują również zarządzanie dostępem użytkowników i weryfikację autoryzacji.
  • Testy penetracyjne: w ramach tego rodzaju testów użytkownicy niezaznajomieni z API próbują zdalnie ocenić wektor zagrożeń, koncentrując się na funkcjonalnościach, zasobach, przepływach pracy lub kompletnym API i jego komponentach.

Niezależnie od tego, czy zajmujesz się testowaniem manualnym, czy automatyzacją testów, znajomość pracy z interfejsami API jest niezwykle ważna. Jeśli przygotowujesz się do pytań rekrutacyjnych dotyczących testowania API, mam nadzieję, że ten artykuł okaże się dla Ciebie wartościowy.

Nie zapomnij zasubskrybować newslettera The CTO Club, aby otrzymywać więcej wskazówek i poradników dotyczących testowania!

Andreea Draniceanu
Hi there! My name is Andreea, I’m a software test engineer based in Romania. I’ve been in the software industry for over 10 years. Currently my main focus is UI test automation with C#, but I love exploring all QA-related areas 😊