trochu pozadí
v dnešní době jsou potrubí ci nutností v našem vývojovém dni, což nám pomáhá zkrátit dodací cykly a přinést kvalitnější software.
jako backend vývojář, API se staly cornestone na většině mých aplikací, takže jejich testování se stalo nutností.
mít testovací fázi API v našem potrubí CI nám přináší důvěru v kvalitu produktu a upozorní nás, pokud se něco zlomilo.
Postman
Postman je skvělý nástroj, který pomáhá vývojářům v každé fázi našeho životního cyklu API. Má skvělou dokumentaci a stále větší komunitu vývojářů, kteří ji používají, takže je snadné najít příspěvky vysvětlující skvělé tipy a triky.
sbírky
pošťák usnadňuje uspořádání našich různých požadavků do sbírek. Osobně vytvářím kolekci pro každý projekt, který chci otestovat. Pak uvnitř kolekce vytvořím složku pro každou entitu v projektu a snažím se pokrýt každý koncový bod v API.
prostředí
pošťák nám umožňuje vytvářet různá prostředí pro spouštění našich požadavků. Jako skutečný příklad bych vám řekl, že pracuji na třech různých prostředích: Moje místní prostředí, pracovní prostředí a produkční prostředí, takže vytvářím tři různá prostředí s proměnnými, které představují měnící se data mezi prostředími (jako základní cesta pro požadavky API). Tímto způsobem mohu definovat jediný požadavek, ale snadno jej zacílit na moje tři různá prostředí. Přemýšlejte o tom, jak snadné by bylo změnit nebo přidat nové prostředí!
požadavky na testování
jednou z největších funkcí pošťáka je to, že vám umožňuje kódovat testy, které běží při každém spuštění požadavku. Jsou psány v JS a mají skvělou sadu tvrzení pro kontrolu věcí, jako je kód odpovědi, tělo odpovědi o záhlaví odpovědí.
sladký! Jakmile jsme napsali testovací sadu, která pokryje naše API, použijeme Collection Runner, vestavěný nástroj poskytovaný pošťákem ke spuštění každého požadavku sbírky a výstupu zprávy o výsledcích testů.
Bonus: Někdy chceme spustit naše požadavky v určitém pořadí a hádejte co? Pošťák nám to umožňuje! Zkontrolujte to při vytváření pracovních postupů
co máme zatím?
v tomto okamžiku jsme vytvořili sbírku pošťáků se spoustou požadavků, které by mohly cílit na naše API ve všech našich prostředích. Kromě toho má každý požadavek několik testů, které zkontrolují, zda funguje správně. Jaký čas být naživu!
Newman
pamatujete si běžce sbírky, o kterém jsem se zmínil dříve? To by mohlo spustit každý požadavek v naší sbírce s jednoduchým kliknutím. Ale co nástroj příkazového řádku, který udělá totéž? Newman to dělá. Newman je kolekce příkazového řádku běžec pro pošťák, který vám umožní spustit a otestovat sbírku pošťák přímo z příkazového řádku a integrovat ji snadno ci servery, což z něj dělá skvělý nástroj pro náš účel: automatizovat náš test API s Jenkins.
spusťte kolekci
abychom mohli spustit kolekci s Newmanem, musíme ji nejprve exportovat z Postmanu. Vzhledem k tomu, že v některých našich požadavcích hrají některé proměnné, musíme také exportovat vhodné prostředí. Jakmile máme oba soubory, jsme schopni spustit sbírku s:
$ newman run our.postman_collection.json -e our.postman_environment.json
a uvidíme zprávu o běhu sbírky, podobně jako ostatní testovací rámce.
formátování výstupu
sestavu lze formátovat různými způsoby. Aby toho bylo dosaženo, Newman poskytuje sadu reportérů pro podporu různých výstupních formátů, jako je JSON, XUNIT nebo HTML. Kromě toho si můžete vytvořit svůj vlastní reportér formátovat zprávu v libovolném formátu, který chcete.
Jenkins
Cool, definovali jsme naši testovací sadu API s pošťákem a jsme schopni ji spustit z příkazového řádku a získat pěknou zprávu o dosavadních výsledcích s Newmanem. Ale teď chceme zahrnout naše úžasné nové dovednosti do našeho potrubí CI.
zřeknutí se odpovědnosti: používáme Jenkins jako automatizační server k vybudování našich potrubí CI/CD a provozujeme naše potrubí CI v kontejneru Docker, který má nainstalovány všechny potřebné nástroje (například Newman).
míchání věcí
v podstatě budeme potřebovat tři soubory, abychom zahrnuli náš test API do potrubí CI:
- Jenkinsfile, který definuje náš pipeline
- Postman Collection, který definuje naši sadu požadavků a testů
- Postman Environment, který definuje proměnné cílového prostředí
všechny z nich zahrnujeme do repozitáře projektu, takže můžeme těžit z kontroly verzí nad nimi a sledovat jejich změny.
dost mluvení, pojďme kód!
musíme vytvořit novou fázi v našem potrubí pro spuštění testu API. Obvykle to dáváme po jednotkových a integračních testech, abychom se ujistili, že vše běží podle očekávání před testováním rozhraní.
pipeline { ... stage('Test API Rest') { steps { sh 'newman run tests/Newman/our.postman_collection.json -e tests/Newman/env/test.postman_environment.json -r junit,html --reporter-junit-export var/reports/newman/junit/newman.xml --reporter-html-export var/reports/newman/html/index.html' publishHTML() } } ...}
jak vidíte, vyvoláme příkaz Spustit Newmana a poskytneme naší sbírce soubor testovacího prostředí jako parametry. Kromě toho také informujeme, které reportéry chceme použít (JUNIT, HTML) a kde budou výstupy uloženy.
jako bonus používáme plugin HTML PUblisher Jenkins k propojení sestavy HTML s sestavením.
doufám, že se vám tato cesta líbila stejně, jako jsem ji psal, a jako vždy bude uvítána zpětná vazba!