Een API (application programming interface) is software die de interactie tussen toepassingen en services regelt. API's bieden dus een interface voor de overdracht van gegevens en logica tussen uiteenlopende hardware- en softwaresystemen.
Zo kan een app voor mobiel bankieren een API gebruiken om toegang te krijgen tot de camera van je smartphone, zodat je een QR-code kunt scannen en direct kunt betalen.
Zonder API's zou de naadloze interactie tussen computers, smartphones, tv's en andere toestellen die je dagelijks gebruikt onmogelijk zijn.
Wat zijn API-tests?
API-tests helpen ontwikkelaars om te bepalen of de API's voldoen aan de verwachtingen op het vlak van functionaliteit, prestaties, betrouwbaarheid en beveiliging. Ze hebben als doel fouten en onverwacht gedrag op te sporen en te voorkomen dat de eindgebruiker een slecht of onveilig product geleverd krijgt. Je wil tenslotte dat de API's die je ontwikkelt efficiënt en doeltreffend werken, anders zal niemand ze gebruiken.
API's testen klinkt echter eenvoudiger dan het is. API's gebruiken doorgaans protocollen en standaarden waar je normaal gesproken misschien niet mee werkt. Deze protocollen en standaarden zijn nodig voor de communicatie tussen verschillende platforms, toepassingen en systemen. Je moet dus niet alleen de functionaliteit van de API's testen, maar ook de prestaties, beveiliging en de samenwerking tussen alle componenten om tot een betrouwbare interface te komen.
Waarom een API testen?
We maken dagelijks gebruik van API's, bijvoorbeeld om te werken of om informatie op te zoeken. Volgens het rapport 'State of the Internet' van Akamai zijn API-aanroepen goed voor 83 % van al het verkeer op het web. Omdat API's zo belangrijk zijn voor het dagelijkse leven van je gebruikers, moet het testen van API's om de volgende redenen een hoge prioriteit hebben:
- Taalonafhankelijk: API's gebruiken bestandsformaten zoals XML en JSON om gegevens uit te wisselen. Dat betekent dat ze taalonafhankelijk werken, zodat je elke taal kunt gebruiken om het testen te automatiseren.
- GUI-onafhankelijk: API's kunnen zonder grafische gebruikersinterface getest worden om de kernfuncties te controleren en fouten of bugs op te sporen.
- Verbeterde testbereik: API's bevatten functies waarmee je automatiseringsscripts met een groter bereik kunt maken.
- Lagere testkosten: door API's te testen kun je kleine bugs in de kernfuncties vinden voordat ze in de GUI getest worden. Die kleine bugs kunnen grote problemen opleveren bij GUI-tests, dus je bespaart tijd en geld als je ze in de API-testfase vindt en oplost.
- Snellere productrelease: API-tests kosten doorgaan slechts een fractie van de tijd die nodig is voor een volledige UI-regressietest. Fouten kunnen dus efficiënter opgespoord en verholpen worden, waardoor nieuwe builds sneller vrijgegeven kunnen worden.
- Bepalen of de API's naar behoren werken: API-tests helpen je om te waarborgen dat de API doet wat je ervan verwacht.
- Controleren of API's de werklast aankunnen: voer tests uit met de hoeveelheid verkeer die je API's waarschijnlijk te verwerken krijgen. Zo simuleer je verschillende gelijktijdige verzoeken van gebruikers en kun je nagaan hoe robuust je toepassing is.
- Compatibiliteit testen: ga in je testfase na of je test API kan samenwerken met alle apparaten, browsers en besturingssystemen.
- Anticiperen op fouten van gebruikers: tijdens je testfase kun je manieren ontdekken waarop gebruikers de mist in kunnen gaan. Deze informatie is nuttig om te anticiperen op fouten van gebruikers en je ontwerp te verbeteren.
Meer informatie over het ontwikkelen van een API? Lees dan 'Zo bouw je een API'.
API testen? Dat doe je zó!
Net als bij de meeste technologische projecten heb je een plan nodig om API testen uit te voeren. Een plan helpt je om te bepalen wat je doelstellingen zijn en hoe je die wilt bereiken. Hier volgen enkele tips om je op weg te helpen met het de API-tests:
- Weet wat de vereisten zijn: breng de API-vereisten in kaart en beantwoord de volgende vragen:
- Welk doel heeft de API?
- Wie is de doelgroep?
- Welke problemen wil je in je tests opsporen?
- Wat is de gewenste output?
- Wat zijn de eigenschappen en functies van de API?
- Wat is de applicatieworkflow?
- Welke integraties moet de API ondersteunen?
- Wat zijn de testprioriteiten?
- Stel je testomgeving in: creëer een testomgeving op basis van de vereisten van je test API. Stem de configuratie van de databank en server af op de vereisten van de toepassing. Voer vervolgens een API-aanroep uit om na te gaan of alles correct geconfigureerd is en er niets fout gaat voordat je daadwerkelijk gaat testen.
- Kies een API-testtool: tenzij je alles handmatig wilt testen, heb je een API-testtool nodig om je testcases te structureren en te beheren.
- Bepaal welke soorten API-tests je wil uitvoeren: nadat je de testomgeving hebt opgezet en zeker weet dat alles werkt, moet je bepalen waarop je de API wil testen.
Welke soorten API-tests kun je uitvoeren?
Het soort test dat je gaat uitvoeren, is afhankelijk van waar je op wilt testen. Zo kun je voor het testen van functies een functionele test uitvoeren.
Je hebt keuze uit verschillende soorten API-tests:
- Functionele tests: testen de verschillende functies in de codebase. De tests simuleren specifieke scenario's om na te gaan of de functies van de API correct werken binnen de geplande en verwachte parameters.
- Betrouwbaarheidstests: gaan na of de API gedurende een specifieke periode en in een specifieke situatie foutloos kan blijven werken.
- Loadtests: gaan na of de prestaties van de API gewaarborgd zijn onder normale omstandigheden en onder piekbelasting.
- Beveiligingstests: worden gebruikt om te controleren of de API voldoende beveiligd is tegen externe bedreigingen. Onder meer de versleutelingsmethodes, de toegangscontrole tot de API, het beheer van gebruikersrechten en de autorisatievalidatie worden getest.
- UI-tests: gaan na of de gebruikersinterface van de API correct werkt. Hier ligt de focus vooral op de interface die aan de API gekoppeld wordt en niet zozeer op de API zelf. UI-tests geven je een beeld van de gezondheid en gebruiksvriendelijkheid van de app aan de front- en backend.
- Negatieve tests: hebben als doel na te gaan wat er gebeurt als de app ongeldige of onbedoelde input krijgt. Je probeert hier te achterhalen wanneer het systeem het begeeft, zodat je adequatere reacties kunt ontwikkelen. Bij de invoer van een letter in een veld dat bestemd is voor getallen moet er bijvoorbeeld een foutmelding verschijnen en mag de app niet meteen crashen.
- Valideringstests: moeten bepalen of de API correct werd ontwikkeld en of alles naar behoren werkt.
Handmatige versus geautomatiseerde tests
Handmatig testen is een erg arbeidsintensief proces, waarbij een QA-medewerker de individuele tests een voor een uitvoert. Testers zijn betrokken bij elk aspect van het proces, vanaf het opstellen van de testcase tot de uitvoering ervan. Testers controleren de functies, zoeken naar bugs en schrijven foutrapporten zonder automatiseringstools te gebruiken.
Handmatige tests zijn tijdrovend en kunnen erg eentonig zijn. Door tests te automatiseren, kun je meer situaties testen, met een groter testbereik en meer efficiëntie.
Waarom handmatig testen?
Bij handmatige tests gaat er meer aandacht uit naar het testproces. Door je tests zelf op te zetten en handmatig uit te voeren, krijg je een genuanceerdere controle over de test. Bovendien ligt het risico op vals-negatieven lager. Die kunnen immers aanzienlijk veel bijkomend werk opleveren om de gemelde fouten op hun correctheid te controleren.
De volgende soorten tests zou je eigenlijk handmatig moeten uitvoeren:
- Verkennende tests
- Bruikbaarheidstests
- UI-tests
- Ad-hoctests
Je kunt wel handmatig testen als je kleine wijzigingen wilt controleren. Zelfs de kleinste wijziging vraagt om nieuwe code voor geautomatiseerde tests en dat zou wel eens meer tijd kunnen vergen dan een snelle handmatige test.
Waarom geautomatiseerd testen?
Het grootste voordeel van geautomatiseerde API-tests is dat je meer tests in minder tijd kunt uitvoeren. Dat komt de productiviteit ten goede en helpt je om efficiënter te testen. Snellere testen betekent snellere oplossingen en dus een snellere productrelease.
De volgende soorten tests zou je eigenlijk geautomatiseerd moeten uitvoeren:
- Functionele tests
- Loadtests
- Prestatietests
- Valideringstests
- Dynamische tests
- Gegevensgestuurde tests
- Fouttests
- Meertalige tests
- Regressietests
API best practices voor het testen van API's?
Hoewel je verkennende tests en UI-tests handmatig zou moeten uitvoeren, moet je de meeste API-tests eigenlijk geautomatiseerd uitvoeren. Hier volgen enkele best practices voor geautomatiseerde API-tests. Ze kunnen je helpen om het testproces te stroomlijnen, meer tests in minder tijd uit te voeren, geld te besparen en een beter product te introduceren.
Documenteer alles
Het succes van je tests kan afhangen van hoe goed je de zakelijke vereisten en testcases gedefinieerd hebt. De meeste API's hebben geen frontend-GUI om naar te verwijzen, dus is het cruciaal om elk veld en de bijhorende parameters duidelijk te specifiëren in je documentatie. Testers gebruiken die documentatie om te controleren of alle vereiste cases behandeld zijn.
Je moet ook gedetailleerde, uitgebreide testverslagen maken waarin je de redenen beschrijft waarom testen mislukt zijn. Dankzij die verslagen kunnen de ontwikkelaars vervolgens gemakkelijker bepalen welke elementen aangepast moeten worden.
Denk aan de DRY-benadering
De DRY-benadering (don't repeat yourself) moet herhaling van code voorkomen. Code die voor componenten en handelingen in verschillende API's gebruikt wordt, zet je een gedeelde bibliotheek die gemakkelijk toegankelijk is voor alle componenten die dat nodig hebben.
Begin met de kleine API's
Begin rustig en test eerst de simpele API's met slechts een of twee inputs (zoals een inlog-API). Door je eerst op de kleine API's te richten, krijg je zelfvertrouwen en kun je je ervan vergewissen dat je testomgeving geschikt is voor het testen van grotere API's.
UML-diagrammen kunnen handig zijn om de informatiestroom in je API te visualiseren.
Meer informatieOver Lucidchart
Lucidchart, een slimme diagramapplicatie in de cloud, is een kernonderdeel van Lucid Software's pakket voor visuele samenwerking. Met deze intuïtieve cloudgebaseerde oplossing kunnen teams in realtime samenwerken om flowcharts, mockups, UML-diagrammen, kaarten van customer journeys en meer te maken. Lucidchart stuwt teams vooruit om sneller aan de toekomst te bouwen. Lucid is trots op zijn diensten aan belangrijke bedrijven over de hele wereld, waaronder klanten als Google, GE en NBC Universal, en 99% van de Fortune 500. Lucid werkt samen met brancheleiders, waaronder Google, Atlassian en Microsoft. Sinds de oprichting heeft Lucid talrijke onderscheidingen ontvangen voor zijn producten, bedrijfsvoering en werkcultuur. Ga voor meer informatie naar lucidchart.com.