Les bases des tests de performance : Qu’est-ce que le temps de réponse ?
Benjamin Franklin le disait déjà : « Le temps, c’est de l’argent. ». En 2009, Amazon va dans le même sens en soulignant l’importance de l’expérience utilisateur : l’augmentation du temps de réponse de 100ms d’une page équivaut à 1% de perte sur les ventes. Étant donné la corrélation forte entre les temps de réponse et l’expérience utilisateur, une application lente va engendrer une diminution de ses revenus car ses utilisateurs se tourneront progressivement vers la concurrence. C’est pourquoi l’analyse des temps de réponse est cruciale durant les tests de performance.
Définition du temps de réponse
Le temps de réponse mesure le temps que le serveur met pour envoyer une réponse à une requête d’un utilisateur.
Plus il est long, plus l’utilisateur est frustré. Il ne faut surtout pas le confondre avec le throughput que nous aborderons dans un article dédié.
Comment mesurer le temps de réponse ?
Pendant les tests, on mesure le temps de réponse avec les outils de test de performance et de supervision. Les outils de test de performance les plus connus sont les suivants :
- LoadRunner
- Neoload
- JMeter
Ils fournissent le temps de réponse à la fin de chaque test de performance.
Quant aux outils de supervision, Dynatrace est le leader du marché actuel mais on peut également penser à Datadog dont l’offre est intéressante ou encore ElasticAPM du côté de l’opensource.
Dans le cadre d’un test de performance, il est en général plus pertinent de mesurer le temps de réponse des transactions métier. Une transaction métier se définit comme une action ou un ensemble d’actions réalisées par un utilisateur afin d’accomplir des séquences de tâches.
Par exemple, un achat sur un site de e-commerce sera composé de transactions telles que l’authentification d’un utilisateur ou la recherche d’un article.
Décomposition du temps de réponse
Le temps de réponse perçu par l’utilisateur d’une application web est composé par :
- Le temps de transmission réseau. (Le temps de téléchargement, …)
- Le temps d’affichage de l’IHM dans le navigateur.
- Le temps de traitement au niveau du serveur (Temps CPU, Temps Base de données)
Le temps de réponse dépend de la qualité du réseau, de l’infrastructure dans laquelle l’application est déployée et de l’environnement de l’utilisateur.
Cas concret
Ci-dessous, un graphe représentant la moyenne du temps de réponse des transactions pendant un test de performance. Cette image provient d’un test de performance réalisé grâce à Neoload.
Une observation rapide montre que la courbe du temps de réponse moyen des transactions présente des pics.
Ces pics étant soudains, on peut émettre l’hypothèse qu’il y a une ou plusieurs ressources des serveurs qui atteignent leurs limites très rapidement. Cela pourrait être une saturation CPU, mémoire ou autres.
Avec un outil de monitoring déployé au préalable du test, une analyse des métriques serveurs pourra infirmer ou confirmer cette hypothèse.
Les outils de test de performance fournissent en général la moyenne du temps de réponse. Cependant, la moyenne n’est pas très pertinente pour réaliser une appréciation quantitative du comportement d’une application. En effet, son interprétation repose sur le fait que le test de performance obéit aux lois d’une distribution normale. Ce qui n’est pas vérifié en général.
Dans un test de performance, un histogramme représentant le percentile des temps de réponse des transactions et plus généralement, des données non agrégées, seraient plus intéressant à interpréter.
Conclusion
Le temps de réponse est une métrique très importante qui permet de qualifier le comportement d’une application. Il détermine la satisfaction des utilisateurs.
S’il est possible de se contenter de la moyenne du temps de réponse pour réaliser une analyse qualitative du comportement d’une application, il serait plutôt intéressant de réaliser une analyse quantitative sur les percentiles et des données non agrégées. La moyenne des temps de réponse masque souvent des lenteurs d’une fonctionnalité pour un groupe d’utilisateurs précis.