Analyse des résultats des tests de résistance

Chaque jour dans le monde, il existe de plus en plus d'outils pour rĂ©aliser des tests de rĂ©sistance. En fait, l'intĂ©rĂȘt mĂȘme pour ce sujet commence Ă  croĂźtre.

La tùche principale d'un outil de test de charge est d'appliquer une charge donnée au systÚme. Mais en plus de cela, il y a une tùche supplémentaire, non moins importante: fournir un rapport sur les résultats de la soumission de cette charge. Sinon, nous effectuerons des tests, mais nous ne pourrons rien dire sur son résultat et ne pourrons pas déterminer avec précision à partir de quel moment la dégradation du systÚme a commencé.



Les outils de test les plus populaires pour le moment sont Gatling, MF LoadRunner, Apache JMeter. Tous ont la possibilitĂ© de gĂ©nĂ©rer des rapports prĂȘts Ă  l'emploi sur les tests effectuĂ©s, ainsi que des graphiques individuels ou des donnĂ©es brutes, sur la base desquels le rapport lui-mĂȘme est construit.







Avant de rédiger un rapport, vous devez comprendre pour qui nous le rédigeons et dans quel but nous poursuivons. Cela n'a aucun sens d'ajouter de nombreux graphiques du temps de réponse de l'application au rapport pour chaque opération si votre objectif est de déterminer s'il y a des fuites de mémoire, si une opération instable a été corrigée lors d'un test de fiabilité ou si vous devez comparer deux versions l'une par rapport à l'autre dans le cadre d'un test de régression. Pour répondre à ces questions, vous n'avez besoin que de quelques graphiques, sauf si, bien sûr, vous avez résolu les problÚmes et ne voulez pas les comprendre. Par conséquent, avant de créer un rapport, demandez-vous si vous devez vraiment y ajouter tous les graphiques ou seulement les plus indicatifs et donnez une réponse à l'objectif du test. De plus, l'ensemble des graphiques et leur analyse pour le rapport dépendent du modÚle de charge sélectionné - fermé ou ouvert,puisque différents modÚles donneront des chiffres différents sur les graphiques.



Chez Tinkoff, nous utilisons activement l'outil Gatling.Par consĂ©quent, en utilisant son exemple, nous vous dirons comment crĂ©er un rapport de vos rĂȘves et oĂč regarder lors de son analyse. Je tiens Ă©galement Ă  noter tout de suite que presque tous les graphiques dĂ©crits dans l'article peuvent ĂȘtre obtenus en ligne Ă  l'aide d'un ensemble de votre outil avec Grafana. Il s'agit de l'outil le plus pratique pour crĂ©er des rapports Ă  la volĂ©e, Ă  l'aide d'un tableau de bord prĂ©configurĂ©. De plus, il vous permet de crĂ©er plus rapidement presque tous les graphiques en fonction des donnĂ©es que vous envoyez. Il existe dĂ©jĂ  des tableaux de bord prĂȘts Ă  l'emploi pour presque tous les outils de test de charge. Des graphiques pour d'autres outils - MF LoadRunner et Apache JMeter - seront Ă©galement donnĂ©s, leur analyse est construite par analogie avec Gatling.



MĂ©triques de base



Indicateurs



Affiche la distribution quantitative et en pourcentage du temps de réponse aux demandes par groupe. Les graphiques de ce type sont pratiques à utiliser pour donner une évaluation préliminaire rapide des résultats du test sans une analyse plus approfondie du reste des graphiques.



Les seuils de groupe à groupe sont prédéfinis en fonction de l'examen par les pairs ou du SLA (exigences non fonctionnelles). Par exemple, il peut y avoir trois groupes:



  • excellent - temps de rĂ©ponse infĂ©rieur Ă  50 secondes;
  • moyen - plus de 50, mais moins de 100 secondes;
  • terrible - plus de 100 secondes.


Dans Gatling, vous pouvez configurer vous-mĂȘme les seuils de passage de groupe en groupe et leur numĂ©ro dans le fichier gatling.conf. Il est prĂ©fĂ©rable de crĂ©er des graphiques de ce type en fonction de la mĂ©thodologie. APDEX (Application Performance Index)

