Skip to main content

Postman is een van de meest populaire tools voor het ontwikkelen en testen van API's. Ik gebruik het sinds 2017 en door te leren hoe ik Postman kan gebruiken om API's te testen, kon ik mijn testproces aanzienlijk versnellen.

In dit artikel leid ik je stap voor stap door het valideren van API-verzoeken met Postman. Aan het einde zou je in staat moeten zijn om je eigen geautomatiseerde tests te maken.  

Maar voordat we in de daadwerkelijke Postman-handleiding duiken, wil ik eerst enkele dingen over API's uitleggen.

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
By submitting you agree to receive occasional emails and acknowledge our Privacy Policy. You can unsubscribe at anytime.

Wat zijn API's?

API is een afkorting van Application Programming Interface. Nog steeds niet erg duidelijk, toch? 😅 Laat me dat toelichten:

Een API is een interface die bepaalt op welke manieren scripts of programma's kunnen communiceren met een applicatie of service. Ze werken door gegevens en informatie te delen tussen applicaties, systemen en apparaten.

De meest voorkomende API op dit moment is de REST API, die ik verderop in deze Postman API-testhandleiding zal gebruiken. REST is ook een acroniem voor REpresentational State Transfer. REST API's zijn gebaseerd op principes zoals communicatie tussen client en server, uniforme interfaces voor communicatie tussen systemen, stateloze bewerkingen en meer.

Communicatie vindt plaats via HTTP-verzoeken en -antwoorden.

De opbouw van HTTP-verzoeken

HTTP-verzoeken hebben 4 hoofdcomponenten:

  • De URL 
  • Het eindpunt, dat de specifieke bron vertegenwoordigt waarmee we willen communiceren.
  • De HTTP-methode—HTTP-methoden vertellen de server of we informatie proberen op te halen of welke wijzigingen we door de applicatie willen laten uitvoeren. Vandaag behandelen we de basisbewerkingen van CRUD:
    • Maken: POST
    • Lezen: GET
    • Bijwerken: PUT
    • Verwijderen: DELETE
  • De hoofdtekst van het verzoek. Deze is optioneel, afhankelijk van de methode die we gebruiken. In deze Postman-handleiding gebruiken we de indeling JSON (JavaScript Object Notation).

Get regular tech leadership wisdom for delivering better software and systems.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form

HTTP-antwoordcodes

Wanneer we een HTTP-verzoek doen, geeft de server een antwoordcode af die ons vertelt of het verzoek is geslaagd of niet. De belangrijkste categorieën van HTTP-antwoordcodes zijn:

  • 1xx: informatief antwoord
  • 2xx: geslaagd
  • 3xx: omleiding
  • 4xx: clientfout
  • 5xx: serverfout

Ik ben echt dol op deze visuele weergave van Julia Evans:

afbeelding van HTTP-statuscode
Lijst met de meest voorkomende HTTP-antwoordcodes (Bron)

Je vindt hier een volledige lijst met antwoordcodes, of als je ze liever door katten uitgelegd krijgt, hier 🐱‍👓

Oké, ik denk dat we genoeg hebben behandeld om aan de slag te gaan met de daadwerkelijke handleiding—laten we nu bekijken hoe je Postman gebruikt om API's te testen! 

Postman gebruiken om API's te testen (stap voor stap)

Je kunt Postman op twee manieren gebruiken: rechtstreeks vanuit de browser (je moet een account aanmaken om dit te kunnen doen), of geïnstalleerd op je lokale computer—voor deze optie is een account optioneel. 

Ik installeer het liever, simpelweg omdat ik niet houd van de rommel van te veel geopende browsertabbladen. Daarom zal ik vanaf nu de geïnstalleerde versie gebruiken.

Dit is een handleiding voor beginners, dus ik gebruik enkele eenvoudige testgevallen om te laten zien hoe je Postman gebruikt om een API te testen. De demotoepassing die ik gebruik is Swagger Petstore en het scenario dat ik ga testen is:

  • Voeg een nieuw huisdier toe aan de winkel met de status ‘pending’
  • Werk de status van het huisdier bij naar ‘available’
  • Controleer of de informatie over het huisdier is bijgewerkt
  • Verwijder het huisdier
  • Bevestig dat het huisdier is verwijderd

Oké, laten we beginnen!

gif van starten van API-test

Het eerste HTTP-verzoek in Postman

Met Postman kun je API-verzoeken in verzamelingen groeperen. Dit zijn groepen gerelateerde HTTP-verzoeken. Maak een nieuwe verzameling voor alle volgende verzoeken die je in de tests zult gebruiken:

schermafbeelding van HTTP-verzoek in Postman
Je kunt een nieuwe verzameling maken door op de knop Nieuw te klikken, Verzameling te selecteren en een naam voor die verzameling in te voeren.

Oké, je hebt nu dus een lege verzameling.

Klik op de URL 'Een verzoek toevoegen' of op de knop '+' in de lijst met tabbladen:

schermafbeelding van HTTP-verzoek toevoegen in Postman
Er wordt een nieuw tabblad geopend waarin je de elementen van het verzoek kunt toevoegen die ik eerder noemde.

