Skip to main content

Postman, Newman en CI/CD

Placeholder
Technologie

Postman, Newman en CI/CD

12 May 2021 - reading time: 
7
 min.

Postman, geweldige tool, heel eenvoudig om je net geschreven REST endpoints even te testen. Het wordt je ook heel gemakkelijk gemaakt om collecties te delen met je collega’s en dat maakt het het dan weer eenvoudig om samen te werken tussen verschillende teams...  

Wanneer een developer aan de frontend aan het werken is, wordt dit zelfs een communicatiemiddel op zich, een mooi extraatje bovenop je obligate swagger API.

Op het einde van het project is dit meestal een mooi uitgebreid collectie geworden en dan is het jammer om dit niet te gebruiken in je pipelines natuurlijk.

Een mooie regressie test waarbij je REST Api kan aftesten en deze integreren in een pipeline zou het helemaal afmaken.

Postman reikt hier zelf de oplossing aan eigenlijk, ze dragen Newman voor een collection runner voor postman.  Newman is tool die in staat is om een postman collectie via de commandline uit te voeren.

Dit maakt het een ideale kandidaat om te integreren in onze CI pipelines.

De aanpak is als volgt:

  • Bouw een Docker met onze spring boot REST API applicatie

  • Push deze naar de Azure Container Registry

  • Start dan onze API testing pipeline met als parameter onze TAG

  • Haal onze docker image op

  • Bouw onze infrastructuur op via een docker-compose file

  • De infrastructuur bevat in ons geval een Message Oriented Middleware en een database en linked dit met onze REST API applicatie.

  • Vervolgens installeren we newman via NPM en lanceren we onze collectie testen.

  • Dit zal een test report produceren, dat we dan kunnen publiceren onze Azure Devops

 

De layout van onze Azure pipeline ziet er dan als volgt uit

Azure Devops pipeline

Newman installeren is niet meer dan de npm package binnenhalen.

npm newman

De scenarios runnen gaat dan als volgt.  Je kan meegeven welke reporter je wenst in ons geval wensen we de junit reporter.

newman run One16-Scenarios.postman_collection.json -e One16.postman_environment.json --reporters cli,junit --reporter-junit-export ResultsjunitReport.xml

Newman zal een Junit rapport publiceren in het meegegeven xml formaat, nl ResultsjunitReport.xml.  Dit omdat we gevraagd hebben om de resultaten in junit formaat te "reporten".

We kunnen meerdere reporters meegeven en dit geval vragen we ook de cli reporter.

Dit geeft het volgende resultaat.

CLI-Newman-Reporter

Als laatste stap in onze pipeline gaan we dan onze ResultsjunitReport.xml rapport publiceren in Azure Devops en vragen we om onze containers proper stop te zetten.

Azure Devops test results