Vous pouvez Ă©galement ajouter un indicateur avec le nombre / le pourcentage de requĂȘtes ayant Ă©chouĂ©.







La mĂ©thode APDEX vous permet d'utiliser des indicateurs dans les tests de rĂ©gression pour comparer les versions: de cette façon, vous pouvez immĂ©diatement voir Ă  quel point la version est devenue pire ou meilleure en gĂ©nĂ©ral. Malheureusement, ce graphique n'est pas prĂȘt Ă  l'emploi dans MF LoadRunner et Apache JMeter, mais il est facile de le crĂ©er Ă  l'aide du tableau de bord Grafana.



Tableau des temps de réponse



Par défaut, Gatling crée une table basée sur les percentiles, les temps de réponse moyens et maximums et les erreurs. Il suit le dépassement du SLA (excÚs d'exigences non fonctionnelles). En rÚgle générale, les SLA indiquent les percentiles 95, 99 et le pourcentage d'erreurs. Ainsi, le tableau vous permet d'obtenir une évaluation rapide des résultats du test.



Si vous regroupez les requĂȘtes en tant que transactions, vous pouvez voir dans le tableau Ă  la fois le score pour les requĂȘtes individuelles et le score pour l'ensemble du groupe et de la transaction Ă  la fois.

Rapport HTML Gatling
MF LoadRunner crĂ©e Ă©galement la table elle-mĂȘme dans le bloc Rapport de synthĂšse d'analyse et s'appelle SynthĂšse de transaction
Dans Apache JMeter, ces données se trouvent dans le rapport agrégé


Graphique des utilisateurs virtuels



Habituellement mesuré en morceaux et montre comment les utilisateurs entrent dans l'application, illustrant ainsi le profil de charge réel. Il convient de noter tout de suite que pour MF LoadRunner et Gatling, ces graphiques montrent le nombre d'utilisateurs virtuels et pour Apache JMeter - le nombre de threads.



Le graphique est utilisĂ© pour contrĂŽler l'exactitude de l'application de charge. Il est nĂ©cessaire que votre scĂ©nario de conception corresponde Ă  ce que vous avez soumis au systĂšme dans la rĂ©alitĂ©. Par exemple, si vous voyez de grands Ă©carts Ă  la hausse par rapport au scĂ©nario prĂ©vu sur le graphique, cela signifie que quelque chose s'est mal passĂ©: une erreur dans le calcul, plus de copies de l'outil de chargement ont Ă©tĂ© lancĂ©es que nĂ©cessaire, et ainsi de suite. Il est peut-ĂȘtre inutile d'analyser d'autres graphiques, puisque vous avez soumis 100 utilisateurs de plus que prĂ©vu et que le systĂšme a Ă©tĂ© conçu Ă  l'origine pour fonctionner avec seulement 10 utilisateurs.

Ce graphique est divisé en deux types:



  • Utilisateurs actifs affiche le nombre de threads actuellement actifs par seconde. Lorsque les threads dĂ©marrent et s'arrĂȘtent, en particulier dans un modĂšle Ă  charge ouverte, ce taux fluctuera tout au long du test.
  • Total VUsers indique le nombre total de threads dĂ©marrĂ©s et arrĂȘtĂ©s depuis le dĂ©but des tests. Pratique pour un modĂšle Ă  charge fermĂ©e dans lequel les fils ne meurent pas.


Le type de graphique dépend également du modÚle de charge:



  • ModĂšle fermĂ© - les utilisateurs doivent se connecter au systĂšme en fonction du profil de charge prĂ©vu. Si le graphique montre des creux ou des pics, cela indique que la charge ne s'est pas dĂ©roulĂ©e selon le scĂ©nario calculĂ© ou prĂ©vu et nĂ©cessite une Ă©tude plus approfondie.
  • — , . , . , , / . , — .


HTML Gatling Report
MF LoadRunner Running Vusers
Apache JMeter Active Threads Over Time , JMeter-Plugins.org


Response Time



Le plus souvent mesuré en millisecondes - il indique le temps de réponse aux demandes adressées à l'application. Le temps de réponse ne doit pas dépasser le SLA. Ce graphique est le principal outil pour trouver les points de dégradation lors des tests de charge.



Si des pics sont visibles sur le graphique, cela signifie qu'Ă  ce moment, l'application n'a pas rĂ©pondu pour une raison quelconque - cela peut ĂȘtre un point de dĂ©part pour d'autres recherches. Le temps de rĂ©ponse doit ĂȘtre uniforme, sans pics pour toutes les opĂ©rations tout au long de l'Ă©tape de charge, et Ă©galement en corrĂ©lation avec l'entraĂźnement de la charge. Gatling n'inclut pas de graphique du temps de rĂ©ponse «net» (moyen, non agrĂ©gĂ©), contrairement Ă  d'autres outils.



En plus du graphique du temps de rĂ©ponse de chaque requĂȘte, il est Ă©galement pratique d'afficher une ligne avec le temps de rĂ©ponse total. En superposant le tracĂ© de charge appliquĂ©e (VU / RPS), vous pouvez suivre la corrĂ©lation avec l'augmentation du temps de rĂ©ponse Ă  partir de l'augmentation de la charge appliquĂ©e (VU / RPS). Apache JMeter appelle ce graphique Temps de rĂ©ponse vs Threads.



Ensuite, il y aura des graphiques, sur lesquels il peut y avoir plusieurs lignes, chacune affichant son propre scĂ©nario ou requĂȘte. Si vous avez un test complexe avec de nombreuses opĂ©rations et un profil non linĂ©aire, nous vous recommandons d'afficher uniquement les requĂȘtes ou groupes de requĂȘtes les plus reprĂ©sentatifs dans le rapport. Sinon, vous ne pouvez reflĂ©ter que les demandes qui dĂ©passent le SLA / SLO, afin de ne pas encombrer le calendrier et le rapport.

Dans MF LoadRunner, le graphique est appelé Temps de réponse moyen des transactions et montre le temps moyen des transactions
Pour Apache JMeter, le graphique existe en deux versions dans un package avancé de JMeter-Plugins.org et est appelé Temps de réponse au fil du temps et, par défaut, Graphique du temps de réponse. Plus visuelle et pratique, à mon avis, est la premiÚre option





Variations de graphique



Une modification est possible dans laquelle les centiles de temps de réponse sont appliqués et une ligne de temps de réponse moyen pour toutes les demandes est ajoutée. L'utilisation des percentiles ici sera plus correcte, car le temps de réponse moyen est trÚs sensible aux valeurs aberrantes.



Dans les tests de performance, les 95e et 99e centiles sont le plus souvent utilisés pour plus de clarté. Cependant, si vous regardez le temps de réponse moyen, vous devez tenir compte de l'écart-type (quadratique moyenne).

Rapport HTML Gatling
Pour MF LoadRunner, le graphique sera appelé Temps de réponse de transaction (centile)
Vous pouvez Ă©galement obtenir des percentiles pour Apache JMeter Ă  l'aide du graphique des percentiles des temps de rĂ©ponse du mĂȘme ensemble Ă©tendu


Répartition du temps de réponse



Il existe également d'excellents graphiques montrant la dépendance de la distribution du temps sur le nombre de demandes.



Ce type de graphique est quelque peu similaire aux indicateurs, mais montre une image plus complĂšte de la distribution du temps, sans dĂ©coupage par percentiles ou autres agrĂ©gats. À l'aide du graphique, vous pouvez dĂ©finir plus clairement les limites des groupes d'indicateurs. MF LoadRunner n'a pas un tel calendrier.

Rapport HTML Gatling pour chaque demande
Il existe une autre option pour rĂ©partir le temps d'exĂ©cution de la requĂȘte Ă  partir du nombre de requĂȘtes en termes de requĂȘtes rĂ©ussies et erronĂ©es pour l'ensemble du test
MF LoadRunner Transaction Response Time (Distribution)
Apache JMeter Response Times Distribution


Latency



À partir de cette mĂ©trique, un paramĂštre supplĂ©mentaire Latency (millisecondes) peut Ă©galement ĂȘtre distinguĂ© - le temps de latence (le plus souvent, cela est compris comme la latence du rĂ©seau). Ce paramĂštre indique le temps entre la fin de l'envoi de la demande et la rĂ©ception du premier paquet de rĂ©ponse du systĂšme.

En utilisant ce paramĂštre, vous pouvez Ă©galement mesurer la latence au niveau du rĂ©seau si le paramĂštre augmente. Il est souhaitable qu'il tende vers zĂ©ro. Ce type de graphique et le suivant sont principalement utilisĂ©s pour une analyse approfondie et pour trouver des problĂšmes de performances. Ce graphique n'est pas prĂȘt Ă  l'emploi Ă  Gatling. Dans MF LoadRunner, ce graphique est appelĂ© Graphique de latence moyenne dans le bloc Graphiques de virtualisation de rĂ©seau si vous avez installĂ© des agents de surveillance.

Dans Apache JMeter, ce graphique n'est présent que dans l'ensemble étendu et est appelé Latences de réponse dans le temps


Bande passante



De la mĂȘme maniĂšre que la mĂ©trique ci-dessus, vous pouvez sĂ©lectionner le paramĂštre Bandwidth (kilobits par seconde) - la bande passante du canal. Il montre la quantitĂ© maximale de donnĂ©es pouvant ĂȘtre transfĂ©rĂ©es par unitĂ© de temps.



En modifiant ce paramĂštre sur l'outil de chargement, vous pouvez simuler diffĂ©rentes sources de connexions Ă  l'application: mobile 4G ou rĂ©seau filaire. La version gratuite de Gatling ne possĂšde pas ce graphique, il n'est disponible que dans la version payante de Gatling FrontLine. Ce graphique n'est prĂȘt Ă  l'emploi que dans MF LoadRunner, il est situĂ© dans le mĂȘme bloc que Latency et s'appelle Graphique d'utilisation moyenne de la bande passante.



Tableau de demande par seconde



Mesuré en morceaux par seconde - indique le nombre de demandes entrant dans le systÚme en 1 seconde.



Le graphique montre le nombre de requĂȘtes que votre systĂšme peut traiter sous charge, et c'est Ă©galement le graphique principal pour la crĂ©ation du rapport. Il suit Ă©galement le dĂ©passement du SLA, car avec une augmentation de la charge lors du passage du point de dĂ©gradation ou des extrema locaux, une dĂ©faillance peut ĂȘtre observĂ©e, puis une forte augmentation. Le plus souvent, cela est dĂ» au fait que lorsque l'application commence Ă  se dĂ©grader, les requĂȘtes commencent Ă©galement Ă  s'accumuler Ă  l'entrĂ©e de l'application (une file d'attente apparaĂźt), puis l'application leur donne une sorte de rĂ©ponse ou les requĂȘtes tombent avec le dĂ©lai d'expiration, ce qui provoque une forte augmentation du graphique - parce que la rĂ©ponse a Ă©tĂ© reçue.



  1. VU, RPS/TPS , .
  2. Response Time, , .