De Swagger UI-pagina dient als documentatie voor de API.

De resource (het eindpunt) die je nodig hebt om een nieuw huisdier te maken is '/pet' en de HTTP-methode is POST.

Op het tabblad model zie je het object dat je als hoofdtekst van het verzoek moet verzenden, evenals de gegevenstypen voor elke waarde:

schermafbeelding van JSON-indeling

We gebruiken de JSON-indeling om de hoofdtekst van het antwoord te verzenden. Schakel daarom het keuzerondje 'onbewerkt' in en selecteer JSON in de vervolgkeuzelijst. 

De hoofdtekst van het verzoek zou er ongeveer zo uit moeten zien:

{

  "id": 0,

  "category": {

    "id": 0,

    "name": "dog"

  },

  "name": "Spike",

  "photoUrls": [

    "string"

  ],

  "tags": [

    {

      "id": 0,

      "name": "bulldog"

    }

  ],

  "status": "pending"

}

Je kunt de overige details eenvoudig toevoegen in het nieuwe tabblad voor het verzoek:

schermafbeelding van nieuw HTTP-verzoektabblad
Wat we hier hebben gedaan, is een nieuw object maken voor een huisdier met de naam Spike, dat behoort tot een categorie met de naam 'dog', de tag 'bulldog' heeft en de status 'pending'. 

Om dit nieuwe huisdier op de server te maken, klik je op de knop Verzenden.

Als alles goed gaat, ontvang je een succesvolle reactie en bevat de hoofdtekst van de reactie informatie over het huisdier, waaronder de ID ervan.

We hebben deze informatie verderop nodig:

schermafbeelding van nieuw huisdier maken

De volgende stap is het bijwerken van de informatie over het huisdier.

Hiervoor moet je dezelfde resource, '/pet', gebruiken, maar een verzoek verzenden met de HTTP-methode PUT.

Je kunt zien welke informatie je in de hoofdtekst van het verzoek moet verzenden:

screenshot voor het bijwerken van huisdiergegevens

Maak dus een nieuw verzoek met dezelfde URL, selecteer de PUT-methode en verzend dezelfde aanvraagbody, maar wijzig de statuswaarde in ‘available’ en gebruik de ID uit het vorige antwoord:

{

  "id": <voer hier de ID in>,

  "category": {

    "id": 0,

    "name": "dog"

  },

  "name": "Spike",

  "photoUrls": [

    "string"

  ],

  "tags": [

    {

      "id": 0,

      "name": "bulldog"

    }

  ],

  "status": "available"

}

Het antwoord zou opnieuw 200 OK moeten zijn. Laten we vervolgens de gegevens van het huisdier uitlezen om te controleren of de status correct is bijgewerkt. 

De HTTP-methode hiervoor is GET en het verzoek accepteert de ID als parameter:

screenshot van HTTP-methode met ID-parameter

Het antwoord bevat alle gegevens van het huisdier, inclusief de status, die nu de waarde ‘available’ heeft:

screenshot van antwoord met huisdiergegevens

Het verwijderingsverzoek wordt naar exact dezelfde URL als de GET-aanvraag verzonden (inclusief de ID-parameter), maar de geselecteerde HTTP-methode is DELETE:

screenshot van HTTP-methode voor DELETE-verzoek

Ook nu zou het verzoek succesvol moeten zijn en zou de HTTP-respons 200 moeten zijn:

screenshot van geslaagd HTTP DELETE-verzoek

Als je het GET-verzoek voor dezelfde huisdier-ID opnieuw verzendt, krijg je een mooie 404 HTTP-respons, omdat het huisdier niet meer op de server kan worden gevonden:

screenshot van 404 HTTP-verzoek

Tests toevoegen in Postman

Met de vorige stappen heb je alle stappen in het testscenario doorlopen, maar elk resultaat moest handmatig worden gevalideerd door de responscodes en -bodies te controleren. 

Laten we bekijken hoe je de API-tests kunt automatiseren met Postman, zodat je deze controles niet handmatig hoeft uit te voeren.

Begin met het eerste verzoek, de POST-aanvraag, en klik op het tabblad Tests van het verzoek. 

Kies aan de rechterkant het fragment ‘Statuscode: code is 200’. Fragmenten in Postman zijn vooraf gedefinieerde scripts die je kunt gebruiken, zodat je de code niet zelf handmatig hoeft te schrijven. Elke regel code die we invoeren op het tabblad Tests van het verzoek, wordt uitgevoerd nadat het verzoek is verzonden. 

Je kunt de naam van de test wijzigen in iets dat meer beschrijvend is (bijvoorbeeld ‘Het aanmaken van het huisdier is geslaagd’). 

Verzend het verzoek opnieuw. Deze keer zie je dat het tabblad Testresultaten van het antwoord aangeeft dat 1/1 tests is geslaagd, evenals de naam van de geslaagde test:

screenshot van tabblad met testresultaat

Je kunt dit fragment ook aan de PUT- en DELETE-verzoeken toevoegen. 

