Tests d'API
Pyramide des tests
Tests End-to-End
Tester les workflows utilisateur complets à travers plusieurs API et services. Moins nombreux mais scénarios critiques. Utiliser Postman, Playwright ou Cypress.
Tests d'intégration
Tester les endpoints API avec de vraies dépendances (base de données, API externes). Utiliser TestServer ou conteneurs Docker pour environnements de test isolés.
Tests unitaires
Tester les composants individuels (contrôleurs, services, validateurs) isolément. Utiliser le mocking pour les dépendances. Viser 70-80% de couverture de code.
Types de tests supplémentaires
- Tests de contrat : Contrats pilotés par le consommateur (Pact) ; conformité à la spécification OpenAPI (Dredd, Schemathesis)
- Tests de charge : Mesurer les performances sous stress (k6, JMeter, Azure Load Testing)
- Tests de sécurité : OWASP ZAP, tests d'intrusion, scan de vulnérabilités
- Tests de chaos : Tester la résilience en injectant des pannes
Surveillance et observabilité
Quand quelque chose ralentit à 3 heures du matin, une trace corrélée montre en quelques secondes quelle dépendance est en cause, au lieu de plusieurs heures.
Une requête, de bout en bout
Trace de transaction4bf92f35…
- 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 }Exemple illustratif
Application Insights
Surveillance complète pour API avec Application Insights:
- Suivi des requêtes : Temps de réponse, taux de succès, analyse des échecs
- Surveillance des dépendances : Suivre les appels aux bases de données, API externes, files
- Traçage distribué : Corrélation à travers les microservices
- Événements personnalisés : Suivre les métriques métier et KPIs
- Métriques en direct : Tableau de bord de surveillance en temps réel
- Alertes : Notifications proactives pour les anomalies
Bonnes pratiques de journalisation
- Journalisation structurée : Format JSON avec schéma cohérent
- ID de corrélation : Suivre les requêtes à travers les services
- Niveaux de Log : Trace, Debug, Information, Warning, Error, Critical
- Données sensibles : Ne jamais logger mots de passe, tokens, PII
- Journalisation centralisée : Azure Monitor, stack ELK, Datadog
Health checks
Mettre en œuvre des endpoints de health check pour les orchestrateurs et load balancers :
- /health/live : Sonde liveness (le processus tourne-t-il ?)
- /health/ready : Sonde readiness (peut accepter du trafic ?)
- Vérifications de dépendances : Valider connectivité base de données, cache, file
- Format de réponse : Retourner code de statut et JSON de détails optionnel