HTML Gatling Report
MF LoadRunner Hits per Second
Apache JMeter Hits per Second


TPS



Il est mesuré en morceaux par seconde et indique le nombre de transactions (il peut y avoir de nombreuses demandes dans une transaction) en 1 seconde.



Par exemple, la transaction «entrer dans votre compte personnel» comprend les demandes suivantes: ouverture de la page principale, saisie d'un login, mot de passe, appui sur le bouton «envoyer», redirection vers la page d'accueil - par unitĂ© de temps. Dans Gatling, un graphique ne peut ĂȘtre obtenu qu'en utilisant Grafana, car pour les groupes dans un rapport HTML, les graphiques sont construits uniquement en fonction du temps de rĂ©ponse.

MF LoadRunner - Transactions par seconde
Pour le package Ă©tendu Apache JMeter - Transactions par seconde


Tableau des erreurs



Habituellement mesuré en taux (piÚces par seconde) - le graphique montre l'augmentation du nombre de demandes erronées. Il est également pratique de mesurer la valeur en pourcentage du nombre total de demandes. Ce graphique suit le SLA hors limites en fonction du nombre ou du pourcentage d'erreurs.



Si vous superposez le graphique Temps de réponse, vous pouvez voir comment une augmentation des erreurs affecte une augmentation du temps de réponse de l'application.



