background

Geautomatiseerde API testing via Postman en Jenkins

29 May 2017

API endpoint testing is een onderdeel van integratie testing en valideert dat de ontwikkelde application programming interfaces (APIs) voldoen aan de vereiste specificaties (functionaliteiten, performantie, security, ...). Aangezien API's geen grafische user interface (GUI) hebben, gebeurd het testen door het verzenden en ontvangen van meestal JSON of XML payloads over http(s).

Waarom API testing?

Een grafische user interface is niet langer koning. In een wereld van mobiele applicaties, Internet of Things (IoT) en microservices worden API's steeds meer belangrijker. Door het steeds groeiende aantal applicaties die steeds met elkaar dienen te communiceren is het ook van groot belang dat deze allemaal stabiel blijven draaien.

Ook software ontwikkeling methodologieën zoals XP en Agile zorgen ervoor dat we met een steeds hogere frequentie code gaan releasen. Door het snelle releasen van code is er ook een grote noodzaak aan een meer geautomatiseerde vorm van testen. Het steeds enkel manueel testen van API's na iedere sprint zou hier nooit snel genoeg gaan. Zo kan door het project heen bij iedere release snel gekeken worden of bestaande functionaliteiten naar behoren blijven werken en nieuwe tests geschreven worden voor de nieuwe functionaliteiten. 

De grootste voordelen van API testing te voorzien in het ontwikkelproces:

Hergebruik: Dezelfde testen die we maken voor development, kunnen in postman via environments gewoon hergebruikt worden voor de staging en live omgeving. En kunnen zowel voor de ontwikkelaars als voor het implementatie team een uitgebreide leidraad vormen.

Gedetailleerde test coverage:  Dit is uiterst belangrijk om de kwaliteit van een product te garanderen. Het implementeren van tests van in het begin van het ontwikkelproces zal veel issues vermijden tijdens de ontwikkelingsfase die misschien anders moeilijker op te sporen zouden zijn. Deze tests in combinatie met de tests die toegevoegd worden naargelang het product groeit of de nood aan bepaalde tests toeneemt, zullen er voor zorgen dat nieuwe functionaliteiten zonder veel zorgen live geplaatst kunnen worden en zullen resulteren in minder support tickets eenmaal de applicatie live staat.

Kwaliteit van het product: Door op voorhand API test scenarios te schrijven op basis van de specificaties in plaats van op de uiteindelijk API wanneer deze klaar is zullen de tests meer de exotische scenarios kunnen opvangen en een eerste hands vertaling zijn van de specificaties. Door de tests te schrijven eens de API klaar is zal men onbewust zich teveel baseren op het resultaat van de API, niet of wat het resultaat van de API volgens de specificaties dient te zijn. Meer nog, het schrijven van test scenarios geeft alle betrokken partijen dat zoveel mogelijk scenarios afgetoetst zijn voordat klanten of andere teams die de API dienen te implementeren van start gaan.

Doordat het testen van API's een repetitieve taak is waar al snel heel wat werk kan in kruipen is enige vorm van automatisering hier geen overbodige luxe. Postman heeft hier een heel gebruiksvriendelijk vorm van test scenarios schrijven in Javascript. Waar het mogelijk is om bepaalde variabelen door te geven doorheen de verschillende en op elkaar volgende test scenarios.

Het dan implementeren van deze geautomatiseerde tests in een development proces zal dan normaal gezien verlopen via een continuous integration server zoals Bamboo of Jenkins. Zo zullen de test scenarios bij iedere push naar de server valideren of de nieuwe code geen tests breken. Zo zal de ontwikkelaar steeds bugs moeten fiksen vooraleer code naar live kan gedeployed worden. Wat steeds zal resulteren in een stabieler product van betere kwaliteit en minder support en bug fixes wanneer de applicatie live staat.