Tester une API ? Facile, vous savez déjà le faire (ou presque) Anne-Laure Gaillard Lead QA @Talarian

Client

Client Serveur

Serveur Client Requête

Serveur Client Requête Réponse

Serveur Client Requête HTTP Réponse

Verbe GET Récupère POST Crée PATCH/PUT Modifie DELETE Supprime … … Param Query Path Request Body Request Headers … Endpoint/URL

Serveur Client Requête HTTP Réponse

Status code 1XX Information 2XX Succès 3XX Redirection 4XX Erreur client 5XX Erreur serveur Réponse JSON

Pourquoi ? Idées reçues Comment ?

Pourquoi ?

Les API Web sont devenues omniprésentes

Les rares exceptions Applications totalement locales et fermées. Logiciels anciens qui n’ont pas été modernisés. Applications sensibles / sécurisées, où l’accès externe est interdit.

Anne-Laure Gaillard, Lead QA @Talarian

Anne-Laure Gaillard, Lead QA @Talarian

Anne-Laure Gaillard, Lead QA @Talarian

Anne-Laure Gaillard, Lead QA @Talarian

Anne-Laure Gaillard, Lead QA @Talarian

Idées reçues

On teste déjà l’interface graphique

On teste déjà l’interface graphique

On teste déjà l’interface graphique “Dans une approche agile, il est recommandé de ne pas attendre d’avoir l’intégralité du processus disponible et de tester ce que l’on a […] en particulier au niveau d’un microservice”

On teste déjà l’interface graphique “[API testing] might produce unexpected results and reveal bugs that would never be found thought UI testing. You can control the tests much more easily that when using UI”

On teste déjà l’interface graphique

Tester l’API, c’est ne pas tester l’expérience utilisateurice

Tester l’API, c’est ne pas tester l’expérience utilisateurice

Tester l’API, c’est ne pas tester l’expérience utilisateurice

Tester l’API, c’est ne pas tester l’expérience utilisateurice “Dans une approche agile, il est recommandé de ne pas attendre d’avoir l’intégralité du processus disponible et de tester ce que l’on a […] en particulier au niveau d’un microservice” Titre : Tests de charge d’un processus métier et disponibilités des microservices

Tester les APIs, c’est technique

Tester les APIs, c’est technique Automatisation des tests d’API : 49% QA 28% Dev

Tester les APIs, c’est technique Outils graphiques (tests manuels REST / GraphQL / SOAP) Postman, Insomnia, Hoppscotch, Bruno, Apidog, Paw, Talend API Tester (Restlet), Advanced REST Client (ARC), RESTer, Altair GraphQL Client, GraphiQL, SoapUI, ReadyAPI, HTTP Toolkit Outils en ligne de commande (CLI) cURL, HTTPie, Wget, Newman, Wscat, grpcurl, GraphQL CLI, Vegeta, K6, Artillery Outils intégrés aux IDE Thunder Client (VS Code), REST Client Extension (VS Code), RapidAPI Client for VS Code, JetBrains HTTP Client (IntelliJ, PyCharm, WebStorm) Outils en ligne (sans installation) ReqBin, Reqres, Webhook.site, Beeceptor, Mocky.io, Swagger UI, Redocly, Stoplight Studio, Apimatic Outils spécialisés en sécurité d’API Burp Suite, OWASP ZAP, Postman Security Scans, APIsec, 42Crunch, Noname Security, Salt Security, Akamai API Security, Imperva API Security, Wallarm Outils pour tests de performance / charge JMeter, K6, Locust, Artillery, Gatling, BlazeMeter Outils pour mock et virtualisation d’API WireMock, MockServer, Beeceptor, Mockoon, Prism (Stoplight), Mountebank, Hoverfly

Tester les APIs, c’est technique

Comment ? Débuter…

Shift left “A service-based architecture works well with BDD.” “When you design a new service using BDD, you begin by describing the requirements in the form of practical examples of how the service will be used”

Doc review

Requête

Comment ? Aller plus loin…

Flow

Automatiser Comment commencer ? “Bien que les compétences techniques existantes soient des atouts pour envisager un virage vers l’automatisation des tests, la motivation des membres de l’équipe est une des clés importantes du succès” “Faites-vous accompagner”

Automatiser Quoi ?

Automatiser Sur le CI dev, QA, fréquence ? “Personne n’accepte qu’une simple fusion de branche prenne plus de 15 minutes” “Des tests automatisés qui n’ont pas trouvé de bug depuis deux sprints peuvent passer d’un rythme quotidien à un rythme hebdomadaire afin de garder un build dans les 10 minutes”

Exploratoire Un chapitre Quelques pages “Pair ET with other testers.” “Think about the end-user.”

Exploratoire

Comment ? Aller encore plus loin…

Monitoring

Client 4XX Erreur client Serveur

Client Serveur 5XX Erreur serveur

Monitoring Alerting

Monitoring Quid des QA et des env de tests ?

Monitoring

Monitoring

Monitoring Quid des QA et des env de tests ? Regarder les logs en prod… mais pas que

Sécurité I P A 0 P 1 S p A o OWity - T r u c Se Broken Level Authorization : Object Object property Broken Authentication Function Unrestricted Access to Sensitive Business Flows Unrestricted Resource Consumption Security Misconfiguration Server Side Request Forgery ub H t i G r u s o Plus d’inf Improper Inventory Management Unsafe Consumption of APIs

Sécurité l e v e L n e k : o n r o B i t a z m i o r o o Z A u t h b je c t O

Sécurité Unsafe Consumption of APIs

Performance

Contract Client Décrit le contrat (ce qu’il attend) { companyName: string, logo: image } Confirme qu’il fournit bien ce contrat Teste : { companyName: string, logo: image } Serveur

Contract Client 1 { companyName: string, logo: image } Client 2 { companyName: string } { logo: image } Client 3 Client 4 { companyName: string, newSponsor:boolean } Serveur

Tester une API Participer à la conception Lire la documentation Tester les requêtes Pour aller plus loin : Monitoring & alerting Attaquer l’API Contrôler les performances Tester les contrats

Les APIs sont partout ! Vous êtes capables de les tester

Quelques références https://www.youtube.com/watch ?v=FPrMPOlqZN4 https://medium.com/manomano -tech/api-exploratory-testing-anopportunity-to-improve-yourapi-testing-d18e125f244d