Gatling par défaut n'a pas de graphique séparé montrant uniquement les erreurs. Dans Gatling, il est combiné avec le graphique VU et montre immédiatement comment une augmentation de la charge affecte une augmentation du nombre d'erreurs, et aide à détecter le seuil à partir duquel le SLA est dépassé ou des erreurs apparaissent. Apache JMeter n'a pas non plus de planning séparé, il est combiné avec les graphiques du nombre de transactions.

Rapport HTML Gatling
Dans MF LoadRunner, ce graphique est appelé Erreurs par seconde


État des rĂ©ponses HTTP



Il est également possible de tracer la distribution du nombre d'erreurs par codes de réponse d'application sur un graphique - il est pratique à utiliser pour classer les erreurs.



Par exemple, si vous avez obtenu 100% sur le graphique précédent, vous commencez à analyser les erreurs 50x dues au fait que le serveur ne répond pas, ou 403 en raison du fait que le pool est incorrect et que les utilisateurs ne peuvent pas se connecter, si, par exemple, vous utilisez le protocole HTTP.

Dans un premier temps, la version gratuite de Gatling ne possÚde pas cette carte, elle n'est disponible que dans la version payante de Gatling FrontLine. Pour que le graphique apparaisse dans la version gratuite, vous devez reconfigurer le logback.xml afin que les journaux soient collectés dans le graylog, et y créer le graphique requis.

