Testovanie webových rozhraní API pomocou poštových zbierok

1. Úvod

Na dôkladné otestovanie webového rozhrania API potrebujeme na prístup k koncovým bodom rozhrania API nejaký webový klient. Postman je samostatný nástroj, ktorý precvičuje webové rozhrania API vytváraním požiadaviek HTTP mimo služby.

Pri používaní aplikácie Postman nemusíme kvôli testovaniu písať žiadny kód infraštruktúry klientov HTTP. Namiesto toho vytvárame testovacie balíčky, ktoré sa nazývajú kolekcie a necháme Postmana komunikovať s našim API.

V tomto tutoriáli sa dozvieme, ako vytvoriť Zbierku poštárov, ktorá dokáže otestovať REST API.

2. Inštalácia

Predtým, ako začneme s kolekciou, budeme musieť nastaviť prostredie.

2.1. Inštaluje sa poštár

Postman je k dispozícii pre systémy Linux, Mac a Windows. Nástroj je možné stiahnuť a nainštalovať z webovej stránky Poštár.

Po zrušení úvodnej obrazovky vidíme používateľské rozhranie:

2.2. Spustenie servera

Poštár potrebuje na spracovanie svojich požiadaviek živý server HTTP. Pre tento tutoriál použijeme predchádzajúci projekt Baeldung, odpružená bota, ktorý je k dispozícii na GitHub.

Ako by sme mohli hádať z názvu, pružina-oddych-oddych je aplikácia Spring Boot. Aplikáciu zostavujeme s cieľom Maven Inštalácia. Po zostavení spustíme server s vlastným cieľom Maven jar-topánka: beh.

Na overenie, či je server spustený, môžeme v našom prehliadači kliknúť na túto adresu URL:

// localhost: 8082 / spring-boot-rest / auth / foos

Táto služba používa databázu v pamäti. Po zastavení servera sa všetky záznamy vymažú.

3. Vytvorenie zbierky poštárov

Zbierka v službe Postman predstavuje sériu požiadaviek HTTP. Poštár ukladá všetky aspekty požiadaviek vrátane hlavičiek a tiel správ. Preto môžeme požiadavky spúšťať postupne ako poloautomatické testy.

Začnime vytvorením novej kolekcie. Môžeme kliknúť na šípku rozbaľovacej ponuky na Nový tlačidlo a vyberte Zbierka:

Keď VYTVORTE NOVÚ KOLEKCIU objaví sa dialógové okno, môžeme našu zbierku pomenovať “foo API test„. Nakoniec klikneme na Vytvoriť tlačidlo, aby sa naša nová kolekcia zobrazila v zozname naľavo:

Po vytvorení našej kolekcie na ňu môžeme umiestniť kurzor myši a odhaliť dve tlačidlá ponuky. Tlačidlo so šípkou otvára panel pravý výťah, ktorý poskytuje prístup k Kolekcia Runner. Naopak, tlačidlo elipsy otvára rozbaľovaciu ponuku obsahujúcu množstvo operácií so zbierkou.

4. Pridanie požiadavky POST

4.1. Vytvorenie novej požiadavky

Teraz, keď máme prázdnu zbierku, pridajme požiadavku, ktorá zasiahne naše API. Konkrétne pošleme správu POST na URI / auth / foos. Urobiť to, otvoríme ponuku elipsy v našej zbierke a vyberieme Pridať požiadavku.

Keď ULOŽIŤ ŽIADOSŤ Zobrazí sa dialógové okno, poskytneme popisný názov, napríklad „pridaj foo “. Potom kliknite na tlačidlo Uložiť do foo API testu.

Po vytvorení žiadosti vidíme, že to naznačuje naša zbierka jedna prosba. Ak sa však naša zbierka nerozšírila, žiadosť sa nám zatiaľ nezobrazuje. V takom prípade môžeme zbierku rozbaliť kliknutím.

Teraz by sme mali vidieť novú požiadavku uvedenú v našej zbierke. Môžeme pozorovať, že nová požiadavka je štandardne HTTP GET, čo nie je to, čo chceme. Opravíme to v ďalšej časti:

4.2. Úprava požiadavky

Ak chcete žiadosť upraviť, kliknite na ňu a načítajte ju na kartu editora žiadosti:

Aj keď má editor požiadaviek veľa možností, zatiaľ ich potrebujeme iba niekoľko.

Najskôr pomocou rozbaľovacej ponuky zmeníme metódu z GET na POST.

Po druhé, potrebujeme adresu URL. Napravo od rozbaľovacej ponuky metódy je textové pole pre adresu URL žiadosti. Zadajme to teda teraz:

// localhost: 8082 / spring-boot-rest / auth / foos

Posledným krokom je poskytnutie tela správy. Pod adresou URL je riadok hlavičiek kariet. Klikneme na Telo hlavička karty, aby ste sa dostali do editora tela.

V Telo Na karte tesne nad textovou oblasťou je rad prepínačov a rozbaľovacia ponuka. Tieto riadia formátovanie a typ obsahu požiadavky.

Naša služba prijíma údaje JSON, takže vyberieme surový tlačítko na Rádiu. V rozbaľovacej ponuke vpravo použijeme JSON (aplikácia / json) Druh obsahu.

Po nastavení kódovania a typu obsahu pridáme do textovej oblasti náš obsah JSON:

{"name": "Transformers"}

Nakoniec nezabudnite naše zmeny uložiť stlačením Ctrl-S alebo biť do Uložiť tlačidlo. The Uložiť tlačidlo sa nachádza napravo od Pošli tlačidlo. Po uložení môžeme vidieť, že požiadavka bola v zozname vľavo aktualizovaná na POST:

5. Spustenie žiadosti

5.1. Spustenie jednej žiadosti

Ak chcete spustiť jednu žiadosť, stačí kliknúť na ikonu Pošli tlačidlo napravo od adresy URL. Akonáhle klikneme Poslať, panel odpovedí sa otvorí pod panelom požiadaviek. Možno bude potrebné posunúť zobrazenie nadol, aby ste to videli:

Poďme preskúmať naše výsledky. Konkrétne na paneli hlavičiek vidíme, že naša požiadavka bola so stavom úspešná 201 Vytvorené. Ďalej orgán odpovede ukazuje, že náš Transformátory záznam dostal ID 1.

5.2. Pomocou kolekcie Runner

Na rozdiel od Pošli tlačidlo, bežec zbierky môže vykonať celú zbierku. Ak chcete spustiť zberač, umiestnite kurzor myši na náš foo API test zbierky a kliknite na šípku doprava. Na paneli vpravo hore môžeme vidieť a Bež tlačidlo, tak na to kliknime:

Keď klikneme na ikonu Bež Tlačidlo Runner zbierky sa otvorí v novom okne. Pretože sme ho spustili z našej zbierky, bežec je už inicializovaný do našej zbierky:

Bežec zbierky ponúka možnosti, ktoré ovplyvňujú testovaciu prevádzku, ale pri tomto cvičení ich nebudeme potrebovať. Poďme priamo k Spustiť test foo API v dolnej časti a kliknite na ňu.

Keď spustíme kolekciu, zobrazenie sa zmení na Spustiť výsledky. Z tohto pohľadu vidíme zoznam testov, ktoré sú označené zelenou farbou pre úspech a červenou farbou pre zlyhanie.

Aj keď bola naša žiadosť odoslaná, bežec naznačuje, že prešlo nula testov a nula testov zlyhala. Dôvodom je, že sme k našej žiadosti zatiaľ nepridali testy:

6. Testovanie odpovede

6.1. Pridanie testov k požiadavke

Ak chcete vytvoriť test, vráťme sa na panel úprav žiadosti, kde sme vytvorili našu metódu POST. Klikneme na Skúšky karta, ktorá sa nachádza pod adresou URL. Keď to urobíme, zobrazí sa panel Testy:

Na panel Testy napíšeme JavaScript, ktorý sa vykoná po prijatí odpovede zo servera.

Poštár ponúka vstavané premenné, ktoré poskytujú prístup k požiadavke a odpovedi. Ďalej je možné importovať množstvo knižníc JavaScriptu pomocou knižnice vyžadovať () syntax.

V tomto výučbe je príliš veľa skriptovacích funkcií, na ktoré je potrebné sa zamerať. Oficiálna dokumentácia Postmana je však na túto tému vynikajúcim zdrojom.

Pokračujme pridaním troch testov k našej požiadavke:

pm.test ("stav úspechu", () => pm.response.to.be.success); pm.test ("názov je správny", () => pm.expect (pm.response.json (). name) .to.equal ("transformátory")); pm.test ("ID bolo pridelené", () => pm.expect (pm.response.json (). id) .to.be.not.null);

Ako vidíme, tieto testy využívajú globálne popoludnie modul poskytovaný poštárom. Používajú sa najmä testy pm.test (), pm.expect ()a pm.odpoveď.

The pm.test () funkcia prijíma funkciu označenia a tvrdenie, ako napr očakávať (). Používame pm.expect () presadiť podmienky týkajúce sa obsahu odpovede JSON.

