Postman

postman logo

Tworzenie własnego API da się opisać w kilku prostych krokach. Zaplanować do czego będzie wykorzystywane, przewidzieć przypadki użycia, dostosować system informatyczny przenoszący logikę na kod. Kolejnymi etapami są realizacja i testowanie. Każdy kto miał do czynienia z ostatnim zdaje sobie sprawę, że pomimo faktu, że API jest aplikacją webową, przeglądarka daje okrojone możliwości testowania. Pozwala ona jedynie na wywołanie endpointów o metodzie GET. Co z pozostałymi? – zapytasz. Jednym z rozwiązań tego problemu może być Postman- aplikacja do wywoływania żądań API. W dzisiejszym artykule przyjrzymy się im bliżej.

Czym jest Postman?

postman logo

Stworzony i rozwijany przez firmę Postdot Technologies Inc. Oferuje szereg możliwości, które można by łącznie nazwać testowaniem API, a więc m.in. wysyłanie i odbieranie wiadomości http, uruchamianie testów i skryptów, diagnostyka, etc. Pomimo wielu funkcji Postman ma dość przejrzysty interfejs graficzny – już w trakcie pierwszego użycia niedoświadczony użytkownik będzie wiedział co kliknąć, żeby zadziałało 🙂 Na potwierdzenie moich słów warto wspomnieć, że z aplikacji, według producenta, korzysta 5 milionów programistów z ponad 100 tysięcy firm. Cały program napisany jest z użyciem technologii frontendowych. Głównym frameworkiem jest React.

Dostępne wersje

Twórcy oferują swój produkt na wszystkie duże systemy operacyjne: Windows, iOS i Linux. Dodatkowo przygotowano także rozszerzenie do przeglądarki Chrome. Aplikacja dostępna jest też
w trzech wersjach cenowych: zwykłej (darmowej), Pro (8$ miesięcznie) i Enterprise (18$ miesięcznie). Na co dzień, jak również na potrzeby artykułu, korzystam z darmowej wersji, która jest wystarczająca dla moich wymagań. Wszystkie pobierzesz stąd.

Budowa okna programu

okno programu

Interfejs składa się z trzech elementów:

  • Bocznej listy zawierającej historię wykonywanych requestów oraz zapisane kolekcje,
    o których przeczytasz poniżej
  • Ekranu głównego, przedstawiającego widok jednego, aktywnego żądania i uzyskanej odpowiedzi. Pozostałe otwarte requesty przedstawione są w formie kart, podobnie jak
    w przeglądarkach
  • W górnej części okna programu użytkownik ma dostęp do klasycznego menu głównego oraz kilku ikon ustawień.

Co potrafi Postman?

W tym artykule już kilka razy wspominałem o tym, że Postman potrafi wysyłać i odbierać wiadomości hipertekstowe. I nic w tym dziwnego! To jego główna funkcjonalność i rdzeń, wokół którego zbudowane zostały pozostałe dodatki. Jeśli przeczytałeś post o wiadomościach http, to wiesz
z ilu elementów się one składają. Dostosowanie każdego z nich jest możliwe przy użyciu aplikacji. Możesz tutaj ustawić dowolne nagłówki, metodę, adres, czy parametry w query stringu, o których też pojawił się artykuł na blogu, klik. Dodatkowo istnieje możliwość dostosowania sposobu autoryzacji żądania zgodnie z koncepcją przyjętą w API.

Okej! Mamy omówioną podstawową funkcję programu. Nie myśl jednak, że na tym koniec. Listonosz (ang. postman) oferuje wiele udogodnień, które pozwalają na przyjemniejsze testowanie. Postaram się krótko przedstawić każdą z nich.

Organizacja requestów w kolekcje

kolekcje

Kolekcja, jest najprościej mówiąc, folderem zawierającym grupę zapisanych żądań. Dostępna jest
w widoku listy bocznej. Przydatne, gdy testujesz kilka API jednocześnie. Wtedy ilość wykonywanych requestów może być naprawdę duża, a pomieszanie tych odpytujących różne aplikacje, znacznie obniży efektywność pracy. Problem łatwo można rozwiązać grupując odpowiednie zapytania w kolekcje.

