TestAutomatisering & PerformanceTesten

Postman API testen in CI

Integreer Newman in 6 simpele stappen in Jenkins, inclusief JUnit testrapport

Voor het testen en monitoren van web API’s is Postman een populaire tool. De community versie is gratis en bovendien behoorlijk compleet. Ook de Pro versie is best betaalbaar, zeker in vergelijking met bijv. SOAP-UI.

In deze blog wordt beschreven hoe je jouw Postman collectie laat draaien vanuit Jenkins en hoe je hierbij een praktisch JUnit test report krijgt.

Als je reeds een collectie van web requests hebt opgebouwd in Postman, dan kun je deze op een aantal manieren benutten:

  1. Via de Postman GUI (Chrome extensie of native Windows / Mac applicatie)
  2. Via de Postman Runner module in de applicatie
  3. Via Newman, de Command-Line Interface

Methode 1 is volledig handmatig. Dat betekent dat je iedere request handmatig dient te verzenden om de betreffende response te kunnen testen. Hoewel dat prima volstaat om een specifieke request te verifiëren is het behoorlijk omslachtig wanneer je een complete set aan requests na wilt lopen, bijvoorbeeld voor een regressietest van je API.
Methode 2 is wel geschikt om een complete collectie te draaien, maar vereist wel dat je handmatig een configuratie instelt in de GUI. Wil je je Postman collectie maximaal automatiseren? Ga dan voor methode 3. Je roept de collectie dan aan middels Newman: de command-line interface van Postman. Newman biedt bovendien de mogelijkheid om je collectie volledig geautomatiseerd te draaien, bijvoorbeeld door het in Jenkins te integreren.

1. Installeer de NodeJS plug-in in Jenkins

Newman is een NodeJS applicatie. Daarom is het zaak om NodeJS te kunnen gebruiken vanuit Jenkins. Om NodeJS te installeren ga je naar:

Jenkins > Manage Jenkins > Manage Plugins

Kijk bij de ‘Installed’ tab of je de NodeJS plug-in ziet. Zo niet, selecteer hem dan in de ‘Available’ tab en klik op ‘Install without restart’.

2. Configureer NodeJS met Newman

Nu Jenkins kan beschikken over NodeJS, gaan we een nieuwe NodeJS installatie aanmaken en de npm packages definiëren die geïnstalleerd dienen te worden. Ga daarvoor naar:

Jenkins > Manage Jenkins > Global Tool Configuration

  1. Selecteer daar ‘NodeJS installations’
  2. Geef een naam voor de installatie en kies een recente versie van NodeJS
  3. Bij ‘global npm packages to install’ geven we alleen ‘newman’ op
  4. Klik nu op ‘Save’

3. Maak een nieuw Jenkins project aan

Nu kunnen we in Jenkins een project aanmaken. Ga daarvoor naar:

Jenkins > New Item

Geef het project een naam, selecteer template ‘Freestyle project’ en klik OK.

We gaan hierna 3 stappen toevoegen in dit project: 2 bouwstappen en 1 post-build stap voor het testrapport.

4. Maak een bouwstap aan voor NodeJS

Scroll naar de ‘Build’ sectie en klik op ‘Add build step’. Kies vervolgens ‘Execute NodeJS script’ en selecteer de installatie die je onder stap 2 hebt aangemaakt.

5. Maak een tweede bouwstap aan voor Newman

In deze bouwstap zorgen we ervoor dat Newman je collectie requests (en eventuele tests) uit gaat voeren. Daarvoor moet Newman wel kunnen beschikken over je Postman collectie. Een simpele manier daarvoor is de optie ‘Share collection’ in de Postman applicatie.

Ga naar je Postman collectie en selecteer ‘Share Collection’.

Selecteer de ‘Get Link’ tab en kopieer de link naar je klembord.

Terug in Jenkins, kies nogmaals ‘Add build step’ en selecteer ditmaal ‘Execute Shell’. Hierin plaatsen we het Newman commando:

  • Om de collectie te draaien:                      newman run <Collection share link van klembord>
  • CLI & JUnit rapporten genereren:           –reporters cli,junit
  • Om het JUnit rapport op te slaan:           –reporter-junit-export <“newman/report.xml”>

Het complete commando wordt dan als volgt:

newman run https://www.getpostman.com/collections/12a34b56c78d90 -r cli,junit –reporter-junit-export “newman/SmoothieFlavorsTestReport.xml”

Het JUnit rapport werkt uiteraard alleen als je collectie ook testen bevat. Anders kun je deze commando’s achterwege laten.

6. Publiceer het JUnit testrapport

