Postman to jedno z najbardziej popularnych narzędzi do tworzenia i testowania interfejsów API. Korzystam z niego od 2017 roku, a nauczenie się, jak używać Postmana do testowania interfejsów API, naprawdę pomogło mi przyspieszyć proces testowania.
W tym artykule krok po kroku pokażę Ci, jak weryfikować żądania API za pomocą Postmana. Po jego przeczytaniu powinieneś móc tworzyć własne automatyczne testy.
Zanim jednak przejdziemy do właściwego samouczka dotyczącego Postmana, wyjaśnię kilka kwestii związanych z interfejsami API.
Czym są interfejsy API?

API oznacza interfejs programistyczny aplikacji. Nadal nie jest to zbyt jasne, prawda? 😅 Rozwińmy to:
API to interfejs definiujący sposoby, za pomocą których skrypty lub programy mogą komunikować się z aplikacją albo usługą. Interfejsy API działają poprzez wymianę danych i informacji między aplikacjami, systemami i urządzeniami.
Najpopularniejszym obecnie typem API jest REST API, którego będę używać w dalszej części tego samouczka dotyczącego testowania API w Postmanie. REST to również skrót od wyrażenia „transfer stanu reprezentacji”. Interfejsy REST API opierają się na zasadach takich jak komunikacja klient-serwer, jednolite interfejsy umożliwiające komunikację między systemami, operacje bezstanowe i inne.
Komunikacja odbywa się za pomocą żądań i odpowiedzi HTTP.
Budowa żądań HTTP
Żądania HTTP mają 4 główne elementy:
- Adres URL
- Punkt końcowy, który reprezentuje konkretny zasób, z którym chcemy wejść w interakcję.
- Metoda HTTP — metody HTTP informują serwer, czy próbujemy pobrać informacje, czy też jakie modyfikacje chcemy, aby aplikacja wykonała. Dzisiaj omówimy podstawowe operacje CRUD:
- Utworzenie: POST
- Odczyt: GET
- Aktualizacja: PUT
- Usunięcie: DELETE
- Treść żądania. Jest ona opcjonalna i zależy od używanej metody. W tym samouczku dotyczącym Postmana użyjemy formatu JSON (notacja obiektowa JavaScript).
Have an account? Log In
Kody odpowiedzi HTTP
Gdy wysyłamy żądanie HTTP, serwer zwraca kod odpowiedzi, który informuje nas, czy żądanie zakończyło się powodzeniem. Główne kategorie kodów odpowiedzi HTTP to:
- 1xx: odpowiedź informacyjna
- 2xx: powodzenie
- 3xx: przekierowanie
- 4xx: błąd klienta
- 5xx: błąd serwera
Bardzo podoba mi się ta wizualna reprezentacja autorstwa Julii Evans:

Pełną listę kodów odpowiedzi znajdziesz tutaj, a jeśli wolisz wyjaśnienia przedstawione za pomocą kotów, zajrzyj tutaj 🐱👓
Dobrze, myślę, że omówiliśmy wystarczająco dużo, aby rozpocząć właściwy samouczek — zobaczmy teraz, jak używać Postmana do testowania interfejsów API!
Jak używać Postmana do testowania interfejsów API (krok po kroku)
Postmana można używać na dwa sposoby: bezpośrednio w przeglądarce (aby to zrobić, trzeba utworzyć konto) albo po zainstalowaniu go na komputerze lokalnym — w tej drugiej opcji konto jest opcjonalne.
Wolę mieć go zainstalowanego, ponieważ nie lubię bałaganu związanego z dużą liczbą otwartych kart w przeglądarce, dlatego w dalszej części będę korzystać właśnie z tej wersji.
To samouczek dla początkujących, więc użyję kilku prostych przypadków testowych, aby pokazać, jak korzystać z Postmana do testowania interfejsu API. Aplikacją demonstracyjną, której użyję, jest Swagger Petstore, a scenariusz, który przetestuję, to:
- Dodaj nowe zwierzę do sklepu ze statusem „oczekujące”
- Zaktualizuj status zwierzęcia na „dostępne”
- Sprawdź, czy informacje o zwierzęciu zostały zaktualizowane
- Usuń zwierzę
- Potwierdź, że zwierzę zostało usunięte
Dobrze, zaczynajmy!

Pierwsze żądanie HTTP w programie Postman
Postman umożliwia grupowanie żądań API w kolekcje. Są to grupy powiązanych żądań HTTP. Utwórz nową kolekcję dla wszystkich poniższych żądań, których użyjesz w testach:

Dobrze, teraz masz pustą kolekcję.
Kliknij adres URL „Dodaj żądanie” lub przycisk „+” na liście kart:

Strona Swagger UI służy jako dokumentacja API.
Zasób (punkt końcowy) potrzebny do utworzenia nowego zwierzęcia to „/pet”, a metoda HTTP to POST.
Na karcie modelu możesz zobaczyć obiekt, który należy wysłać jako treść żądania, oraz typy danych każdej wartości:

Użyjemy formatu JSON do wysłania treści odpowiedzi, więc włącz przycisk opcji „surowe” i wybierz JSON z listy rozwijanej.
Treść żądania powinna wyglądać mniej więcej tak:
{
"id": 0,
"category": {
"id": 0,
"name": "dog"
},
"name": "Spike",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "bulldog"
}
],
"status": "pending"
}
Możesz łatwo dodać pozostałe szczegóły na nowej karcie żądania:

Aby utworzyć to nowe zwierzę na serwerze, kliknij przycisk „Wyślij”.
Jeśli wszystko pójdzie dobrze, otrzymasz pomyślną odpowiedź, a jej treść będzie zawierać informacje o zwierzęciu, w tym jego identyfikator.
Będziemy musieli używać go w dalszej części:

Następnym krokiem jest zaktualizowanie informacji o zwierzęciu.
W tym celu musisz uzyskać dostęp do tego samego zasobu, „/pet”, ale wysłać żądanie z metodą HTTP PUT.
Możesz zobaczyć, jakie informacje należy wysłać w treści żądania:

Utwórz więc nowe żądanie, używając tego samego adresu URL żądania, wybierz metodę PUT i wyślij to samo ciało żądania, z wyjątkiem zmiany wartości statusu na „available” oraz użycia identyfikatora z poprzedniej odpowiedzi:
{
"id": <wprowadź tutaj identyfikator>,
"category": {
"id": 0,
"name": "dog"
},
"name": "Spike",
"photoUrls": [
"string"
],
"tags": [
{
"id": 0,
"name": "bulldog"
}
],
"status": "available"
}
Odpowiedź powinna ponownie mieć kod 200 OK. Następnie odczytajmy informacje o zwierzęciu, aby sprawdzić, czy status został prawidłowo zaktualizowany.
Metodą HTTP dla tego żądania jest GET, a żądanie przyjmuje identyfikator jako parametr:

Odpowiedź zawiera wszystkie dane zwierzęcia, w tym status, który ma teraz wartość „available”:

Żądanie usunięcia zostanie wykonane pod dokładnie tym samym adresem URL co żądanie GET (wraz z parametrem identyfikatora), ale wybraną metodą HTTP będzie DELETE:

Tym razem również żądanie powinno zakończyć się pomyślnie, a odpowiedź HTTP powinna mieć kod 200:

Jeśli ponownie wyślesz żądanie GET dla tego samego identyfikatora zwierzęcia, otrzymasz kod 404, ponieważ zwierzęcia nie można już znaleźć na serwerze:

Dodawanie testów w Postmanie
W poprzednich krokach przeszliśmy przez wszystkie etapy scenariusza testowego, ale każdy wynik trzeba było weryfikować ręcznie, sprawdzając kody i treści odpowiedzi.
Zobaczmy, jak zautomatyzować testy API za pomocą Postmana, aby nie trzeba było wykonywać tych kontroli ręcznie.
Zacznij od pierwszego żądania, POST, i kliknij kartę Testy żądania.
Po prawej stronie wybierz fragment kodu „Kod stanu: kod to 200”. Fragmenty kodu w Postmanie to wstępnie zdefiniowane skrypty, których możesz używać, dzięki czemu nie musisz samodzielnie pisać kodu. Każda linia kodu wprowadzona przez nas na karcie Testy żądania zostanie wykonana po wysłaniu żądania.
Możesz zmienić nazwę testu na bardziej opisową, np. „Utworzenie zwierzęcia zakończyło się powodzeniem”.
Wyślij żądanie ponownie, a tym razem zobaczysz, że karta wyników testów w odpowiedzi pokazuje, że 1/1 testów zakończył się powodzeniem, oraz nazwę zaliczonego testu:

Możesz dodać ten fragment kodu również do żądań PUT i DELETE.
Aby zweryfikować wartość statusu w odpowiedzi na żądanie GET, użyj fragmentu kodu „Treść odpowiedzi: sprawdzanie wartości JSON”:
pm.test("Nazwa twojego testu", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
Ten fragment kodu zapisuje odpowiedź w zmiennej jsonData, którą następnie analizuje, odczytuje wartość atrybutu i porównuje ją z oczekiwaną wartością.
Dla nas oznacza to, że atrybut „status” powinien mieć wartość „available”. Test powinien więc wyglądać tak:
pm.test("Status zwierzęcia to 'available'", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.status).to.eql("available");
});
W ramach ostatniego sprawdzenia, które potwierdza, że zwierzę zostało usunięte, ponownie wykonujemy żądanie GET. Możemy zduplikować początkowe żądanie GET i dodać test, który tym razem sprawdzi, czy kod odpowiedzi HTTP wynosi 404:

Żądania można przenosić do kolekcji metodą przeciągnij i upuść.

Korzystanie ze zmiennych w Postmanie
Prawdopodobnie zauważyłeś, że musieliśmy ręcznie skopiować i wkleić identyfikator z żądania POST do wszystkich kolejnych żądań. A gdyby istniał łatwiejszy sposób?
Dobra wiadomość jest taka, że istnieje! Możemy używać zmiennych Postmana do przechowywania wielokrotnie wykorzystywanych wartości. Jeśli wartości będą wymagały zmiany, możemy zmienić je w jednym miejscu, podobnie jak staramy się robić we wszystkich testach automatycznych.
Zmienne Postmana mają 3 zakresy:
- Globalny: zmienne, do których można uzyskać dostęp z dowolnego środowiska i dowolnej kolekcji
- Środowisko: zmienne zapisane na poziomie środowiska. W tym samouczku nie używałem środowisk, ale warto wiedzieć, że Postman umożliwia tworzenie różnych środowisk dla poszczególnych środowisk, z którymi pracujemy. Na przykład oddzielnych środowisk dla Dev, UAT i Produkcji
- Kolekcja: zmienne te są przechowywane na poziomie kolekcji i można uzyskać do nich dostęp ze wszystkich żądań w kolekcji.
Istnieje wiele sposobów konfigurowania zmiennych kolekcji.
Najprostszym sposobem jest utworzenie zmiennej bezpośrednio z poziomu kolekcji.
Aby to zrobić, kliknij nazwę kolekcji, wybierz kartę zmiennych i wprowadź nazwę oraz wartość zmiennej:

Aby użyć tej zmiennej, zastąp pierwotną wartość w żądaniach nazwą zmiennej zapisaną między dwiema klamrami, tak jak tutaj: {{petId}}
Należy użyć jej w treści żądań POST i PUT dla parametru „id”, tak jak tutaj:
"id": {{petId}},
Oraz w adresie URL żądań GET i DELETE, tak jak tutaj: https://petstore.swagger.io/v2/pet/{{petId}}
Końcową wersję kolekcji można zobaczyć tutaj.
More Articles
Uruchamianie kolekcji Postmana
Teraz nadchodzi najlepsza część! Celem tego samouczka było pokazanie, jak uruchamiać testy automatyczne za pomocą Postmana. Wszystko, co robiliśmy wcześniej, służyło przygotowaniu do tej części.
Aby automatycznie uruchomić testy, kliknij prawym przyciskiem myszy nazwę kolekcji lub najedź na nią kursorem, następnie kliknij menu z trzema kropkami obok nazwy i wybierz opcję „Uruchom kolekcję”.

Spowoduje to otwarcie modułu uruchamiania kolekcji:

Na tym ekranie możesz wybrać, które żądania chcesz wysłać, zmienić ich kolejność, uruchomić kolekcję wielokrotnie (zwiększając liczbę iteracji) lub dodać opóźnienia między żądaniami.
Na razie możesz po prostu pozostawić wartości domyślne i kliknąć przycisk „Uruchom”. Po zakończeniu uruchomienia jednym kliknięciem zobaczysz wyniki testów dla wszystkich scenariuszy, które chcieliśmy przetestować:

I to wszystko! Jeśli wykonałeś wszystkie kroki opisane w tym artykule, powinieneś mieć już swoje pierwsze zautomatyzowane testy API w Postmanie! 🚀
Podsumowanie
Postman jest bardzo pomocnym narzędziem do testowania interfejsów API, a ten artykuł zaledwie zarysował temat. Udało nam się jednak omówić sposób wysyłania żądań HTTP, odczytywania odpowiedzi, tworzenia testów oraz automatycznego sprawdzania wyników testów.
Jeśli spodobał Ci się ten artykuł, zasubskrybuj newsletter QA Lead, aby być na bieżąco ze wszystkimi wiadomościami i trendami w testowaniu oprogramowania.


