Tutoriel de test de charge API : Guide pour débutants
Qu’est-ce que le test de charge API ?
Le test de charge API est le processus d’évaluation des performances et de la scalabilité d’une interface de programmation d’application (API) sous un trafic intense simulé. Il teste la capacité d’une API à gérer des niveaux élevés de requêtes, une activité prolongée, et des tests à large échelle, allant de points de terminaison individuels à des flux de travail bout en bout complets. L’objectif est de confirmer que votre API peut gérer de manière fiable les niveaux de trafic attendus tout en offrant une expérience utilisateur cohérente.
Lors de la réalisation d’un test de charge API, vous collectez des métriques de performance telles que les temps de réponse, la latence, le débit, et la santé globale de l’API sous stress. Ces mesures valident si votre site web ou votre application peut maintenir une performance fluide pendant les pics d’utilisation.
Le test de charge API peut être abordé de différentes manières selon les objectifs de votre processus de test. Du test de stress pour déterminer les points de rupture au test d’endurance pour une utilisation prolongée, chaque type de test offre un aperçu différent des performances de votre API dans des conditions spécifiques. Les applications modernes s’appuient sur plusieurs APIs fonctionnant ensemble, ce qui rend important de tester comment ces services se comportent lors d’utilisations simultanées.
Avec l’adoption des architectures microservices et du développement API-first, le test de charge API est devenu encore plus crucial. Les applications modernes dépendent de dizaines, voire de centaines d’API communiquant simultanément, ce qui fait du test de performance un élément essentiel pour maintenir la fiabilité et la scalabilité.
Test de performance API
Le test de performance API mesure comment une API se comporte sous un niveau défini de trafic : la rapidité de ses réponses, la quantité de travail accomplie, et le niveau d’échec de ce travail. Le test de charge est une question à l’intérieur de cette discipline, ce qui se passe au niveau de trafic prévu. Le reste de la catégorie couvre ce qui se passe au-delà de ce niveau, lorsque le trafic arrive en masse, et quand il ne s’arrête jamais.
Quatre types de tests se situent dans cette catégorie, chacun répondant à une question différente avec une métrique différente.
- Test de charge maintient votre API au trafic attendu et demande si les temps de réponse restent dans les cibles définies. La métrique est le temps de réponse au 90ème percentile à la concurrence cible, indiqué p90, et non la moyenne.
- Test de stress pousse au-delà du niveau attendu jusqu’à ce que quelque chose se casse. La métrique est la concurrence à laquelle le taux d’erreur commence à augmenter, ce qui vous indique la marge disponible au-dessus du trafic normal. Test de charge versus test de stress explique cette distinction en détail.
- Test de pic saute d’un trafic faible à élevé en quelques secondes au lieu d’une montée progressive. La métrique est le temps de récupération : combien de temps après le pic les temps de réponse retournent à la normale. Les groupes d’autoscaling et les pools de connexion échouent souvent à ce test même s’ils réussissent une montée progressive.
- Test d’endurance maintient une charge modérée pendant des heures. La métrique est la dérive, c’est-à-dire un temps de réponse ou une consommation de mémoire qui augmente régulièrement sur une longue durée. Les fuites de connexion et les caches non bornés ne se détectent que dans ce test.
Les mêmes quatre types de test, représentés par le nombre d’utilisateurs simultanés dans le temps.
Les temps de réponse, le débit et le taux d’erreurs sont collectés dans les quatre tests. Ce qui change, c’est celui que vous lisez en premier : le temps de réponse dans un test de charge, le taux d’erreur dans un test de stress, la forme de la courbe du temps de réponse après un pic, et la pente sur toute la durée dans un test d’endurance.
Se limiter aux tests de charge est une lacune fréquente. Un service peut réussir une montée progressive jusqu’à 200 utilisateurs simultanés et pourtant s’effondrer lors d’un email marketing générant ces mêmes 200 utilisateurs en quatre secondes, ou fuir suffisamment de mémoire sur six heures pour nécessiter un redémarrage nocturne.
Pourquoi le test de charge API est crucial
Le test de charge API garantit que votre application fonctionne sans accroc sous un trafic intense. Puisque les APIs sont la colonne vertébrale des applications modernes, tout ralentissement ou échec impacte directement l’expérience utilisateur. Le test de charge révèle les goulets d’étranglement et les limites de performance à optimiser, ce qui évite les pannes pendant les pics et maintient la fiabilité de votre application quelles que soient les demandes.
Avantages du test de charge API et pourquoi vous devriez le faire
Les APIs sont la base de la plupart des logiciels modernes, donc les tester en charge vaut l’effort. Cela vous informe sur la manière dont la performance, la scalabilité et la fiabilité tiennent sous une utilisation concurrente, et confirme que l’API respecte vos accords de niveau de service.
Minimisez les coûts liés aux défaillances d’API
Identifier les problèmes de performance d’API avant le déploiement coûte beaucoup moins cher à une organisation que de traiter les indisponibilités en production. Le test de charge détecte les bugs de code qui causent une dégradation sous stress anticipé ou inattendu, et met en lumière des défauts d’implémentation difficiles à reproduire autrement.
Minimisez et atténuez les temps d’arrêt d’API
Le test de charge API montre la capacité de l’API à gérer les requêtes sans plantage, ce qui prévient les temps d’arrêt. Il réduit également la probabilité d’indisponibilité en identifiant et isolant les requêtes nécessitant un travail de performance, afin que vos ressources se concentrent sur où le trafic pose réellement problème.
Améliorez votre infrastructure API
Le test de charge API détermine l’infrastructure appropriée en évaluant le volume de requêtes selon différents cas d’usage, et identifie le nombre maximal de requêtes simultanées qu’un seul point de terminaison peut gérer. Avec ce chiffre, vos équipes peuvent planifier les pics de trafic attendus.
Améliorez la performance API et la satisfaction client
Le développement API est difficile à maîtriser avec autant de points de terminaison et des attentes utilisateurs élevées. Vos APIs peuvent subir des délais de réponse, des problèmes de latence, et des limites de débit. Le test de charge détecte ces goulets rapidement et vous permet de les corriger avant déploiement en production.
Quand effectuer un test de charge API
Le test de charge API vaut la peine d’être réalisé à plusieurs étapes du cycle de vie logiciel. Il aide en développement à identifier tôt les goulets de performance et à confirmer que vos APIs supportent les charges attendues et se comportent de manière prévisible sous stress. Le test de charge doit aussi être réalisé avant déploiement en production pour valider scalabilité et fiabilité dans un environnement simulé. Chaque fois que des changements significatifs sont faits aux APIs ou à leur infrastructure, des tests évaluent l’impact et confirment que les nouvelles implémentations répondent aux attentes. Des tests périodiques réguliers sont aussi conseillés pour détecter la dégradation avant qu’elle n’affecte les utilisateurs.
Comment effectuer un test de charge des API
Tester la charge d’une API s’effectue en huit étapes : définir un objectif chiffré, choisir le type de test, configurer la requête, ajouter la validation, paramétrer la courbe de charge, choisir la provenance de la charge, exécuter le test, et analyser le rapport. Le guide suivant applique ces huit étapes à api.restful-api.dev/objects, une API REST gratuite et sans clé. C’est un service public partagé, donc limitez les essais de pratique à environ 25 utilisateurs simultanés et utilisez la même configuration sur votre propre point de terminaison pour les chiffres à 200 utilisateurs.
Étape 1 : Écrivez ce que vous cherchez à découvrir
Formulez votre objectif en un nombre vérifiable. « Voir si l’API est rapide » ne peut réussir ni échouer ; celui-ci peut :
À 200 utilisateurs simultanés maintenus 10 minutes,
GET /objectsrenvoie un temps de réponse au 90ème percentile sous 400 ms avec un taux d’erreur en dessous de 1 %.
Quatre éléments rendent cela utilisable : un nombre de concurrence, une durée, le point de terminaison, et un seuil basé sur un percentile plutôt que sur une moyenne. Les moyennes masquent les queues lentes. Si 95 requêtes retournent en 80 ms et 5 en 6 secondes, la moyenne est un confortable 376 ms mais 5 % de vos utilisateurs ont attendu six secondes.
Prenez le seuil d’un budget existant ou exécutez une fois à faible charge et utilisez cela comme base. Vous avez aussi besoin de l’URL, la méthode, les en-têtes requis, un corps si la méthode en exige un, et les identifiants. Ici : https://api.restful-api.dev/objects, GET, sans authentification.
Étape 2 : Choisissez le type de test
LoadView demande en premier le type de test, ce qui conditionne le reste de la configuration. Les options sont Navigateur réel (application web), HTTP/S, SOAP, Rest WEB API, Postman (collection), JMeter, Selenium, Streaming Media, et WebSocket.
Ce à quoi vous adressez le test décide du type.
Pour un point de terminaison JSON, choisissez Rest WEB API. Il vérifie la disponibilité, la performance, les données retournées, et l’authentification sous charge, avec des champs pour les en-têtes, le corps, et la validation. Les autres conviennent à des cas spécifiques :
- HTTP/S pour des requêtes concurrentes sur une seule URL quand seul le fait que le serveur réponde compte.
- SOAP pour les services WSDL, où la requête est une enveloppe XML.
- Postman (Collection) quand les requêtes existent déjà dans une collection : exportez-la et uploadez-la, comme décrit dans le tutoriel de test de charge Postman Collection. JMeter fait pareil pour un plan JMX.
Étape 3 : Configurez la requête
Saisissez l’URL complète incluant le schéma, puis définissez la méthode dans Request Type : https://api.restful-api.dev/objects en GET.
Quatre champs, deux avec un piège attaché.
Signaler comme erreur les réponses qui excèdent définit en secondes combien de temps LoadView attend avant d’enregistrer une erreur, et c’est plus important qu’il n’y paraît : par défaut élevé, une requête de 30 secondes compte encore comme un succès. Positionnez-le à un temps où un utilisateur aurait abandonné, ici 5 secondes.
Les en-têtes vont dans la section Headers sous forme de paires nom/valeur.
Pour un POST ou PUT, la charge est placée dans la section Body, appelée « Post Data » dans la documentation plus ancienne. Collez le JSON et LoadView le parse, vous invite à choisir un en-tête Content-Type, puis l’ajoute automatiquement aux en-têtes :
{
"name": "LoadView Test Object",
"data": {
"year": 2026,
"price": 1849.99,
"CPU model": "Intel Core i9",
"Hard disk size": "1 TB"
}
}
Les identifiants vont dans la section Basic Authentication. L’authentification basée sur un jeton nécessite deux requêtes au lieu d’un seul réglage, car vous devez obtenir le jeton avant de pouvoir l’utiliser. LoadView documente ce modèle pour les APIs OAuth 2.0 : une requête de récupération de jeton, puis une requête de ressource portant le résultat.
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Ajoutez la deuxième requête avec Add Target ; les requêtes s’exécutent dans l’ordre affiché dans la barre latérale. Pour transmettre le jeton, convertissez le paramètre qui en a besoin en Context Parameter, ce qui fonctionne sur l’URL, les en-têtes, le corps, et les scripts.
Un flux de jeton nécessite deux requêtes, pas un seul réglage.
Étape 4 : Ajoutez la validation
Un test ne vérifiant que si des octets sont revenus rapporte une exécution propre alors que votre API retourne des 500. Les échecs rapides produisent les réponses les plus rapides dans un test, donc validez deux choses.
Codes de réponse attendus indique quels codes de statut comptent comme succès ; tout autre est consigné comme erreur. Mettez-le à 200 pour ce GET. La sémantique des codes de statut vient du RFC 9110, et le piège concerne le POST : beaucoup d’APIs répondent à une création réussie par 201, donc une requête créant un objet doit attendre 200, 201 et non 200 seul.
Seul le troisième panneau prouve que la requête a fait ce que vous avez demandé.
Validation du contenu vérifie le corps de la réponse pour des mots-clés que vous fournissez, combinés avec des expressions logiques où & signifie ET, | signifie OU, et ! signifie NON :
{["Apple MacBook Pro 16"&"CPU model"]}
Choisissez un mot-clé qui n’apparaît qu’en cas de succès. Un nom de champ qui se trouve aussi dans l’enveloppe d’erreur de l’API ne valide rien.
Étape 5 : Paramétrez la courbe de charge
LoadView propose trois options de courbes de charge. Ce guide utilise Load Step Curve, qui répond à la question « comment les temps de réponse changent-ils à mesure que les utilisateurs s’accumulent ? ». Ce test commence à 5 utilisateurs simultanés, monte à 25 en 6 minutes, maintient 5 minutes, puis redescend en 2 minutes. Pour votre propre point de terminaison : démarrez à 10, montez à 200 en 10 minutes, tenez 10 minutes, redescendez en 3. Le temps de maintien est la partie que beaucoup coupent mais qui importe : la montée indique quand les choses ont commencé à fléchir, le maintien si elles restent pliées.
La courbe utilisée dans ce test, chaque segment étant nommé.
Goal-Based Curve ajuste automatiquement le nombre d’utilisateurs virtuels pour atteindre un débit cible, ce qui convient à une exigence formulée en transactions par minute. Dynamic Adjustable Curve permet de modifier manuellement le nombre d’utilisateurs pendant le test, utile pour dimensionner l’infrastructure et observer les effets simultanément.
Étape 6 : Choisissez vos emplacements géographiques
Les injecteurs de charge démarrent dans plus de 40 zones en Amérique du Nord, Amérique du Sud, Europe et APAC. La géographie n’est pas accessoire ici : chaque tranche de 1 000 miles entre client et serveur ajoute une latence aller-retour qu’aucune optimisation applicative ne supprime, et une poignée de main TLS paie ce coût plusieurs fois.
Ce test a utilisé une seule zone US East, ce qui sépare le comportement applicatif de la distance réseau. Ajoutez les zones d’où viennent vos utilisateurs une fois cette base établie : si votre API est en us-east-1 et qu’un quart du trafic est allemand, le chiffre de Francfort est ce que ces clients obtiennent. Le réseau d’injecteurs géo-distribué est géré, donc rien à dimensionner.
Le même point de terminaison, mesuré depuis trois distances.
Étape 7 : Exécutez le test et lisez le rapport
LoadView s’étalonne avant l’exécution pour déterminer combien de serveurs injecteurs sont nécessaires. Surveillez les deux premières minutes : une montée des temps de réponse à 5 utilisateurs est un problème de préparation, pas un problème d’API, donc arrêtez et corrigez au lieu de payer pour la courbe complète. Laissez le test tourner ensuite. Redémarrer un service en cours de test produit un graphique incompréhensible.
Le rapport s’ouvre sur l’onglet Summary : un aperçu montrant les sessions réussies versus celles avec erreurs, puis les graphiques. Lisez-les dans cet ordre.
Plan d’exécution vient en premier et est le plus souvent ignoré. Il trace les utilisateurs virtuels réels contre les attendus et maximums. Si la courbe réelle suit bien l’attendue, la charge pensée est bien la charge appliquée. Sinon, le reste du rapport décrit un test qui n’a jamais eu lieu.
Quatre graphiques, quatre questions, dans l’ordre où il vaut mieux les poser.
Temps de réponse trace ensemble la durée moyenne des transactions et le 90ème percentile. Lisez l’écart entre les lignes, pas seulement leur hauteur. Un p90 qui s’écarte de la moyenne signifie la formation d’une queue lente : file d’attente pleine, pool de connexions à sa limite, cache qui commence à rater. L’écart se creuse avant que la moyenne ne bouge, ce qui en fait un signal précoce.
Pourquoi le percentile est l’alerte précoce et la moyenne le signal tardif.
Sessions démarrées compare le total des sessions avec les réussies et échouées. Une dégradation des temps de réponse sous charge est normale et souvent acceptable ; en revanche, des requêtes échouées ne le sont pas. Filtrez l’onglet Sessions par status Échoué pour voir les réponses individuelles, incluant code de statut et réponse serveur.
Charge des injecteurs est une vérification de cohérence : forte utilisation des injecteurs avec une cible lente signifie que vous mesurez peut-être l’infrastructure du test et non l’API. Trois lectures vous forcent à agir :
- Le taux d’erreur monte avant le temps de réponse. Quelque chose rejette les connexions au lieu de les mettre en file d’attente. Vérifiez d’abord les limites de connexion, le nombre de workers et le throttling.
- Le 90ème percentile monte alors que la moyenne reste stable. Certaines requêtes prennent un chemin lent : cache manquant, requête non indexée, dépendance lente.
- La moyenne et le p90 montent ensemble, proportionnellement aux utilisateurs. Saturation, le cas le plus simple à planifier. Notez la concurrence au-delà de laquelle vous avez franchi le seuil et considérez-la comme votre plafond.
Les mêmes trois lectures, et où chacune vous mène.
Latence, trafic, erreurs, et saturation sont les quatre signaux recommandés par le livre SRE de Google pour un système destiné aux utilisateurs. Un test de charge mesure les trois premiers de l’extérieur ; surveillez la saturation serveur, et rappelez-vous que la plupart des systèmes se dégradent bien avant d’atteindre 100 % d’utilisation. Pour plus d’informations sur les vues rapport, voir comment analyser les résultats d’un test de charge avec LoadView.
Étape 8 : Ce qui a mal tourné
Le test POST a mesuré un GET. Le type de requête était défini sur POST et le point de terminaison correct, mais le corps n’avait pas encore été renseigné, et LoadView repasse en GET lors de l’enregistrement si POST, PUT, ou PATCH est sélectionné sans paramètres de requête. Rien ne prévient après coup. Le test a tourné correctement et affiché de bons chiffres pour une lecture sur un point de terminaison prévu pour des écritures. Remplissez le corps avant d’enregistrer, puis rouvrez la requête et vérifiez que la méthode est restée la même.
Le deuxième piège est plus discret. L’API démo répond à une création réussie avec 200, tandis que beaucoup d’APIs répondent avec 201. Envoyez une requête manuelle et lisez le code de statut avant de remplir les codes de réponse attendus. Une API démo publique applique aussi une limitation de débit, donc si le taux d’erreur monte à une charge que votre infrastructure encaisserait, vérifiez si la cible vous bride plutôt qu’elle ne sature.
La documentation de LoadView dit que configurer des séquences multi-requêtes dans le test Rest WEB API peut être compliqué, et recommande Postman pour les appels complexes. Si enchaîner quatre requêtes devient un projet, c’est le moment de sortir.
Bonnes pratiques pour le test de charge API
Les cinq réglages qui influencent le plus vos chiffres sont le temps de réflexion, les données de test, l’environnement testé, la période d’échauffement, et le nombre de fois où vous répétez l’exécution. Voici d’abord les habitudes générales :
- Testez dans un environnement dédié, mais utilisez des données similaires à la production.
- Définissez vos benchmarks en amont. Les accords de niveau de service vous donnent une cible à atteindre.
- Commencez tôt et testez souvent, pour faire remonter les problèmes avant la mise en production.
Ces quatre points sont faciles à approuver mais difficiles à appliquer sans précisions. Voici comment chacun se traduit en réglages.
Réglez le temps de réflexion selon la manière dont l’API est appelée
Le temps de réflexion est la pause entre les requêtes, contrôlée via le User Behavior Profile. Des délais minimes exécutent le test à vitesse maximale, découvrant rapidement les limites et générant un taux de requêtes qu’aucune population humaine ne produirait. Des délais réalistes vous donnent un chiffre de capacité exploitable.
Le choix dépend de l’appelant. Une API appelée par une appli mobile entre deux tapotements sur l’écran a des secondes naturelles de temps de réflexion, modélisez-le. Une API appelée en boucle serrée par un autre service n’en a pratiquement pas. Être trop généreux est la cause la plus fréquente d’estimations de charge faussement optimistes.
Donnez à chaque utilisateur virtuel ses propres données de test
Deux cents utilisateurs virtuels demandant /objects/7 seront servis à partir du cache après la première requête, et vos chiffres décriront ce cache. Variez l’identifiant pour que chaque utilisateur touche un enregistrement différent. Le champ de script de préparation accepte du C#. Générez une valeur unique par session et référez-la dans le corps de la requête via la syntaxe Razor :
context.Guid = Guid.NewGuid().ToString();
context.CurrentTime = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd\\Thh:mm:ss") + ".0Z";
ProcessPostDataByRazor(currentTask);
Le corps référence ces valeurs comme @Model["Guid"] et @Model["CurrentTime"]. Si votre test crée des enregistrements, planifiez comment ils seront supprimés. Un test d’endurance écrivant six heures laisse une table que le test suivant devra lire.
Décidez contre quoi vous testez avant de lancer le test
Tester contre la production fournit la réponse la plus vraie mais met vos clients en risque. Tester contre la préproduction est sûr et vous donne une réponse sur la préproduction. La solution intermédiaire est un environnement de préproduction répliquant la production sur les trois éléments qui influencent la performance : tailles d’instances, nombre de lignes en base, et configuration du cache. Une base de préproduction de 10 000 lignes ne reproduira pas le plan de requête produit par 40 millions en production. Si elles diffèrent, notez ces différences avant l’exécution pour savoir dans quel sens vos résultats sont biaisés.
Échauffez avant de mesurer
La première minute de tout test mesure des caches froids, des pools de connexions vides, et du code non compilé à la volée. Ces chiffres sont réels, mais répondent à une question autre que celle posée. Une montée progressive gère cela seule, ce qui est un autre argument pour Load Step Curve plutôt qu’un démarrage à plat. Si vous commencez à plat, jetez les 60 à 120 premières secondes, et faites-le systématiquement : comparer un test chaud à un test froid entre versions génère un faux régressif.
Exécutez le même test trois fois
Une seule exécution est anecdotique. Partages d’infrastructure, voisins bruyants, et tâches en arrière-plan perturbent les résultats plus que les variations que vous mesurez.
Faites trois fois la même configuration et comparez les 90èmes percentiles entre eux. Une variation inférieure à environ 10 % vous donne un chiffre fiable. Plus, votre environnement est trop bruyant pour mesurer, ce qui doit être corrigé en premier. Une fois stable, ce chiffre devient la référence pour toutes les exécutions futures.
Automatisation du test de charge API dans CI/CD
Automatisez le test de charge API en déclenchant un test depuis votre pipeline et en faisant échouer la build si un seuil est dépassé. LoadView fournit des intégrations CI/CD pour Azure DevOps, Jenkins, et CircleCI qui font exactement cela. La plupart des équipes s’arrêtent après la première réussite, moment où une baseline cesse d’être rentable.
Répartissez le travail selon son coût. Un contrôle rapide sur un ou deux points de terminaison appartient à chaque fusion vers la branche principale : faible concurrence, quelques minutes, suffisant pour détecter une requête ayant perdu son index. La courbe complète est pour un candidat à la release. Lancer 200 utilisateurs simultanés à chaque commit dépense de l’argent pour répondre à une question déjà réglée ce matin-là.
Un contrôle rapide à chaque fusion, la courbe complète pour un candidat à la release.
Le seuil lui-même est le Failed Sessions Threshold : fixez le pourcentage de sessions échouées tolérées, la build échoue dès que ce seuil est dépassé.
Ce seuil couvre les erreurs, pas la lenteur. Une build où toutes les sessions réussissent à un p90 triple passe un seuil d’échecs proprement, donc le temps de réponse doit avoir son propre contrôle. Récupérez le p90, comparez-le à la baseline enregistrée, et décidez avant le test ce qui compte comme une régression. 20 % au-dessus de la baseline est un bon début, à resserrer une fois le bruit environnemental connu.
Conservez la définition du test dans un contrôle de version là où l’outil le permet : un fichier JMX ou une collection Postman dans le repo évoluent avec le code testé. Et corrigez un environnement bruyant avant d’appliquer un seuil, car une pipeline qui fait échouer les builds au hasard est désactivée en une à deux semaines, vous laissant sans seuil ni habitude.
Comparaison des outils de test de charge API
Apache JMeter, Postman, Grafana k6, SoapUI et LoadView couvrent la plupart des cas de test de charge API, mais ne sont pas concurrents sur le même métier. Choisissez selon la provenance de la charge attendue et où le test doit être hébergé, plutôt qu’au nombre de fonctions.
| Outil | Support de protocoles | Comment construire le test | Provenance de la charge | Le mieux adapté à | Licence |
|---|---|---|---|---|---|
| LoadView | REST avec JSON et XML, SOAP, WebSocket, plus tests en navigateur réel | Éditeur formulaire, ou import d’un fichier JMX ou d’une collection Postman | Injecteurs cloud managés dans 40+ zones | Exécutions distribuées à forte concurrence sans gérer d’infrastructure | Essai gratuit; plans à la demande, abonnement et entreprise |
| Apache JMeter | HTTP/S, SOAP, JDBC, JMS, FTP, LDAP, plus via plugins | GUI de bureau construisant un plan de test JMX; exécution en ligne de commande | Machines que vous provisionnez, simple ou distribuée | Équipes avec compétences infrastructure et sans budget licence | Open source, Apache 2.0 |
| Postman | HTTP/S REST, GraphQL, SOAP | Réutilise la collection déjà construite pour les tests fonctionnels | Votre machine locale ou cloud Postman | Contrôles de performance rapides en développement | Niveau gratuit, abonnement payant |
| Grafana k6 | HTTP/S, WebSocket, gRPC, API navigateur | Scripts de test JavaScript stockés dans votre dépôt | Vos machines ou Grafana Cloud k6 pour des exécutions managées | Équipes d’ingénierie voulant tests en contrôle de version et dans CI | CLI open source, cloud commercial |
| SoapUI / ReadyAPI | SOAP, REST, GraphQL | Cas de test fonctionnels convertis en tests de charge | Vos propres machines | Environnements riches en SOAP avec suites fonctionnelles existantes | SoapUI open source ; ReadyAPI commercial |
1) LoadView se distingue par ses injecteurs managés, qui font d’un test réalisé depuis 40+ zones un choix de configuration plutôt qu’un projet d’approvisionnement, et par ses tests en navigateur réel qui s’exécutent parallèlement aux tests API. Il importe les fichiers JMX et collections Postman, permettant de conserver un plan de test existant. LoadView propose des plans à la demande, abonnement et entreprise, tandis qu’un test léger réalisé à chaque commit peut rester dans un outil CLI dans votre pipeline.
2) Apache JMeter est l’option gratuite la plus complète avec le plus grand écosystème de plugins, couvrant bien au-delà du HTTP vers les bases de données et les files de messages. Le coût est moins celui de la licence que du travail opérationnel : vous provisionnez et surveillez les générateurs de charge, et charger depuis cinq pays nécessite des machines dans cinq pays.
3) Postman rapproche le plus vite possible une requête existante d’un chiffre de charge, en lançant la collection construite pour les tests fonctionnels depuis votre poste local ou le cloud Postman. Pour un ingénieur vérifiant un point avant de créer une pull request, rien n’est plus rapide. C’est un outil de développement plus qu’un outil de planification de capacité, et Postman le positionne ainsi.
4) Grafana k6 est le choix le plus fort quand les tests de performance sont versionnés. Ce sont des scripts JavaScript, ils sont donc révisés, comparés, et exécutés par le même pipeline que tout, et les seuils font échouer une build comme un test unitaire. Si vous devez contrôler chaque pull request, k6 est un meilleur choix par défaut que LoadView, et c’est important de le dire clairement.
5) SoapUI couvre fonctionnel, sécurité, charge, et mock dans un seul outil open source pour REST, SOAP, et GraphQL. Son avantage est la réutilisation : un cas fonctionnel devient un test de charge sans reconstruction, valeur clé en environnement SOAP lourd. ReadyAPI est la version commerciale de SmartBear avec un module de test de charge étendu.
Par où commencer
Choisissez le point de terminaison unique qui causerait le plus de tort en ralentissant, souvent la connexion, la recherche, ou le paiement. Montez un test Rest WEB API à votre pic prévu, tenez-le dix minutes, et exécutez-le trois fois depuis un seul endroit. Voilà une base en une après-midi. Les équipes butent en essayant de modéliser tout le système d’un coup.
FAQ sur le test de charge API
Les questions ci-dessous reviennent le plus souvent une fois que l’équipe commence à tester la charge d’une API. Chaque réponse est indépendante.
Comment testez-vous la charge des points de terminaison API derrière un load balancer ?
Adressez le test sur le point de terminaison public du load balancer plutôt que sur un nœud individuel, car c’est le chemin de vos utilisateurs et le seul qui exerce la distribution. Surveillez ensuite trois facteurs qui faussent le résultat : l’affinité de session qui lie chaque utilisateur virtuel à un seul nœud, le hachage source-IP qui envoie tout le trafic d’un injecteur sur le même nœud, et un petit nombre d’injecteurs concentre la charge sur une fraction de votre flotte. Générer la charge depuis plusieurs lieux géographiques vous donne plus d’adresses sources et une répartition plus homogène.
Les contrôles de santé modifient la donne en cours de test. Si un nœud commence à échouer sous charge, le load balancer le retire, la capacité baisse, le taux d’erreur grimpe puis redescend, ce qui est le load balancer en action et non l’API qui échoue. Le vidage de connexion laisse les requêtes en cours se terminer pendant que les nouvelles sont stoppées, donc les erreurs apparaissent plus tard que l’événement déclencheur.
Qu’est-ce que la performance API ?
La performance API, c’est la rapidité et la fiabilité avec lesquelles une API répond aux requêtes à un niveau de trafic donné. Elle se mesure avec quatre chiffres : le temps de réponse, lu à un percentile plutôt qu’à la moyenne ; le débit, nombre de requêtes achevées par unité de temps ; le taux d’erreur, proportion de requêtes échouées ; et l’utilisation des ressources côté serveur. Une API est performante quand les quatre tiennent bon malgré la montée en concurrence.
Qu’est-ce que le débit API ?
Le débit API est le nombre de requêtes qu’une API complète avec succès dans une période donnée, généralement par seconde ou par minute. Il compte le travail terminé, pas celui tenté, donc les requêtes échouées ne comptent pas. Le débit et le temps de réponse évoluent ensemble sous charge : à la limite, le débit plafonne pendant que le temps de réponse augmente, ce point de plafonnement étant la capacité pratique du point de terminaison.
Comment faites-vous un test de stress d’une API ?
Le test de stress d’une API consiste à augmenter les utilisateurs simultanés au-delà du niveau attendu jusqu’à ce que l’API se dégrade ou échoue, puis à enregistrer ce point. Partir d’une charge sûre, monter en paliers, et tenir chaque palier une à deux minutes pour laisser les files se remplir. Le chiffre clef est la concurrence où le taux d’erreur commence à monter, pas le point de défaillance totale. Ce chiffre est la marge au-dessus du trafic normal.
Comment évaluez-vous la performance d’une API ?
Évaluer une API signifie fixer un test répétable et enregistrer son résultat comme référence pour toutes les fois suivantes. Verrouillez le point de terminaison, la concurrence, la durée, la géographie, et les données de test, puis exécutez trois fois et prenez le 90ème percentile sur les trois. Une variation supérieure à environ 10 % signifie que l’environnement est trop bruyant pour évaluer, ce qui doit être corrigé en premier.
Combien coûte le test de charge API ?
Avec LoadView, le coût d’un test à la demande dépend de la charge, de la durée, et des régions géographiques configurées. Des plans d’abonnement et entreprise sont aussi proposés. Les outils open source sont gratuits mais déplacent les coûts vers les machines que vous provisionnez et le temps d’ingénieur pour les maintenir.
Testez les API avec LoadView
Le test de charge d’une API avec LoadView peut être aussi simple que la création d’un script envoyant plusieurs appels à l’API en séquence et augmentant le nombre d’utilisateurs simultanés jusqu’aux limites du trafic prévu. Les scripts sont réutilisables et peuvent surveiller le système tout au long de la période de service.
Le test de charge API de LoadView supporte les API RESTful incluant JSON et XML, SOAP, et les Web APIs nécessitant une authentification ou une exécution en plusieurs étapes. Selon les besoins de votre test API, la plateforme offre le choix entre plusieurs courbes de charge.
Trois courbes de charge sont disponibles : Load Step Curve pour un nombre défini d’utilisateurs simultanés sur une durée donnée, Goal-based Curve pour atteindre automatiquement un taux de transactions requis, et Dynamic Adjustable Curve pour modifier manuellement la charge pendant l’exécution.
LoadView distribue aussi la charge sur plus de 40 régions géographiques selon votre découpage, et choisir les lieux proches de vos utilisateurs offre la meilleure émulation.
Découvrez les tests API de LoadView grâce à un essai gratuit et évaluez vos APIs sous diverses conditions de charge. Commencez à tester vos points de terminaison API dès aujourd’hui, sans engagement.
- Qu'est-ce que le test de charge API ?
- Test de performance API
- Pourquoi le test de charge API est crucial
- Avantages du test de charge API et pourquoi vous devriez le faire
- Quand effectuer un test de charge API
- Comment effectuer un test de charge des API
- Bonnes pratiques pour le test de charge API
- Automatisation du test de charge API dans CI/CD
- Comparaison des outils de test de charge API
- Par où commencer
- FAQ sur le test de charge API
- Testez les API avec LoadView
Portez votre test de charge au niveau supérieur
niveau supérieur
Découvrez des fonctionnalités inégalées avec une évolutivité illimitée. Pas de carte bancaire, pas de contrat.