Accueil du site > SPIP > Tests A/B

Tests A/B

mardi 27 octobre 2009, par Fil

Les tests A/B (aussi appelés split tests) sont une méthode d’aide à la mise au point d’une interface (par exemple, pour un site Internet) en comparant les usages réels. Voici un plugin SPIP destiné à ces tests.

Le principe des tests A/B est simple : on scinde les visiteurs en deux cohortes (d’où le nom A/B), et on leur donne à voir des pages différentes. On suit alors le parcours des deux cohortes, et on regarde laquelle des deux donne le meilleur résultat par rapport à un objectif donné.

Pour télécharger le plugin, il faut utiliser SVN et lancer la commande
svn co svn://zone.spip.org/spip-zone/_plugins_/ab_testing/

Ce plugin SPIP permet de définir deux dossiers de squelettes AB0/ et AB1/, qui seront affectés respectivement à la cohorte 0 et à la cohorte 1. Il monitore alors le parcours de ces deux cohortes sur une liste d’URLs, et permet de déduire le « taux de conversion » qu’apporte chaque squelette.

Par exemple, supposons que l’on souhaite placer sur la page d’accueil (URL = /) un bouton « Inscrivez-vous », mais qu’on hésite à mettre ce bouton en lien texte, ou en image. On va créer le test A/B de la façon suivante :

1. Dans sommaire.html, ajouter :
#INCLUDE{fond=bouton-inscrivez}

2. Dans AB0/bouton-inscrivez.html, on indique :
<a href="/Inscrivez-vous.html"><img src="images/inscrivez.png" /></a>

3. Dans AB1/bouton-inscrivez.html, on indique :
<a href="/Inscrivez-vous.html">Inscrivez-vous</a>

4. Dans le CFG du plugin A/B testing, indiquer qu’on veut monitorer les deux URLs :

Désormais la cohorte 0 voit l’image (squelettes AB0/), et la cohorte 1 voit le lien texte (squelettes AB1/).

Ensuite, on attend... jusqu’à observer au minimum quelques centaines de visites.

Après quelque temps, la page exec=ab_testing affiche alors :

Cohorte 0

URI hits %
/ 1489 100%
/Inscrivez-vous.html 32 2.1%

Cohorte 1

URI hits %
/ 1067 100%
/Inscrivez-vous.html 45 4.2%

Si l’on regarde le total, on voit que sur 1489+1067=2556 visiteurs de la page d’accueil, 45+32=77 sont allés sur la page d’inscription. Soit un ratio de 3%. Mais ceux de la cohorte 0 ont un ratio de 32/1489 = 2,1%, tandis que ceux de la cohorte 1 ont un ratio de 45/1067 = 4,2%.

On en déduit donc que le lien texte (présenté à la cohorte 1) est deux fois plus affordant au clic que l’image (présentée à la cohorte 0). On peut alors décider de mettre le lien texte pour tous... ou encore d’embaucher un graphiste pour améliorer l’image.

Spécificités du plugin

Ce plugin ne pose pas de cookie au visiteur : cela permet de faire notre test de manière totalement non intrusive. Les cohortes sont séparées par leur IP, avec une méthode d’affectation (très basique) de la cohorte en fonction de l’IP du visiteur, qui produit des cohortes de taille équivalente.

On peut faire du A/B/Z testing en augmentant le nombre de cohortes, fixé par la configuration (par défaut, n=2).

Le cache est multiplié par le nombre de cohortes.

On peut tester une variante d’un squelette présent dans un plugin, en plaçant une seule variante dans AB1/ (AB0/ restant vide).

Cependant pour des raisons techniques, il est impossible de tester ainsi une variante d’un squelette se trouvant déjà dans le dossier squelettes/ : pour le tester, il faut le recopier dans AB0/ et AB1/, et le supprimer temporairement de squelettes/. Ne pas oublier de le remettre avant de désactiver le plugin.

En cas de doute, vérifier avec le débugueur de SPIP si les squelettes testés sont bien pris dans les répertoires ABx/

Limitations et extensions possibles

Actuellement le découpage des visiteurs se fait en deux cohortes de tailles à peu près égales. Si l’on souhaite mener un test sur seulement 10% des visiteurs, il faut adapter un peu la ligne :
_ $ab = intval($ab)%intval($n);

Dans notre exemple, le système ne vérifie pas que le visiteur est passé par la page d’accueil avant d’aller sur la page Inscrivez-vous.html ; la page d’accueil sert en fait plus de variable de contrôle — pour savoir si les numéros IP sont bien répartis dans les cohortes — que de base pour le CTR 100%. (Il est possible de changer cela, en posant un cookie au visiteur, au risque toutefois d’alourdir le processus.)

8 Messages de forum

  • Tests A/B Le 27 octobre 2009 à 10:19 , par Nicolas Hoizey

    Génial ce plugin !!!

    Par contre, pas compris ta logique, c’est bien l’image qui donne le meilleur résultat, avec 4.2%, non ???

    • Tests A/B Le 27 octobre 2009 à 10:21 , par Fil

      Ah oui je me suis mélangé les pinceaux, je corrige.

  • Tests A/B Le 27 octobre 2009 à 11:22 , par Beurt

    Tout simplement génial !

    Il faut que je teste ça !

    Juste une question, eut on définir des paquets d’URL à surveiller avec un joker ? ex : /rubrique/*

    • Tests A/B Le 27 octobre 2009 à 11:34 , par Fil

      En l’état actuel du plugin (v. 0.1), non ; mais ce serait relativement facile à ajouter, si le besoin existe.

  • Tests A/B Le 27 octobre 2009 à 11:48 , par Beurt

    Je vais déjà essayer de tester comme ça dans la semaine !

    Merci pour ce boulot génial ! Si en plus Spip propose des outils d’inspection/protyping, etc... Génial !

  • Tests A/B Le 27 octobre 2009 à 22:14 , par JLuc

    Super. ça pourrait faire buzzer les oreilles de SPIP sur les forum SEO...

  • Tests A/B Le 29 octobre 2009 à 09:05 , par Loiseau2nuit

    Ah yes ! Ca c’est de la bombe ! :D

    Si en plus ca peut éviter de remettre aux bons soins de Google l’établissement de telles stats, je prends et plutôt 2 fois qu’une.

    Cela dit, après avoir "formé" quelqu’un à la gestion de contenu récement, je me dit qu’une adaptation de ce plugin pour l’espace privée ne serait pas vaine et pourrait donner une bonne base de réflexion pour l’élaboration de la meilleure interface de gestion possible, dans l’optique d’accessibilité qui semble animer SPIP depuis plusieurs versions maintenant.

    A creuser tout ça :-)

  • Tests A/B Le 24 août 2011 à 21:55 , par JLuc