AB Test

Door Willem Liu, 13 jaar geleden, 10.347x bekeken

Ik ben bezig met een eigen project (https://www.pozzy.nl).

En van daaruit kreeg ik de behoefte om verschillende versies van dezelfde website te serveren om de (business) performance van de verschillen te kunnen meten.

Er bestaan al een aantal libraries die A/B testing implementeren en ik raad het iedereen aan om die libraries te onderzoeken en eventueel te gebruiken als het voldoet aan jou specifieke wensen.

Deze library heb ik zelf geschreven. Voor mijzelf was het meer een stukje zelfstudie geweest om een A/B testing functionaliteit te bouwen.

Een aantal wensen waren voor mij persoonlijk belangrijk:
- Moet compact zijn
- Ongelimiteerde aantal test varianten kunnen uitserveren
- Makkelijk website variatie toe voegen
- Gekozen A/B test moet persistent kunnen zijn
- A/B testing lib moet niks afweten van de rest van de webapplicatie en dus niet intrusive zijn
- De verschillende test varianten van de website moeten onafhankelijk van elkaar kunnen bestaan, maar mag ook elkaars code includen indien nodig/nuttig
- Kunnen injecteren van zelf geschreven A/B select functie (moet uiteindelijk meer kunnen dan 50/50 serveren)

De ini-file AB.ini die door de AB.php wordt gebruikt ziet er als volgt uit en verwacht dat deze op dezelfde locatie staat:
[Sites]
0=default
1=UA-XXXXXXXX-X

Mijn project en dit voorbeeld van de A/B testing lib verwacht de volgende directory structuur.

/<website root>/includes/lib/AB.php
/<website root>/includes/templates/$ab/<index van jou website>.php");

Bijgevoegde scripts zijn AB.php en index.php.

De attachement index.php staat in <website root> en is waar de website zal "beginnen". index.php include de AB.php.
AB.php bevat de singleton-class genaamd AB.
index.php zal na de include de volgende functie aanroepen om de geselecteerde test te verkrijgen:

$ab = AB::Instance()->getAb();

$ab is een String welke gebruikt wordt om een variabel deel in een pad naar de website te vullen.

include_once("includes/templates/$ab/index.php");

Uitgaande van voorbeeld ini-file kan je verschillende versies van je website hebben op de volgende locaties:

default:
/<website root>/includes/templates/default/index.php

UA-XXXXXXXX-X:
/<website root>/includes/templates/UA-XXXXXXXX-X/index.php

Door meer entries toe te voegen aan de ini-file voeg je een extra variant toe.

De functie setAbSelectFunction in de class AB kan je gebruiken om een eigen A/B select functie te gebruiken in plaats van de default die ik heb meegeleverd.

Het nut hiervan is dat je bijvoorbeeld verschillende websites kan uitserveren aan de hand van taal, geo-locatie, device type etc. De mogelijkheden reiken zover als je eigen fantasie.

Gesponsorde koppelingen

PHP script bestanden

  1. index.php
  2. AB.php

 

Er zijn geen reacties op 'Ab test'

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. index.php
  2. AB.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.