Swab er en enkel WSGI A / B-testing verktøy.
Bruk:
& Nbsp; en. Definere et eksperiment:
& Nbsp; fra pinnen import Swab
& Nbsp; s = Swab ('/ tmp / .swab-test-data')
& Nbsp; s.addexperiment ('button-size ", [' standard ',' større '],' ordre fullført")
& Nbsp; Her har vi et eksperiment kalt "button-tekst 'for å teste to størrelser av
& Nbsp; knapp på et skjema.
& Nbsp; De to varianter av experment kalles "liten" og "stor". Den første
& Nbsp; oppført er alltid tatt som kontroll variant, og resultatene vil være
& Nbsp; presentert i forhold til hvor mye bedre eller verre de andre variantene har
& Nbsp; utført sammenlignet med kontrollgruppen
& Nbsp; Målet knyttet til testen kalles 'ordre fullført ".
& Nbsp; 2. Ta en WSGI søknad:
& Nbsp; fra pinnen import record_goal, show_variant
& Nbsp; def get_button_style (miljø):
& Nbsp; hvis show_variant ('button-size ", miljø) ==' liten ':
& Nbsp; return 'font-size: 100%'
& Nbsp; annet:
& Nbsp; return 'font-size: 150%'
& Nbsp; def MyApp (miljø, start_response):
& Nbsp; hvis miljø ['REQUEST_METHOD'] == 'GET':
& Nbsp; start_response ('200 OK', [])
& Nbsp; tilbake ['' '
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp; '' '% (get_button_style (miljø),)
& Nbsp;]
& Nbsp; hvis miljø ['REQUEST_METHOD'] == 'POST':
& Nbsp; swab.record_goal ('ordre fullført ", miljø)
& Nbsp; 3. Pakk den i pinnen mellomvare:
& Nbsp; app = s.middleware (MyApp)
4. La den kjøre, og etter en stund bla til http: //
Testing
For å teste dine konkurrerende sider, start Swab i feilsøkingsmodus:
pinne = Swab ('/ tmp / .swab-test-data', debug = True)
Deretter legge '? Pinne.
Deaktivere debug modus i produksjonen for å unngå folk rotet med tallene dine.
Prinsipiell oppbygging
Hver besøkende er tildelt en identitet som vedvarte ved hjelp av en cookie. Identiteten er en base64-kodet tilfeldig generert bytesekvens. Denne identiteten brukes som et frø for en RNG, som brukes for å slå besøkende til testgrupper.
Hver gang en test er vist (utløst av show_variant funksjon), er en ledning inn i en fil på
Hver gang et mål blir registrert (utløst av record_goal funksjon), er en linje inngått en fil på
Hver logglinjen har formatet: n.
Ingen fillåsing brukes: det antas at dette vil bli kjørt på et system hvor hver linje er mindre enn fs block, slik at vi kan unngå dette overhead. Linjene kan bli sammenflettet, men det bør ikke være noen risiko for korrupsjon, selv med flere samtidige skriver. Se http://www.perlmonks.org/?node_id=486488 for en drøfting av saken.
Statistisk analyse
Den videre lesning delen inneholder lenker til de ulike artiklene som hjalp meg implementere algoritmer og statistiske formler som brukes i bomullspinne. Men jeg ikke har en bakgrunn i matematikk eller statistikk, og jeg ønsker velkommen bidrag eller rettelser fra alle som har en dypere forståelse av disse testene
Hva er nytt i denne utgaven.:
- Lagt til en javascript fyrtårn for å spille inn tester (hjelper utelukke roboter)
- Bedre utelukkelse av roboter på serversiden også
- Record rettssaken app vil ikke heve en feil hvis eksperimentet navn finnes ikke
- Fjernet debug flagg, er evnen til å tvinge en variant nå alltid til stede
- Strip HTTP caching overskrifter om et eksperiment har vært påberopt under forespørselen
- Forbedret nøyaktighet av konverteringssporing
- Cookie bane kan spesifiseres i mellomvare konfigurasjon
Hva er nytt i versjon 0.1.2:
- Mindre feilrettinger
Hva er nytt i versjon 0.1.1:
- Bugfix for ZeroDivisionErrors når ingen data er samlet
Krav :
- Python
Kommentarer ikke funnet