Les catégories d'outils de test de charge
Orientés script. Vous écrivez le scénario en code, puis vous l'exécutez en local ou en distribué. Souple, relisable, et à votre charge côté maintenance.
Basés sur un plan. Vous construisez le scénario dans une UI et l'enregistrez sous forme de fichier de projet. Prise en charge étendue des protocoles, mais difficile à relire dans une pull request.
Hébergés. Un tiers exécute les générateurs depuis plusieurs régions. Aucune infrastructure à maintenir, et vous payez à l'exécution.
Pour la plupart des équipes, ce choix compte moins que le fait de savoir si le test mesure quelque chose de significatif.
Trois vérifications avant même de lancer un test de charge
Est-ce juste à une requête par seconde ? Mettre en charge un endpoint défectueux revient à mesurer la vitesse à laquelle vous pouvez vous tromper. C'est le trimestre gâché le plus courant dans le travail de performance.
L'exécution nettoie-t-elle derrière elle ? Un test de charge qui crée des enregistrements et les laisse en place modifie le comportement de l'exécution suivante, et de tout le reste sur cet environnement.
L'environnement est-il représentatif ? Des résultats obtenus sur un environnement qui contient un dixième des données sont un chiffre, pas une prédiction.
Le réglage que presque personne n'active
Posez des assertions sur le corps des réponses, au moins sur un échantillon de requêtes. La plupart des outils de charge le permettent et la plupart des équipes laissent l'option désactivée parce qu'elle coûte du débit au générateur. Résultat : un rapport de charge tout vert alors que chaque réponse contient une liste vide.
Rapide et faux est pire que lent et juste, parce que personne n'ira enquêter.
C'est le scénario qui porte la valeur
Les équipes passent beaucoup de temps à choisir entre les outils de charge et très peu sur le scénario, ce qui est l'inverse de la bonne approche, car c'est le scénario qui détermine si le chiffre veut dire quelque chose.
Mille utilisateurs virtuels qui martèlent un seul endpoint, c'est facile à construire et cela ne ressemble presque jamais à rien de réel. Le trafic réel est un mélange : surtout des lectures, quelques écritures, de temps en temps un rapport coûteux, le tout sur un jeu de données qui contient déjà un an d'historique. Un système peut absorber sans peine la version synthétique et s'effondrer sur la version réaliste, parce que la contention se situe à un endroit que le scénario simple n'a jamais touché.
Construire un mélange qui ressemble à votre trafic réel demande un après-midi passé dans les logs et vaut plus que n'importe quelle différence de fonctionnalités entre les outils que vous comparez.
La place de la vérification fonctionnelle
Les plans API générés incluent des cas limites et des cas de type stress, qui font ressortir les combinaisons d'entrées rendant un endpoint lent pour une raison structurelle. Une requête qui se dégrade avec une taille de page élevée apparaît ici bien avant qu'un test de capacité ne la détecte, et pour une fraction du coût.
Ce n'est pas du test de charge et cela n'en remplace pas un. C'est la couche peu coûteuse en dessous, et c'est celle que la plupart des équipes sautent en allant acheter un générateur de charge.
Terminal
npm install -g @testsprite/testsprite-cli
testsprite setup
Si vous préférez ne rien installer, le tableau de bord fait la même chose. Tout le reste de ce que permet la ligne de commande se trouve dans le dépôt CLI.
Les détails de fonctionnement se trouvent dans la documentation sur les tests d'API.
Cadence
Test de charge avant les mises en production et après les changements d'architecture. Vérification de la justesse à chaque pull request, car c'est là qu'une régression coûte le moins cher à corriger.
La GitHub App est un webhook que vous configurez dans le tableau de bord TestSprite. Elle écoute l'événement de déploiement que votre pipeline produit déjà, si bien que rien ne change dans votre dépôt.
GitHub Actions place l'étape à l'intérieur de votre propre workflow, configuré depuis le terminal.
Ce que TestSprite couvre avant l'exécution de charge
Les trois vérifications de cette page, sous forme de produit. La justesse à une requête par seconde, grâce à une couverture générée qui pose des assertions sur les corps de réponse plutôt que sur les codes de statut. Le nettoyage, parce qu'Auto-Cleanup supprime exactement ce qu'une exécution a créé au lieu de faire une correspondance par nom. Et les cas limites qui révèlent une lenteur structurelle, qui apparaissent ici bien avant qu'un test de capacité ne les atteigne.
La couverture vient d'API Discovery et de votre spécification. Auto-Authentication maintient les sessions actives, Dynamic Variables transporte les valeurs d'un appel à l'autre, et Dependency Chains déduit un ordre d'exécution sûr.
Votre générateur de charge reste exactement où il est. Ce que vous y gagnez, c'est que le chiffre qu'il produit décrit un service qui renvoie la bonne réponse : toute la différence entre une mesure et un chiffre affirmé avec assurance qui ne porte sur rien.
TestSprite génère-t-il de la charge ?
Non. Il vérifie la justesse, cas limites compris. Une concurrence soutenue exige un générateur dédié.
Quel outil de test de charge choisir ?
Celui que votre équipe maintiendra réellement. Les différences entre les principales options comptent moins que la pertinence du scénario.
À quelle fréquence faut-il faire des tests de charge ?
Avant les mises en production et après les changements d'architecture. Le test de charge en continu coûte cher et vous apprend rarement quelque chose de nouveau entre-temps.
Peut-on faire du test de charge en CI ?
Une vérification de la taille d'un smoke test, oui. Un vrai test de capacité en CI implique soit un niveau de charge insignifiant, soit un pipeline très lent.
Quelle est l'erreur la plus courante ?
Tester la charge avant la justesse. Un chiffre de débit affirmé avec assurance sur un endpoint qui renvoie des résultats vides est pire que pas de chiffre du tout.
Trois vérifications avant de choisir un outil.
Les outils de test de charge répondent à la question de la capacité et supposent que le service est déjà juste. Vérifiez la justesse à une requête par seconde, assurez-vous que les exécutions nettoient derrière elles, utilisez un environnement représentatif et activez les assertions sur le corps des réponses.