Swab är en enkel WSGI A / B testverktyg.
Användning:
& Nbsp; 1. Definiera ett experiment:
& Nbsp; från svabb import svabb
& Nbsp; s = Swab ('/ tmp / .swab-testet-uppgifter ")
& Nbsp; s.addexperiment ('button-storlek ", [' default ',' större ']," ordning-färdig')
& Nbsp; Här har vi ett experiment som kallas 'knapp-text ", för att testa två storlekar
& Nbsp; knappen på ett formulär.
& Nbsp; De två varianterna av experment kallas "små" och "stora". Den första
& Nbsp; listade alltid tas som kontrollvarianten, och resultaten kommer att vara
& Nbsp; presenteras i termer av hur mycket bättre eller sämre de andra varianterna har
& Nbsp; utförs jämfört med kontroll
& Nbsp; Målet samband med test kallas "ordning-avslutade".
& Nbsp; 2. Ta en WSGI ansökan:
& Nbsp; från svabb import record_goal, show_variant
& Nbsp; def get_button_style (environ):
& Nbsp; om show_variant ('button-storlek ", miljö) ==" små ":
& Nbsp; return 'font-size: 100% "
& Nbsp; annars:
& Nbsp; return 'font-size: 150% "
& Nbsp; def mittpgm (environ, start_response):
& Nbsp; om miljö ['REQUEST_METHOD'] == 'GET':
& Nbsp; start_response ("200 OK", [])
& Nbsp; återvända ['' '
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp; '' '% (get_button_style (environ),)
& Nbsp;]
& Nbsp; om miljö ['REQUEST_METHOD'] == "POST":
& Nbsp; swab.record_goal ("ordning-avslutade", miljö)
& Nbsp; 3. Linda in det i pinnen middleware:
& Nbsp; appen = s.middleware (mittpgm)
4. Låt den gå, och efter ett tag gå till http: //
Test
För att testa dina konkurrerande sidor, starta Swab i felsökningsläge:
svabb = Swab ('/ tmp / .swab-testet-uppgifter ", debug = sant)
Sedan lägga '? Pinne.
Inaktivera debugläge i produktionen för att undvika att människor messing med dina siffror.
Basic design
Varje besökare delas en identitet som kvarstod med hjälp av en kaka. Identiteten är en base64 kodad slumpmässigt genererat bytesekvens. Denna identitet används som ett frö för en RNG, som används för att växla besökare till testgrupper.
Varje gång ett test visas (utlöses av show_variant funktionen), är en linje in i en fil vid
Varje gång ett mål registreras (utlöses av record_goal funktionen), är en linje in i en fil vid
Varje loggrad har formatet: n.
Ingen fil låsning används: man antar att detta kommer att köras på ett system där varje rad är mindre än fs block, tillåter oss att undvika denna overhead. Linjerna kan bli interfolie, men det bör inte finnas någon risk för korruption, även med flera samtidiga skrivningar. Se http://www.perlmonks.org/?node_id=486488 för en diskussion om frågan.
Statistisk analys
Avsnittet vidare läsning innehåller länkar till de olika artiklarna som hjälpte mig genomföra algoritmer och statistiska formler som används i svabb. Men jag har inte en bakgrund inom matematik eller statistik, och jag skulle välkomna bidrag eller korrigeringar från någon med en djupare förståelse för dessa tester
Vad är nytt i den här versionen.:
- Lade till en javascript ledstjärna för att spela in tester (hjälper utesluter bots)
- Bättre uteslutning av robotar på serversidan också
- Spela in prov appen kommer inte att höja ett fel om experimentet namnet inte finns
- Bort debug flagga, är nu alltid närvarande möjligheten att tvinga en variant
- Strip HTTP caching rubriker om ett experiment har åberopats under förfrågan
- Förbättrad noggrannhet omvandlingsspårning
- Cookie sökväg kan anges i middle konfiguration
Vad är nytt i version 0.1.2:
- Mindre buggfixar
Vad är nytt i version 0.1.1:
- Buggfix för ZeroDivisionErrors när inga data har samlats in
Krav :
- Python
Kommentarer hittades inte