Przykład

Innym zastosowaniem jest testowanie różnych przypadków w jednym API. Przykład: załóżmy,
że serwis, który rozwijasz służy do kupowania biletów do kina. Jako metodę autoryzacji stosujesz JWT token i chcesz przetestować przypadki kupienia biletu do kina dla jednej osoby i rezerwacji biletów dla dwóch. W obu z nich trzeba będzie się zalogować (pobrać token), wyszukać dostępne seanse, a następnie znaleźć wolne miejsca na wybranej projekcji. Ostatni krok będzie różny. Wykupienie biletu będzie wymagało wywołania endpointu do zakupu, obsłużenia płatności, etc. Rezerwacja natomiast będzie wykonana za pomocą innego zestawu wysyłanych żądań. Zastanawiasz się do czego zmierzam? Testując API w Postmanie możesz stworzyć każdy request jeden raz
i wykorzystywać wielokrotnie, w tym przypadku logowanie i wyszukiwanie dla dwóch scenariuszy. Generuje to jednak ryzyko, że będą one rozsiane po całej liście żądań. Alternatywą jest możliwość wykorzystania kolekcji. Jeśli zostałyby stworzone dwie, np.: „Buy 1 ticket” i „Reserve 2 tickets” mógłbyś skopiować do nich requesty: pobierający token, wyszukujący seanse i wolne miejsca,
a potem dodać te specyficzne dla przypadku. Wszystko będzie wtedy zorganizowane w osobnych folderach i nie będzie problemu z szukaniem odpowiednich żądań po całym programie.

Historia wykonywanych requestów

Ona też znajduje się w menu bocznym. Zawiera chronologicznie ułożone, ostatnio wykonane requesty.

Zmienne globalne i środowiskowe

zmienne

Podczas testowania aplikacji wysyłasz dane, które często się powtarzają. Przykładem może być bazowy adres URL API, wspomniany wcześniej token, użytkownik, hasło, adres e-mail oraz wiele innych, specyficznych dla domeny testowanej aplikacji. Wpisywanie ich za każdym razem z palca byłoby dość uciążliwe. Ten problem rozwiązują właśnie zmienne. Dostęp do zarządzania nimi uzyskasz klikając na ikonę oka (obrazek) w prawym górnym rogu aplikacji. Stamtąd możesz je przeglądać, dodawać i edytować. Są one zapisywane w plikach .json, a eksportowanie i importowanie jest bardzo proste. Często więc takie zmienne są przygotowane raz i rozesłane po całym zespole. Pewnie zastanawiasz się jak używać zmiennych w aplikacji. To bardzo proste. W miejscu, gdzie ich potrzebujesz wpisz nazwę zamkniętą w podwójnym nawiasie klamrowym: {{nazwa_zmiennej}}. W trakcie wywołania żądania Postman automatycznie podmieni taki zapis na wartość zmiennej, a Ty zredukujesz ilość swojej pracy 🙂

Różnice pomiędzy nimi

Pozostało wyjaśnić różnicę pomiędzy zmiennymi środowiskowymi, a globalnymi. Pierwsze z nich, jak sama nazwa wskazuje, wykorzystywane są przez konkretne środowiska. Aplikacja zanim zostanie oddana do ogólnego użytku (na tzw. produkcję) testowana jest przez programistów na środowiskach developerskich i dział QA – na testerskich. Może się zdarzyć sytuacja, w której developer będzie coś sprawdzał np. dla testerów na ich środowisku. Wtedy API dostępne jest zwykle na innym serwerze, często korzysta też z innej bazy danych, itp. W Postmanie wszystkie wartości, które różnią się w zależności od środowiska warto przechowywać w zmiennych do tego przeznaczonych – o tej samej nazwie. W opisanym wyżej przypadku w programie trzeba byłoby tylko zmienić środowisko: (zdjęcie)