The pm.odpoveď objekt poskytuje prístup k rôznym vlastnostiam a operáciám s odpoveďou vrátenou zo servera. Medzi dostupné vlastnosti patrí okrem iného stav odpovede a obsah JSON.

Ako vždy, zmeny ukladáme pomocou Ctrl-S alebo Uložiť tlačidlo.

6.2. Vykonávanie testov

Teraz, keď máme testy, spustíme požiadavku znova. Stlačením Pošli Tlačidlo zobrazuje výsledky v priečinku Výsledky testu karta panela odpovedí:

Rovnako tak bežec zbierky teraz zobrazuje naše výsledky testov. Konkrétne súhrn vľavo hore zobrazuje aktualizované prešiel a zlyhalo súčty. Pod súhrnom je zoznam, ktorý zobrazuje každý test s jeho stavom:

6.3. Zobrazenie konzoly Postman

The Konzola poštárov je užitočný nástroj na vytváranie a ladenie skriptov. Konzolu nájdeme pod vyhliadka menu s názvom položky Zobraziť konzolu Postman. Po spustení sa konzola otvorí v novom okne.

Keď je konzola otvorená, zaznamenáva všetky požiadavky a odpovede HTTP. Ďalej, keď sa používajú skripty console.log (), the Konzola poštárov zobrazí tieto správy:

7. Vytvorenie postupnosti žiadostí

Doteraz sme sa sústredili na jednu požiadavku HTTP. Teraz sa pozrime, čo môžeme urobiť s viacerými požiadavkami. Spojením viacerých požiadaviek dokážeme simulovať a otestovať pracovný tok typu klient-server.

V tejto časti použijeme to, čo sme sa naučili, na vytvorenie sledu požiadaviek. Konkrétne pridáme ďalšie tri žiadosti o vykonanie po žiadosti POST, ktorú sme už vytvorili. Bude to GET, DELETE a nakoniec ďalší GET.

7.1. Zaznamenávanie hodnôt odpovedí do premenných

Predtým, ako vytvoríme naše nové požiadavky, urobme úpravu našej existujúcej požiadavky POST. Pretože nevieme, ktoré ID server každému pridelí foo inštanciu, môžeme použiť premennú na zachytenie id vráteného serverom.

Aby sme toto ID zachytili, pridáme na koniec testovacieho skriptu požiadavky POST ešte jeden riadok:

pm.variables.set ("id", pm.response.json (). id);

The pm.variables.set () funkcia vezme hodnotu a priradí ju k dočasnej premennej. V tomto prípade vytvárame id premenná na uloženie hodnoty ID nášho objektu. Po nastavení môžeme k tejto premennej pristupovať v neskorších požiadavkách.

7.2. Pridáva sa žiadosť GET

Teraz pomocou techník z predchádzajúcich častí pridajme po požiadavke POST požiadavku GET.

S touto požiadavkou GET získame to isté foo inštancia, ktorú vytvorila požiadavka POST. Pojmenujme túto požiadavku GET ako „dostať foo“.

URL žiadosti GET je:

// localhost: 8082 / spring-boot-rest / auth / foos / {{id}}

V tejto adrese URL odkazujeme na id premenná, ktorú sme predtým nastavili počas požiadavky POST. Teda požiadavka GET by mala načítať rovnakú inštanciu, ktorá bola vytvorená POST.

Na premenné, ktoré sa objavujú mimo skriptov, sa odkazuje pomocou syntaxe dvojitých zátvoriek {{id}}.

Pretože neexistuje žiadny orgán pre požiadavku GET, pokračujme priamo k Skúšky tab. Pretože sú testy podobné, môžeme testy skopírovať z požiadavky POST a potom vykonať niekoľko zmien.

Po prvé, nemusíme nastavovať id opäť premenná, tak tento riadok nekopírujme.

Po druhé, vieme, ktoré ID môžeme tentokrát očakávať, takže si toto ID overme. Môžeme použiť id premenná na to:

pm.test ("stav úspechu", () => pm.response.to.be.success); pm.test ("názov je správny", () => pm.expect (pm.response.json (). name) .to.equal ("transformátory")); pm.test ("id je správne", () => pm.expect (pm.response.json (). id) .to.equal (pm.variables.get ("id")));

Pretože syntax dvojitej zátvorky nie je platný JavaScript, používame pm.variables.get () funkcia prístupu k id premenná.

Na záver si uložme zmeny tak, ako sme to robili predtým.

7.3. Pridanie požiadavky na ODSTRÁNENIE

