API-testen
Testpiramide
End-to-endtests
Test volledige gebruikersworkflows over meerdere API's en services heen. Minder scenario's, maar wel de kritieke. Gebruik Postman, Playwright of Cypress.
Integratietests
Test API-endpoints met echte afhankelijkheden (database, externe API's). Gebruik TestServer of Docker-containers voor geïsoleerde testomgevingen.
Unittests
Test afzonderlijke componenten (controllers, services, validators) geïsoleerd. Gebruik mocking voor afhankelijkheden. Mik op 70-80% codedekking.
Andere soorten tests
- Contracttests: Consumer-driven contracts (Pact); controle of de API voldoet aan de specificatie (Dredd, Schemathesis)
- Loadtests: Meet de performantie onder zware belasting (k6, JMeter, Azure Load Testing)
- Beveiligingstests: OWASP ZAP, penetratietests, scannen op kwetsbaarheden
- Chaostests: Test de veerkracht door bewust fouten te injecteren
Monitoring en observability
Als er om 3 uur 's nachts iets vertraagt, toont een gecorreleerde trace binnen enkele seconden welke afhankelijkheid de oorzaak is, in plaats van na uren zoeken.
Eén request, van begin tot einde
Transactietrace4bf92f35…
- POST /api/v1/orders214 ms
- Validate JWT
- SQL · INSERT Orders
- Redis · SET order:7731
- Dataverse · Create salesorder
- Service Bus · order-created
{ "level": "Information", "operationId": "4bf92f35…", "orderId": 7731, "elapsedMs": 214 }Illustratief voorbeeld
Application Insights
Volledige monitoring voor API's met Application Insights:
- Requests opvolgen: Responstijden, slaagpercentages, foutanalyse
- Afhankelijkheden monitoren: Oproepen naar databases, externe API's en wachtrijen opvolgen
- Distributed tracing: Correlatie over microservices heen
- Eigen events: Bedrijfsmetrieken en KPI's opvolgen
- Live Metrics: Realtime monitoringdashboard
- Alerts: Proactieve meldingen bij afwijkingen
Best practices voor logging
- Gestructureerde logging: JSON-formaat met een consistent schema
- Correlatie-ID's: Requests over services heen opvolgen
- Logniveaus: Trace, Debug, Information, Warning, Error, Critical
- Gevoelige data: Log nooit wachtwoorden, tokens of persoonsgegevens
- Centrale logging: Azure Monitor, ELK stack, Datadog
Health checks
Voorzie health-check-endpoints voor orchestrators en load balancers:
- /health/live: Liveness probe (draait het proces?)
- /health/ready: Readiness probe (kan verkeer accepteren?)
- Controle van afhankelijkheden: Verbinding met database, cache en wachtrij valideren
- Responsformaat: Statuscode teruggeven, optioneel met details in JSON