Planification fondamentale pour les tests de charge - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Planification fondamentale pour les tests de charge

Pour déterminer l'outil et la configuration appropriés pour le test de charge, expliquez clairement pourquoi vous effectuez le test. Les questions suivantes doivent être abordées avec le bon type de test :

  • Quelle charge mon application peut-elle supporter ?

  • Mon application peut-elle supporter une charge X ?

  • Mon application est-elle automatiquement augmentée ou réduite ?

  • Le comportement de mon application se dégrade-t-il au fil du temps en fonction de la quantité de charge X ?

  • Mon application fonctionne-t-elle ? (Il ne s'agit pas d'un test de charge classique, mais vous pouvez utiliser des outils de test de charge pour déterminer si votre application fonctionne comme prévu.)

Déterminer la complexité du test

La complexité du test est déterminée par le degré d'achèvement de votre évaluation. Des outils de base, tels que Hey ou ab, peuvent exécuter des demandes par rapport à un seul URI d'application. Ces outils sont les plus efficaces, mais ils ne testent qu'un seul aspect de votre application. Dans certains cas, cela peut s'avérer suffisant. Par exemple, si vous souhaitez tester la mise à l'échelle, il suffit de passer des appels à un point de terminaison pour infliger une charge dans la dimension que vous souhaitez tester. Par exemple, la charge du processeur peut être une charge utile énorme ou un calcul intensif qui crée une charge de processeur. Si vous disposez d'un système distribué, vous souhaiterez peut-être invoquer un point de terminaison qui démarre un processus complexe et distribué.

Dans d'autres cas, le test peut être nécessaire pour exécuter un comportement complexe. Par exemple, vous devez vous connecter avant de démarrer un processus, ou vous testez un processus de commande qui inclut la sélection d'un article et l'exécution de l'achat. Cela peut être compris comme un scénario. Les scénarios de test nécessitent des outils de test de charge plus complexes, dans lesquels vous pouvez adapter la charge de travail à des situations réelles. Cela produira des résultats que vous pourrez utiliser pour émettre des affirmations sur les performances dont bénéficieront les utilisateurs finaux.

Des tests complexes induisent une charge accrue sur le système générateur de charge. Pour exécuter des tests de charge, vous devez prendre en compte non seulement l'outil, mais également le système qui l'exécute, son processeur et sa bande passante du réseau étant les aspects les plus importants. Un système informatique de test de charge mal conçu peut donner lieu à des résultats erronés. Par exemple, une seule machine ne sera pas suffisante pour créer la charge pour une cible performante. Dans ce cas, vous devez configurer un test de charge distribuée. D'un autre côté, un outil performant peut créer plus de charge avec un seul serveur. Ce point sera abordé plus en détail dans la discussion sur la configuration des tests.

Mesure et configuration

La représentabilité de l'environnement de test doit être prise en compte. Si vous gérez un site d'achat volumineux avec des milliers de serveurs, il peut s'avérer difficile de tester la production sans affecter les utilisateurs finaux ou de créer un environnement de test qui reproduit la taille du site. En outre, la création d'un trafic suffisant pour exercer une tension sur le système à cette échelle nécessite également une configuration de test de charge sophistiquée. C'est pourquoi les tests de charge sont généralement exécutés sur des configurations comparables plus modestes que vous pouvez utiliser pour établir des hypothèses concernant l'environnement de production. Les tests qui établissent des références ou des exigences fonctionnelles peuvent être exécutés dans des environnements de production.

Il est recommandé de documenter les environnements de test pour les tests suivants afin de disposer d'une spécification bien définie, avec les résultats attendus pour la taille d'environnement cible.

Tenez compte de tous les éléments de l'infrastructure affectés par le test de charge. Bien que le test porte souvent sur le processeur et la mémoire des hôtes, il convient de prendre en compte d'autres effets secondaires.

Un effet secondaire type est que la bande passante du réseau pour la communication entre vos services peut atteindre ses limites. Pour les services connectés via Internet ou pour les systèmes distribués, la communication est généralement basée sur un réseau. L'utilisation d'un test de charge qui crée une tension sur l'application créera également une tension sur l'infrastructure réseau sous-jacente.

Modélisation de la charge et tests par étapes

Pour différents tests, vous pouvez modéliser la quantité de charge produite au cours du test. Une méthode de base consiste à créer une progression par étapes qui augmentera progressivement la charge au fil du temps. Cela créera des points de données distincts pour chaque étape, ce qui vous permettra de tirer des conclusions plus détaillées lors d'un seul test. Pour trouver une limite adaptée à votre application, il est recommandé de démarrer le test avec une charge inférieure à l'utilisation normale pour laquelle vous pouvez vous attendre à des performances optimales. Lorsque vous augmentez progressivement la charge, vous verrez la limite à laquelle les performances de l'application se dégradent. Les résultats indiqueront si le comportement attendu est toujours valide et si votre application se comporte comme prévu en cas de défaillance. Par exemple, lorsque les tests dépassent la limite, vous pouvez vous attendre à ce que votre application se décharge.

À l'aide d'outils complexes, vous pouvez définir un modèle comme configuration pour votre test. Cela définira la quantité de charge qui sera produite pendant une période et comment elle augmentera ou diminuera.

La plupart des outils de base sont des outils de ligne de commande, qui vous obligent à créer vous-même un script de solution. Lorsque vous écrivez vos propres scripts, assurez-vous de ne pas remplacer accidentellement les métriques que vous souhaitez conserver. Les fichiers de sortie doivent avoir de nouveaux suffixes pour chaque itération, afin que vous ne remplaciez pas les résultats de votre itération précédente.