Ďalej pridáme požiadavku na ODSTRÁNENIE, ktorá odstráni súbor foo objekt zo servera.

Pokračujeme pridaním novej žiadosti po GET a nastavením jej metódy na DELETE. Túto požiadavku môžeme pomenovať “vymazať foo“.

URL odstránenia je identické s GET URL:

// localhost: 8082 / spring-boot-rest / auth / foos / {{id}}

Odpoveď nebude mať telo na testovanie, ale môžeme otestovať kód odpovede. Preto bude mať požiadavka na vymazanie iba jeden test:

pm.test ("stav úspechu", () => pm.response.to.be.success);

7.4. Overuje sa VYMAZANIE

Na záver pridajme ďalšiu kópiu požiadavky GET, aby sme overili, či funkcia DELETE skutočne fungovala. Tentokrát namiesto vytvorenia žiadosti úplne od začiatku duplikujeme našu prvú požiadavku GET.

Ak chcete duplikovať žiadosť, kliknite na ňu pravým tlačidlom myši a zobrazí sa rozbaľovacia ponuka. Potom vyberieme Duplikát.

Slovo bude mať duplicitná žiadosť Kópia pripojený k svojmu názvu. Premenujme to na „overiť vymazať„Aby nedošlo k zámene. The Premenovať možnosť je k dispozícii kliknutím pravým tlačidlom myši na požiadavku.

V predvolenom nastavení sa duplicitná žiadosť zobrazuje okamžite po pôvodnej žiadosti. Vo výsledku ho budeme musieť presunúť pod požiadavku ODSTRÁNIŤ.

Posledným krokom je úprava testov. Skôr ako to však urobíme, využime príležitosť a prezrime si neúspešný test.

Skopírovali sme požiadavku GET a presunuli sme ju za príkaz DELETE, ale testy sme zatiaľ neaktualizovali. Pretože požiadavka na vymazanie mala objekt vymazať, testy by mali zlyhať.

Nezabudnite uložiť všetky naše požiadavky a stlačte kláves Skúsiť znova v zberači. Podľa očakávaní naše testy zlyhali:

Keď je naša krátka obchádzka hotová, opravme testy.

Po kontrole neúspešných testov môžeme zistiť, že server odpovedá stavom 500. Preto v našom teste zmeníme stav.

Ďalej zobrazením neúspešnej odpovede v Konzola poštárov, dozvedáme sa, že odpoveď obsahuje a príčina nehnuteľnosť. Okrem toho príčina vlastnosť obsahuje reťazec „Nie je k dispozícii žiadna hodnota„. Môžeme to tiež otestovať:

pm.test ("stav je 500", () => pm.response.to.have.status (500)); pm.test ("nie je k dispozícii žiadna hodnota", () => pm.expect (pm.response.json (). príčina) .to.equal ("nie je k dispozícii žiadna hodnota"));

7.5. Spustenie celej zbierky

Teraz, keď sme pridali všetky požiadavky, spustíme celú kolekciu v bežcovi kolekcie:

Ak všetko prebehlo podľa plánu, mali by sme mať deväť úspešných testov.

8. Export a import zbierky

Aj keď Poštár ukladá naše zbierky na súkromné ​​miestne miesto, možno by sme chceli zbierku zdieľať. Za týmto účelom kolekciu exportujeme do súboru JSON.

The Export príkaz je k dispozícii v ponuke elipsy kolekcie. Po zobrazení výzvy na zadanie verzie súboru JSON si vyberieme najnovšiu odporúčanú verziu.

Po výbere verzie súboru vás Postman vyzve na zadanie názvu a umiestnenia exportovanej zbierky. Môžeme si napríklad zvoliť priečinok v rámci nášho projektu GitHub.

Na importovanie predtým exportovanej kolekcie použijeme Import tlačidlo. Nájdeme ho na paneli nástrojov hlavného okna Poštár. Keď Poštár vyzve na umiestnenie súboru, môžeme prejsť na súbor JSON, ktorý chceme importovať.

Stojí za zmienku, že Postman nesleduje exportované súbory. Výsledkom je, že Poštár neukáže vonkajšie zmeny, kým kolekciu znovu neimportujeme.

9. Záver

V tomto článku sme pomocou programu Postman vytvorili poloautomatické testy pre REST API. Aj keď tento článok slúži ako úvod do základných funkcií Postmana, sotva sme poškriabali povrch jeho schopností. Online dokumentácia Postman je cenným zdrojom pre hlbšie preskúmanie.

Kolekcia vytvorená v tomto tutoriále je k dispozícii na GitHub.