Gebruik het fragment ‘Responsbody: JSON-waardeverificatie’ om de statuswaarde in het antwoord van het GET-verzoek te valideren:

pm.test("Uw testnaam", function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.value).to.eql(100);

});

Dit codefragment slaat de respons op in een variabele met de naam jsonData, die wordt geparseerd. Vervolgens wordt de waarde van een kenmerk uitgelezen en vergeleken met een verwachte waarde. 

Voor ons betekent dit dat het kenmerk ‘status’ de waarde ‘available’ moet hebben. De test zou er daarom als volgt uit moeten zien:

pm.test("De status van het huisdier is 'available'", function () {

    var jsonData = pm.response.json();

    pm.expect(jsonData.status).to.eql("available");

});

Voor de laatste controle, die bevestigt dat het huisdier is verwijderd door de GET opnieuw uit te voeren, kunnen we het eerste GET-verzoek dupliceren en deze keer een test toevoegen die controleert of de HTTP-responscode 404 is:

schermafbeelding van API-tests

Je kunt de verzoeken binnen de collectie verplaatsen door ze te slepen en neer te zetten.

schermafbeelding van API-testverzoek

Variabelen gebruiken in Postman

Je hebt waarschijnlijk gemerkt dat we de ID uit het POST-verzoek handmatig moesten kopiëren en plakken in alle volgende verzoeken. Wat als er een eenvoudigere manier was om dit te doen?

Het goede nieuws is dat die er is! We kunnen Postman-variabelen gebruiken om herbruikbare waarden op te slaan. Als de waarden moeten veranderen, kunnen we ze op één plek wijzigen, op dezelfde manier als we dat in alle geautomatiseerde tests willen doen.

Postman-variabelen hebben 3 bereiken:

  • Globaal: variabelen die vanuit elke omgeving en elke collectie toegankelijk zijn
  • Omgeving: variabelen die op omgevingsniveau zijn opgeslagen. Ik heb in deze tutorial geen omgevingen gebruikt, maar het is goed om te weten dat Postman ons toestaat verschillende omgevingen aan te maken voor de verschillende omgevingen waarmee we werken. Bijvoorbeeld afzonderlijke omgevingen voor ontwikkeling, UAT en productie
  • Collectie: deze variabelen worden op collectieniveau opgeslagen en zijn toegankelijk vanuit alle verzoeken binnen de collectie.

Er zijn meerdere manieren om collectievariabelen in te stellen. 

De eenvoudigste manier is om de variabele rechtstreeks vanuit de collectie aan te maken.

Om dit te doen, klik je op de naam van de collectie, selecteer je het tabblad met variabelen en voer je de variabelenaam en -waarde in:

schermafbeelding van API-testcollectie

Om deze variabele te gebruiken, vervang je de oorspronkelijke waarde in de verzoeken door de variabelenaam tussen twee accolades, zoals hier: {{petId}}

Je moet deze gebruiken in de hoofdteksten van de POST- en PUT-verzoeken, voor de parameter “id”, zoals hier:

"id": {{petId}},

En in de URL van de GET- en DELETE-verzoeken, zoals hier: https://petstore.swagger.io/v2/pet/{{petId}}

Je kunt de definitieve versie van de collectie hier bekijken.

De Postman-collectie uitvoeren

En nu komt het leukste gedeelte! Het hele doel van deze tutorial was om je te laten zien hoe je geautomatiseerde tests uitvoert met Postman. Alles wat we eerder hebben gedaan, was ter voorbereiding op dit onderdeel. 

Om de tests automatisch uit te voeren, klik je met de rechtermuisknop op de naam van de collectie of beweeg je de muis eroverheen. Klik vervolgens op het menu met de drie puntjes naast de naam en selecteer je ‘Collectie uitvoeren’. 

schermafbeelding van collectie uitvoeren in API-test

Hiermee wordt de Collectierunner geopend:

schermafbeelding van Collectierunner

Op dit scherm kun je selecteren welke van je verzoeken je wilt verzenden, de volgorde ervan wijzigen, de collectie meerdere keren uitvoeren (door het aantal iteraties te verhogen) of vertragingen tussen de verzoeken toevoegen.

Je kunt de standaardwaarden voorlopig gewoon laten staan en op de knop ‘Uitvoeren’ klikken. Nadat de uitvoering is voltooid, kun je met één simpele klik de testresultaten bekijken voor alle scenario’s die we wilden testen:

schermafbeelding van alle API-tests

En dat was alles! Als je alle stappen in dit artikel hebt gevolgd, zou je nu je eerste geautomatiseerde API-tests in Postman moeten hebben! 🚀

Samenvatting

Postman is een zeer handige tool voor het testen van API’s, en dit artikel heeft slechts het oppervlak aangeraakt. We hebben echter wel behandeld hoe je HTTP-verzoeken verstuurt, hoe je de antwoorden leest, hoe je tests maakt en hoe je de testresultaten automatisch controleert.

Vond je dit artikel interessant? Abonneer je dan op de QA Lead-nieuwsbrief, zodat je op de hoogte blijft van al het nieuws en de nieuwste trends op het gebied van softwaretesten.