9 testen die je helpen om de kwaliteit van je API’s vast te stellen
API-testen zijn tests die de functionaliteit, betrouwbaarheid, prestaties en veiligheid van application programming interfaces beoordelen om de kwaliteit van je API-software te waarborgen. In dit artikel ontdek je welke 9 soorten API-testen je kunt uitvoeren, met concrete voorbeelden en wanneer je welke test toepast, zodat je API’s betrouwbaar en veilig zijn en goed presteren.
Door: Nico Welmer, Senior Testautomation Engineer bij Heeyoo
In 2009 kwam Mike Cohn met het idee voor een test automation pyramid. Dit model laat zien dat je geautomatiseerde testen het beste kan uitvoeren op drie verschillende niveaus. In recente jaren is er veel commentaar gekomen op dit model en dit model zal ongetwijfeld niet passen op alle mogelijke te testen applicaties. Maar door de bank genomen is dit model nog van veel waarde. Al is het alleen al om aan de hand van het model het gesprek te voeren over de te kiezen testaanpak.
Test Automation Pyramid

Als je in dit model inzoomt naar de verschillende niveaus, zijn twee daarvan vaak goed geregeld en afgedekt door diverse testsoorten en geautomatiseerde testsets.
Het Unit-niveau wordt geregeld afgedekt door middel van unittesten en/of unit-integratie testen. Vaak worden deze gemaakt en beheerd door developers, maar in recente jaren en mede door de shift-left gedachte zie je ook dat QA-testers hier actiever bij betrokken raken.
Het End To End-niveau is vaak afgedekt door front-end gerichte testen met behulp van tooling zoals Selenium, Cypress of Robot Framework. Veelal worden deze testen ontworpen, gemaakt en beheerd door de QA-testers.
De middelste laag, het integration-niveau, bestaat vaak, als de te testen applicatie die mogelijkheid biedt, uit API-testen. Juist hier zijn er meer mogelijkheden dan de meeste mensen realiseren. Het uitvoeren van frontend testen is een stuk duurder en arbeidsintensiever dan API-testen. Meestal dekken unit-testen niet alle situaties met meerdere componenten en de gevolgen hiervan goed af. Hier zit de sweetspot voor het uitvoeren van API-testen en kan je snel, veel situaties testen die anderzijds lastig of duur zijn om te testen.
API-testen
Hieronder staan negen testsoorten die je kunnen helpen met het valideren van de kwaliteit van je API’s. De meeste testsoorten zullen worden gezien als functionele tests, maar juist ook op de grensgebieden van non-functionele testen, zoals performance– en security-testen, liggen er mogelijkheden voor API-testen. Sommige van deze API-testen kunnen ook geautomatiseerd en geïntegreerd worden in een CI/CD-pipeline.

1. Functioneel testen
Functioneel testen van een API controleert of de API-endpoints de verwachte uitkomsten teruggeven voor gegeven inputs. Dit is de meest voorkomende vorm die vaak ook eenvoudig te automatiseren is.
2. Error testen
Evalueer het foutafhandelingen-mechanisme van de API en reactie van de API op onvoorziene scenario’s. Ook deze testsoort wordt vaak samen met de functionele testen uitgevoerd en eenvoudig te automatiseren.
3. Validatie testen
Valideer of de API verwachte output oplevert bij specifieke input. Dit soort testen kunnen eenvoudig verward worden met functionele testen, maar hier ligt de nadruk meer op de verschillende validatieregels die aanwezig kunnen zijn in een API en hoe de data eventueel gemodificeerd wordt opgeslagen in een database. Veelal is een connectie met de database noodzakelijk om te zien om de juiste data hierin aanwezig is is.
4. UI testen
Valideer de naadloze interactie tussen de UI en de API, vooral met betrekking tot de gebruiker getriggerde API-aanroepen. Deze testsoort kan nogal aanvoelen als een soort lightversie van End To End testen, maar dat is het niet. Het gaat vooral om de interactie tussen de UI en API en niet over de verdere integratie met andere systemen en functionaliteiten. De focus ligt hier meer op reactievermogen en interactie.
5. Security testen
Evalueer of er veilige interacties mogelijk zijn tussen de UI en de API, vooral met betrekking tot door de gebruiker getriggerde API-aanroepen. Denk hierbij aan toegangscontrole, encryptie checks en data-integriteit.
6. Pen testen
Actieve aanvallen simuleren om kwetsbaarheden bloot te legen en andere zwakheden te vinden. Hier is een stukje creativiteit voor nodig en goede technische kennis van de gekozen oplossing voor de API.
7. Interoperabiliteits testen
Evalueer de naadloze samenwerking van de API met andere systemen en platforms. Ook deze testsoort kan aanvoelen als een soort lightversie van End To End testen, maar hier gaat het vooral om de interfaces en samenwerking met losse andere systemen en dus niet de gehele keten.
8. Load testen
Valideer de API-prestaties onder hoge belasting en de mogelijkheid om een hoog aantal verzoeken te behandelen. Voor deze testsoort kan gekozen worden om naast een load test scenario, eventueel ook stress test scenario’s of endurance test scenario’s uit te voeren.
9. Fuzz testen
Door onverwachte input te gebruiken kun je potentiële kwetsbaarheden in de gegevensverwerking aan het licht brengen. Deze testsoort doet enigszins denken aan security testen, maar het verschil zit erin dat je juist random data gebruikt om de API te testen.
Zoals bij software testen altijd het geval is, is het niet realistisch om alle denkbare testsoorten toe te passen op de integratielaag van je applicatie. Veelal is het toch een afweging tussen de risico’s op het slecht of niet functioneren van de API en de kosten die gepaard gaan met het ontwikkelen en uitvoeren van de testen. Ook zit er wat overlap tussen de verschillende testsoorten en lijken de nuances soms klein, maar juist deze nuances zorgen en wel voor dat er andere fouten aan het licht kunnen komen en er een beter beeld ontstaat van de kwaliteit van de API’s.
Lees ook: Onmisbare tips voor het succesvol inzetten van testautomatisering
Veelgestelde vragen over API-testen
API-testen zijn tests waarmee je functionaliteit, foutafhandeling, performance en veiligheid van API-endpoints valideert.
Er bestaan functionele testen, error-testen, security-testen, load testen en meer. Elk met een eigen doel in kwaliteitsbeoordeling.
Fuzz-testen gebruik je om te zien hoe een API reageert op onverwachte of willekeurige input, wat kan helpen kwetsbaarheden bloot te leggen.

Wil je meer weten over API-testen? Ik of een van mijn collega's help je graag verder met de mogelijkheden van API-testen en hoe je ze kan toepassen binnen je project en organisatie.