Dans MF LoadRunner, ce graphique est appelé Réponses HTTP par seconde
Apache JMeter appelle ce graphique Codes de réponse par seconde à partir du package avancé


Graphique de débit



Il est généralement mesuré en bits par seconde. Le graphique montre le débit de l'application, à savoir la quantité de données envoyées et traitées par l'application par unité de temps.

Il est généralement utilisé pour une analyse approfondie d'un problÚme d'application. Gatling ne contient ce graphique que dans FrontLine, il n'est pas dans la version gratuite.

Ce graphique est disponible directement dans MF LoadRunner, il s'appelle DĂ©bit
Dans Apache JMeter, le graphique est appelé Bytes Throughput Over Time à partir du package avancé


Modifications possibles



  1. Response Time, , (Throughput). Response Time, Throughput , : - .
  2. Bandwidth, , .
  3. VU, , , . .




La plupart des graphiques peuvent ĂȘtre obtenus en utilisant les rapports Gatling basĂ©s sur HTML aprĂšs le test, ou en configurant le bundle de surveillance Graphite-InfluxDB-Grafana . Pour l'affichage, vous pouvez utiliser un tableau de bord prĂȘt Ă  l'emploi de la bibliothĂšque de tableaux de bord https://grafana.com/grafana/dashboards/9935 .



Lors de l'analyse et de la compilation de vos tableaux de bord pour Gatling, vous devez tenir compte du fait que les résultats dans InfluxDB sont stockés agrégés et ne conviennent que pour une évaluation préliminaire des résultats NT. Il est recommandé aprÚs le test de recharger le fichier simulation.log dans la base de données et de créer un rapport final dessus et de rechercher les problÚmes de performances du systÚme.



Description de la matrice des métriques



Tout ce que nous avons décrit ci-dessus est présenté sous la forme d'une petite tablette résumant toutes ces connaissances.

Un type VU Temps de réponse Demandes les erreurs Débit
VU , RPS/TPS/HITS , , VU . , , , .
Response Time , . , , (Throughput). Response Time, Throughput , : -
Requests , , . . , . SLA . . ,
Errors , ,
Throughput ,



All Articles