1. Périmètre applicatif de la norme appYdex
L’objectif de la norme appYdex est d’évaluer le ressenti des utilisateurs vis-à-vis des performances web d’un service web. Elle permet de transformer des données temporelles (temps de chargement d’une page web) en indicateurs simples du niveau de satisfaction des internautes. Cette norme peut donc être utilisée dans les applications de type Real User Monitoring (RUM), ou plus globalement de supervision du ressenti utilisateur. La norme Apdex qui était utilisée jusqu’à présent est un calcul statistique qui permet d’avoir une vision globale et réaliste des performances techniques des services web. C’est une très bonne approximation mais par construction, l’Apdex ne se base que sur un seul temps cible. La réalité du web est un peu différente, en effet, il y a deux temps qui sont vraiment importants si on veut connaitre avec précision la satisfaction d’un utilisateur.
- Le temps de début d’affichage : instant à partir duquel les éléments commencent à apparaître sur la page.
- Le temps total de chargement de la page.
L’Apdex n’étant pas construit pour supporter deux temps cibles, l’introduction d’une nouvelle norme était nécessaire pour obtenir une estimation encore plus proche de la réalité. Cette nouvelle norme appYdex peut être considérée comme une extension de la norme Apdex. Dans un premier temps on rappellera les principes de base de l’Apdex, puis nous expliquerons en détail la construction technique de l’appYdex.
Apdex : Standard ouvert développé par une alliance d’entreprises américaines définissant une méthode qui rend compte des performances de services web.
RUM : Real End-User Monitoring, solutions de supervision des utilisateurs finaux.
2. Rappel de la norme Apdex
2.1. Calcul
La fonction Apdex permet d’obtenir un indice de satisfaction compris entre 0 et 1 à partir d’un ensemble fini de temps de chargement R et d’un temps cible fixé T. Tout temps est un réel positif ce qui nous donne :
\(\forall t\in R,\ t\geq0\ soit\ R\ \subset\mathbb{R}^+ \\ \)
Définissons maintenant deux sous-ensembles de R. Soit S l’ensemble des temps satisfaisants et U l’ensemble des temps tolérables. La norme Apdex définit ces ensembles comme suit :
\(U=\left\{t\in R,t>T\ et\ t\le4T\right\} \\\)
L’expression de la fonction Apdex est alors la suivante :
\({Apdex}_T\left(R\right)=\ \frac{card\left(S\right)+\frac{card(U)}{2}}{card(R)} \\ \)
On notera par ailleurs que l’ensemble des valeurs prises par la fonction Apdex est discret (le résultat de la fonction est arrondi au dixième). On notera A l’ensemble résultat :
2.2. Interprétation
Enfin, l’Apdex définit 5 zones qui permettent d’évaluer la satisfaction globale :
Numéro de l’intervalle | Indice (Traduction) | Bornes |
1 | Excellent (Excellent) | 0,94 à 1 |
2 | Good (Bon) | 0,85 à 0,93 |
3 | Fair (Acceptable) | 0,70 à 0,84 |
4 | Poor (Mauvais) | 0,50 à 0,69 |
5 | Unacceptable (Inacceptable) | 0 à 0,49 |
3. Exigences pour la norme appYdex
3.1. Principe
Aujourd’hui, la performance des sites web nécessite d’être évaluée d’après deux temps.
- Le temps de début d’affichage: temps à partir duquel la page commence à s’afficher.
- Le temps total de chargement : temps à partir duquel l’affichage est totalement terminé.
La norme Apdex n’est utilisable que pour un temps cible donné. L’objectif de l’appYdex est de combiner deux Apdex avec des temps cibles différents.
3.2. Exigences
Dans ce paragraphe, nous listons les différentes exigences qui devaient être respectées par l’appYdex. On donne pour chacune d’elles une explication ainsi que sa traduction mathématique. On notera f la fonction permettant d’obtenir l’appYdex, x l’Apdex issu du temps de début d’affichage et y l’Apdex issu du temps total.
Exigence 1 : Espace de définition
Notre fonction doit prendre en entrée deux résultats d’Apdex et nous donner un indicateur de satisfaction. On conservera donc le même espace d’arrivée que celui de la fonction Apdex.
\( f\ A\ \times\ A\mapsto\ A\ \ :\left(x,y\right)\mapsto\ f(x,y) \ \)Exigence 2 : Niveaux de satisfaction
Puisque l’appYdex aura le même espace d’arrivée que l’Apdex, il convient de lui appliquer les mêmes niveaux de satisfaction (cf. Tableau 1).
Exigence 3 : Sens de variation
Une amélioration de l’un ou l’autre des Apdex en entrée ne doit jamais provoquer une diminution de l’appYdex. En revanche, on peut accepter que l’appYdex reste constant. La fonction f doit donc être croissante en x et en y.
\(\forall\ y\in\ A,\ x_1>x_2\ \Longrightarrow\ f\left(x_1,y\right)\geq\ f(x_2,y) \ \forall\ x\in\ A,\ y_1>y_2\ \Longrightarrow\ f\left(x,y_1\right)\geq\ f(x,y_2) \\)Exigence 4 : Image des bornes
On posera par convention les valeurs de la fonction aux extrémités de la surface :
\(f\left(0,0\right)=0\ et\ f\left(1,1\right)=1 \\)Exigence 5 : Zones
Le tableau suivant permet d’encadrer la valeur de la fonction pour tous les points de l’espace de définition. Selon le niveau de satisfaction de x et de y on doit obtenir un certain niveau de satisfaction pour f(x,y).
Début? Fin ? | 1 | 2 | 3 | 4 | 5 |
1 | 1 | 1 | 2 | 3 | 4 |
2 | 1 | 2 | 3 | 4 | 4 |
3 | 2 | 2 | 3 | 4 | 5 |
4 | 3 | 3 | 4 | 5 | 5 |
5 | 3 | 4 | 5 | 5 | 5 |
Exigence 6 : Variation maximale
Pour toute variation minimale de x ou de y (0.01 en plus ou en moins), on définit l’écart maximum entre les images de la fonction comme étant de 0.05 au maximum.
\(\forall\ x\ \in\ A,\ \forall\ y\in\ A,\left|\ f\left(x\pm0.01,y\right)-f\left(x,y\right)\right|\le0.05 \ et\ \left|\ f\left(x,y\pm0.01\right)-f\left(x,y\right)\right|\le0.05\)4. Résolution
Pour résoudre ce problème et déterminer la fonction finale appYdex, nous nous sommes appuyés sur l’exigence 5.
4.1 Le modèle
Pour se faire une première idée de notre fonction modèle appYdex, nous pouvons la représenter par les encadrements ci-dessous sur le plan.
Le plan est divisé en sous espaces, nous pouvons encadrer la valeur de f pour tout couple x, y donné. Pour chacune des zones n (cf. tableau 1), on note minn sa valeur minimale et maxn sa valeur maximale. Exemple : Pour la zone 1, min1 = 0,94 et max1 = 1 on définit alors En comme l’ensemble des x,y de A tel que f(x,y) soit inclut dans la zone n :
\(E_n=\ \left{x\ \in A,\ y\in A,\ {min}_n\le f(x,y)\le{max}_n\right}\\)
Note : nous souhaitons changer les bornes des zones dans l’exigence 5. Dans ce cas nous devons veiller à ce que les En forment une partition de l’espace de départ.
\(\bigcup_{n=1}^{5}{En=A^2}\\)
D’après les bornes définies précédemment, on a :
Dans la suite du document on parlera de vecteurs du plan. Pour simplifier, on notera, pour un vecteur v, xv et yv ses coordonnées. On va construire la fonction modèle en se basant sur le principe suivant : plus un point est éloigné de l’origine plus ce point est satisfaisant. La fonction distance est définie comme suit dans le plan des réels:
\(\forall\ u\in\ R^\mathbb{2}\ ,\forall\ v\in\ R^\mathbb{2}\ ||uv||=\ \sqrt{\left(x_u-x_v\right)^2+\left(y_u-y_v\right)^2}\\)On doit maintenant adapter cette fonction pour respecter les zones définies précédemment. On note O l’origine, on a : \( x_O=0\ et\ y_O=0\ \ f(O)=0\)
La fonction modèle est paramétrée par zone (n est l’indice de la zone concernée). Pour chaque zone on définit :
- mn le point de En le plus proche de O
- Mn le point de En le plus éloigné de O
On a donc :
\(\forall\ p\in\ E_n,\ ||PO||\geq\ ||Pm|| \ \forall\ p\in\ E_n,\ ||PO||\le||PM|| \\)
Note : Il y a potentiellement plusieurs m et/ou plusieurs M mais cela ne fait aucune différence puisque ce sont bien les distances et non les coordonnées des points qui interviennent dans le calcul. La fonction suivante nous permet de respecter strictement les encadrements :
\(f_n\left(P\right)=f_n\left(m_n\right)+\frac{\ ||OP||-||Om_n||}{\ ||OM_n||-||Om_n||}\left(f_n\left(M_n\right)-f_n\left(m_n\right)\right) \\)
On a bien :
\(f_n\left(M_n\right)=f_n\left(m_n\right)+\frac{\ ||OMn||-||Om_n||}{\ ||OM_n|| -||Om_n||}\left(f_n\left(M_n\right)-f_n\left(m_n\right)\right)\ f_n\left(M_n\right)=f_n\left(m_n\right)+\left(f_n\left(M_n\right)-f_n\left(m_n\right)\right) \ f_n\left(M_n\right)=f_n\left(M_n\right) \\)
Or, par définition :
\(\forall\ P\in\ A^2,\ \ ||OMn||\geq\ ||OP||\geq||Om_n|| \\)
Ce qui nous donne :
\(\forall\ P\in\ A^2,\ \ f_n\left(M_n\right)\geq\ f_n\left(P\right)\geq\ f_n\left(m_n\right) \\)
On peut simplifier cette expression :
Ce qui nous donne le résultat suivant :
\(f_n\left(P\right)=||OP||a_n+b_n \ avec\ a_n=\ \frac{\ \left(f_n\left(M_n\right)-f_n\left(m_n\right)\right)}{\ ||OM_n||-||Om_n||}\ et\ b_n=\frac{f_n\left(m_n\right) ||OM_n||-||Om_n||f_n\left(M_n\right)}{\ ||OM_n||-||Om_n||}\\)Le modèle peut être représenté dans lespace (x,y,z) avec :
- x, l’Apdex de début d’affichage
- y, l’Apdex de fin d’affichage
- z, f(x,y)
Bien que satisfaisant à la majorité des exigences, ce modèle n’est pas utilisable en l’état. En effet, il présente des variations trop importantes en x et en y aux abords des changements de zones. L’objectif de l’étape suivante sera de trouver un polynôme permettant d’approximer au maximum ce modèle tout en respectant l’exigence 6.
4.2 Optimisation du modèle
La méthode des moindres carrés nous permet d’obtenir un polynôme approximant au mieux le modèle vu précédemment. Ce modèle présentent quelques points d’inflexion, on observe une précision acceptable à partir de l’ordre 19. Ci-dessous la représentation de la surface obtenue dans l’espace (x,y,z) :
Les résultats sont à première vue assez proches du modèle de la figure 2 mais présentent des problèmes notables :
- On distingue des irrégularités aux abords des extrémités de la zone notamment en x=0 et y=0 et x=1 et y=1
- On distingue des zones ou les valeurs de z sont clairement décroissantes en x et en y
Afin de résoudre ces problèmes, nous avons procéder à un lissage pour les zones concernées.
Maintenant que nous avons nos valeurs de z, il est intéressant de les comparer avec celles du modèle. En particulier, nous allons comparer le nombre de points pour chacune des zones.
156 points s’écartent légèrement des zones du modèle ce qui représente 1.5% des points totaux.
Cette approximation finale est donc suffisamment proche du modèle pour être utilisée tel quelle.