I wszystkie wykonywane żądania byłyby zmodyfikowane w odpowiedni sposób, pod warunkiem, że wszystko było opisane za pomocą zmiennych. Globalne odpowiedniki natomiast są przeciwieństwem. Niezależnie od środowiska pozostają niezmienne.

Pre-request scripts

pre-request scripts

Sktypty napisane w języku JavaScript. Wykonywane są przed requestem. Z ich pomocą można wykonać zestaw czynności potrzebnych do poprawnego wykonania żądania. Daje to duże pole do manewru i pozwala bardzo ułatwić sobie testowanie. Często zdarza się, że do requestu musimy dodać aktualną datę. Bywa też, że wartości wysyłanych danych zależą od otrzymanych w odpowiedzi poprzedniego żądania w scenariuszu. Takie problemy można załatwić przez ręczne wpisywanie lub kopiowanie danych. Zaraz, zaraz przecież programiści nie lubią topornych rozwiązań i wolą, żeby programy odwalały za nich ciężką lub żmudną i powtarzalną pracę, prawda? Właśnie do takich zadań stworzone zostały skrypty. Pozwalają one na dużo więcej, np.: wyczyszczenie, pobranie lub ustawienie zmiennej, konwersja z XML do JSONa i wiele innych. Te, wymienione przeze mnie, to tylko przykłady z gotowych skrawków (tzw. snippets) przygotowanych przez programistów Postmana.
W rzeczywistości możliwości wykorzystania skryptów są znaczeni większe.

Testy

Odpowiednik Pre-request scripts z tą różnicą, że wykonywane po otrzymaniu odpowiedzi. Według mnie nazwane nieco niefortunnie. Testowanie jest tylko jednym ze sposobów wykorzystanie tego narzędzia. Za jego pomocą można sprawdzić rezultat wykonania requestu bez szukania konkretnych wartości w często bardzo długich JSONach zwracanych w response’ach. Często wykonanie kolejnego żądania zależy od danych otrzymanych w odpowiedziach wcześniejszych. I tak jak za pomocą skryptów pobiera się te wartości ze zmiennych, tak w przypadku testów zmienne
te można nadpisać aktualnymi danymi.

Przechowywanie danych w chmurze

Zakładając konto na stronie Postmana uzyskujesz dostęp do możliwości przechowywania swoich danych w chmurze. Program automatycznie tworzy kopię zapasową requestów, kolekcji, środowisk, zmiennych, itp. Przydatne w przypadku awarii komputera – nie ma ryzyka utraty efektów pracy,
a przywrócenie ich trwa ułamek sekundy. Dodatkowym atutem posiadania konta jest to, że z jego pomocą można łatwo współdzielić kolekcje między całym zespołem bez konieczności przesyłania eksportowanych plików, o czym pisałem wyżej.

 

Podsumowanie

W dzisiejszym wpisie przyjrzeliśmy się podstawowym możliwościom jakie daje Postman. Przedstawiłem jego funkcjonalności i sposoby ich wykorzystania. Jeśli planujesz lub już pracujesz jako web developer, z pewnością pomoże Ci to w codziennych wyzwaniach i obowiązkach. Dodatkowo Postman we współpracy z jedną z wtyczek pozwala na wykonywanie testów automatycznych. Nie było to w zakresie dzisiejszego artykułu, ale jeśli będziesz zainteresowany, to chętnie o tym napiszę, daj znać w komentarzu, czy chciałbyś, abym się tym zajął. A może wykorzystujesz program w jakiś inny sposób lub o czymś zapomniałem, a Ty chciałbyś o tym dać znać? Koniecznie zajrzyj do komentarzy 🙂

Jeśli wpis Ci się podobał, to będę Ci bardzo wdzięczny jeśli przekażesz go dalej w mediach społecznościowych, niech pomoże większej ilości osób. Z góry dziękuję 🙂

Please follow and like us:

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.