Automatizálja API tesztjeit a Jenkins, Postman és Newman

egy kis háttér

manapság a CI csővezetékek elengedhetetlenek a fejlesztési napi munkánkhoz, segítve a szállítási ciklusok lerövidítését és a jobb minőségű szoftverek előállítását.

háttérfejlesztőként az API-k a legtöbb alkalmazásomban cornestone lettek, így a tesztelésük kötelezővé vált.

A CI-folyamat API tesztelési szakasza bizalmat ad nekünk a termék minőségében, és figyelmeztet minket, ha valami elromlott.

Postman

Postman egy nagyszerű eszköz, amely segít a fejlesztőknek az API életciklusunk minden szakaszában. Nagyszerű dokumentációval rendelkezik, és egyre inkább a fejlesztők közössége használja, így könnyű megtalálni a hűvös tippeket és trükköket magyarázó bejegyzéseket.

gyűjtemények

a Postman megkönnyíti a különböző kérések gyűjteményekbe szervezését. Személy szerint minden projekthez létrehozok egy gyűjteményt, amelyet tesztelni akarok. Ezután a gyűjteményen belül létrehozok egy mappát a projekt minden entitásához, megpróbálva lefedni az API minden végpontját.

 gyűjtemények által szervezett kérések

a kéréseket entitások szervezik

környezetek

a Postman lehetővé teszi számunkra, hogy különböző környezeteket hozzunk létre kéréseink futtatásához. Valódi példát mutatva azt mondanám, hogy három különböző környezetben dolgozom: a helyi környezetemben, a staging környezetben és a termelési környezetben, ezért három különböző környezetet hozok létre változókkal, amelyek a környezetek közötti változó adatokat képviselik (például az API-kérések alapútvonalát). Így egyetlen kérést definiálhatok, de könnyen megcélozhatom a három különböző környezetemre. Gondoljon arra, milyen egyszerű lenne megváltoztatni vagy új környezetet hozzáadni!

 környezeti változók használata kérésre url

az alapút kinyerése környezeti változóként a különböző környezetek megcélzásához

tesztelési kérelmek

a Postman egyik legnagyobb jellemzője, hogy lehetővé teszi a tesztek kódolását, amelyek minden alkalommal futnak, amikor egy kérés fut. Js-ben vannak írva, és hűvös állításokkal rendelkeznek olyan dolgok ellenőrzésére, mint a válaszkód, a választest o válaszfejlécek.

 egy kérés néhány teszttel

kérés néhány teszttel

király! Miután írtunk egy tesztcsomagot az API lefedésére, a Collection Runner-t használjuk, amely a Postman által biztosított beépített eszköz a gyűjtemény minden kérésének futtatásához és a teszteredményekről szóló jelentés kiadásához.

 gyűjtemény futó vizsgálati jelentés

milyen gyönyörűek a zöld rétek…

bónusz: Néha szeretnénk futtatni a kéréseket egy bizonyos sorrendben, és tudod mit? A postás megengedi, hogy megtegyük! Ellenőrizze az építési munkafolyamatok kiadásánál

mi van eddig?

ezen a ponton felépítettünk egy Postás gyűjteményt egy csomó kéréssel, amely megcélozhatja az API-t minden környezetünkben. Emellett minden kérésnek több tesztje van annak ellenőrzésére, hogy megfelelően működik-e. Milyen idő az életben lenni!

Newman

emlékszel a gyűjtemény futó említettem korábban? Meg lehet futtatni minden kérést a gyűjtemény egy egyszerű kattintással. De mi a helyzet egy parancssori eszközzel, hogy ugyanezt tegye? Newman csinálja. Newman egy parancssori gyűjtemény futó Postman, amely lehetővé teszi, hogy futtassa és tesztelje a Postman gyűjtemény közvetlenül a parancssorból, és integrálja azt könnyen CI szerverek, ami miatt egy nagyszerű eszköz a célunk: automatizálja API teszt Jenkins.

futtasson egy gyűjteményt

annak érdekében, hogy egy gyűjteményt newmannal futtassunk, először a Postman-ból kell exportálnunk. Mivel néhány változó játszik körül néhány kérésünkben, a megfelelő környezetet is exportálnunk kell. Miután mindkét fájl megvan, képesek vagyunk futtatni a gyűjteményt:

$ newman run our.postman_collection.json -e our.postman_environment.json

látni fogunk egy jelentést a gyűjtemény futásáról, hasonlóan a többi tesztelési keretrendszerhez.

 Newman CLI vizsgálati jelentés

Newman CLI vizsgálati jelentés

a kimenet formázása

a jelentés különböző módon formázható. Ennek elérése érdekében a Newman riportereket biztosít a különböző kimeneti formátumok, például a JSON, az XUNIT vagy a HTML támogatására. Emellett létrehozhat saját riportert a jelentés bármilyen formátumban történő formázásához.

Jenkins

Cool, már meghatározott API teszt suite Postman és képesek vagyunk futtatni a parancssorból, és így egy szép jelentést az eredmények eddig Newman. De most azt akarjuk, hogy tartalmazza a félelmetes új készség a CI csővezeték.

jogi nyilatkozat: a Jenkins-t automatizálási szerverként használjuk a CI/CD csővezetékek felépítéséhez, és a CI csővezetéket egy Docker tárolóban futtatjuk, amely minden szükséges eszközt telepített (például Newman).

a dolgok összekeverése

alapvetően három fájlra lesz szükségünk ahhoz, hogy az API tesztünket a CI-folyamatba belefoglaljuk:

  • Jenkinsfile, amely meghatározza a folyamatunkat
  • Postman Collection, amely meghatározza a kéréseinket és tesztjeinket
  • Postman környezet, amely meghatározza a célkörnyezet változóit

mindegyiket belefoglaljuk a projekt tárházába, így kihasználhatjuk a verzióvezérlést és nyomon követhetjük a változásokat.

elég beszéd, nézzük kód!

létre kell hoznunk egy új szakaszt a folyamatunkban az API teszt futtatásához. Általában az egység-és integrációs tesztek után tesszük, hogy megbizonyosodjunk arról, hogy minden a várt módon fut-e az interfész tesztelése előtt.

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() } } ...}

mint látható, meghívjuk a Newman run parancsát, megadva a gyűjteményünket a tesztkörnyezet fájl paraméterként. Ezen kívül azt is tájékoztatjuk, hogy mely riportereket szeretnénk használni (JUNIT, HTML), és hol tárolják a kimeneteket.

bónuszként a HTML PUblisher Jenkins plugint használjuk a HTML jelentés összekapcsolására a buildhez.

remélem tetszett ez az utazás, mint én írtam, és, mint mindig, visszajelzést szívesen!

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.