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.
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!
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.
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.
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.
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!