Het XML-rapport van JUnit is inmiddels aangemaakt, maar voor een leesbare weergave moet het nog gepubliceerd worden binnen Jenkins. Maak een nieuwe ‘Post-build Action’ aan en kies voor ‘Publish JUnit test result report’. De locatie waar de XML-rapporten staan is: “newman/*.xml”. Druk tenslotte op Save om je Jenkins project op te slaan!

Eventuele vervolgstappen

Je bestaande Postman collectie draait nu in Jenkins! Als je een nieuwe bouwpoging start, dan wordt je collectie doorlopen en de resultaten worden door JUnit verwerkt. De bouwpoging slaagt wanneer er geen fouten optreden en faalt indien één van de testen faalt.

Natuurlijk zijn er nog wat mogelijke vervolgstappen om je Postman collectie nog waardevoller te maken voor jou en je project:

  • Maak in Jenkins een Post-build stap aan om het project op de hoogte te houden. Dat kan bijvoorbeeld door middel van een e-mail of Slack-bericht met daarin een korte samenvatting van de resultaten.
  • Voeg een build trigger toe om het je collectie op een vast interval of na een specifiek event te starten.
  • Schakel versiebeheer in (Postman Pro licentie vereist) zodat je gemakkelijker kunt samenwerken en je collectie up-to-date houdt. De gedeelde collectie die we als voorbeeld gebruiken is namelijk statisch, en moet dus met de hand geüpdatet worden na iedere aanpassing.

Leuk dat je dit blog hebt gelezen. Ik ben nieuwsgierig naar jouw ervaringen. Heb je nog tips? Of heb je vragen of opmerkingen? We horen het graag!

Dit bericht is geplaatst in Testautomatisering en getagd in API testen Jenkins Postman Test Automation

Eén reactie op “Postman API testen in CI”

  1. Bas Dam schreef:

    4. Als je een Postman Pro licentie hebt, kan je je testen ook runnen als monitoring service. Dit is een makkelijke opstap voordat je met Jenkins begint omdat je geen environment variabelen hoeft te importeren/exporteren. Ook automatische mail bij errors is eenvoudig in te stellen. Uiteindelijk wil je wellicht overstappen op Jenkins omdat het aantal monitoring requests per maand beperkt is (of je moet bijkopen) en het testrapport is wat minder uitgebreid.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Nieuws

Blijf op de hoogte

Don’t be a fool, get the right tool!

30/06/2020

Heb jij weleens een keuze gemaakt voor een tool die achteraf gezien toch niet de verstandigste bleek? Helaas een ervaring die veel IT professionals weleens opdoen. En gezien de tools in de moderne ontwikkelomgevingen niet meer aan te slepen zijn, denk ik dat dit nog weleens vaker het geval gaat zijn.. Als testautomatiseerders hebben wij […]

Performance en de cloud

27/05/2020

Eén van de meest genoemde voordelen van de cloud is de in theorie oneindige schaalbaarheid. Zo zou het niet meer nodig zijn om als organisatie veel reservecapaciteit in te richten om pieken op te vangen en de performancerisico’s zouden helemaal verdwijnen. Maar is dat wel altijd zo? Wanneer wel, wanneer niet? Duidelijk is, dat wanneer […]

Ervaringen Performance.Now() 2019

13/12/2019

Ervaringen conferentie PerfNow

Performance test in de pipeline

25/10/2019

In deze blog geef ik kort en bondig neer in welke opzet en met welke tooling ik performancetesten heb geïntegreerd in de pijplijn bij mijn huidige opdracht.

Circle-CI, van code naar webserver met één klik.

13/09/2019

Wanneer je ‘vroeger’ een website had, waren er altijd flink wat handelingen nodig om files via een FTP client op een webserver te krijgen. Vandaag de dag, met behulp van een verscheidenheid aan tooltjes, is dat een fluitje van een cent. Daarnaast krijg je een arsenaal aan mogelijkheden mee als builden, testen, etc.. In deze […]

Een korte intro in data-analyse met R

10/07/2019

Een blog over hoe je met behulp van R grote hoeveelheden data kan analyseren. Een tool dat je helpt bij de analyse van bijvoorbeeld load- en stresstestresultaten.

Installatie Oracle ATS op Windows

28/03/2019

Handleiding over hoe je Oracle ATS installeert op Windows (Versie 13.x of hoger)

Postman API testen in CI

01/02/2019

beschrijving van hoe je jouw Postman collectie laat draaien vanuit Jenkins en hoe je hierbij een praktisch JUnit test report krijgt.

Workshop ‘Stop de Magie!’ bij Qquest

04/12/2018

In het kader van de 4e techday van Qquest heeft Chris met ondersteuning van HenkJaap een workshop gegeven. Basis was de presentatie en demo ‘No more magic’ van Bas en Chris, welke al een groot succes was op de TestAutomationDay en TestNet. Centraal bij het onderwerp ‘No more Magic’ staat het idee dat er bij […]

Visual Regression Testing – Wat is het en wat heb je eraan?

07/11/2018

Visual Regression Testing, of visuele regressie testen, is een categorie van testen die zich focust op het identificeren van visuele wijzigingen tussen iteraties of versies van een website. Dit kan handmatig door schermen of schermafdrukken te vergelijken, maar het is beter herhaalbaar en sneller te testen door dit automatisch te doen. Het mooiste is om deze testen als een […]

Meer efficiency en flexibiliteit in API’s

04/10/2018

Er wordt steeds meer gebruik gemaakt van GraphQL API. Tijdens mijn laatste opdracht heb ik hier dan ook mee gewerkt.. Graag deel ik mijn ervaringen hierover in een aantal blogs. In deze eerste blog wil ik het graag hebben over de uitdagingen met REST API en hoe GraphQL deze oplost. Maar eerst even een korte […]

Impact tooling op performance: Dynatrace

21/09/2018

In deze blog geef ik kort de resultaten weer van een onderzoekje dat ik bij één van mijn laatste opdrachten heb gedaan naar de impact van het gebruik van de tool Dynatrace op de infrastructuur waar het op draait. Mocht je gebruik maken van tooling als Dynatrace of op een andere manier geïnteresseerd zijn in […]