navikt / nav-enonicxp-frontend

Frontend for åpne sider på nav.no
MIT License
5 stars 1 forks source link

Finne en metode for å gjøre A/B-testing på forsiden #242

Closed PerOlavM closed 1 year ago

PerOlavM commented 4 years ago

Sjekk først med Enonic / XP community hva som er anbefalt løsning.

PerOlavM commented 4 years ago

Det finnes en app for XP som knytter XP og Content Studio mot VWO: https://market.enonic.com/vendors/enonic/vwo Antar det krever lisensavtale med VWO. De har en free trail mulighet. https://vwo.com/ Ønsker vi å ta i bruk enda ett 3. parts verktøy?

tobiasmcvey commented 4 years ago

Jeg ønsker å flytte trafikken vår via serveren. Det er for å forsikre at alle som skal være med i eksperimentet blir med.

Problemet med tredjepartsløsninger som Visual Website Optimizer, Google Optimize og lignende er at de er javascript-baserte. Dermed er det mange som ikke blir med i eksperimentet om de har en ad-blocker eller javascript slått av. Det hindrer at koden kjører i nettleseren deres, og da får vi færre i en av gruppene som skal se ny eller gammel versjon av forsiden.

Ifølge Reuters i 2018 brukte 24% av nordmenn en ad-blocker. Det er ganske mange som ikke blir trukket med i vår AB-test.

Til sammenligning vil en regel på server-nivå treffe besøkende lenge før javascript. Så vi burde kunne garantere at like mange ser den nye forsiden som den gamle versjonen.

Jeg forstår at vi bruker Apache på serveren så vi kan bare sette en tidsbasert regel for å sende folk til en av sidene vi skal teste. For eksempel slik som foreslått her: https://julien.danjou.info/a-b-testing-with-apache/

Basert på klokkeslett så kan man sende alle som besøker forsiden klokken 10:00 til den gamle versjonen av forsiden, og de som besøker 10:01 til den nye versjonen av forsiden. Det vil si basert på oddetall og partall i klokkeslett. Så setter vi en cookie for å huske hvilken versjon de skal se om de kommer tilbake i løpet av eksperimentet, og setter en timeout på hvor lenge den cookie skal vare.

Vi kan gjøre dette med mod_rewrite. http://httpd.apache.org/docs/current/mod/mod_rewrite.html

tobiasmcvey commented 4 years ago

Vi diskuterte mulige løsninger for AB-testing med Enonic og bruk av Amplitude

Vi kan ha behov for trafikk-routing med Enonic. Isåfall er det for å sende grupper av besøkende til to eller flere ulike sider med hver sin URL og ulikt design. For eksempel visuelle forskjeller og tekstendringer.

En slik komponent trekker ut brukere og sender de til ulike destinasjoner.

@tomanders ser på dette og hvordan Amplitude kan legges til i Enonic

Et alternativ for mindre endringer er å ikke sende brukere til ulike URLer, men heller sende data om hva brukere har sett og hva de har trykket på til Amplitude. Da kan man for eksempel sende hvilken versjon av en tekst eller knapp en bruker har sett og trykket på. Det kan sendes som et parameter til Amplitude.

Eksempel: Vi endrer tekst på lenkene på forsiden

Om brukeren ser ny versjon av forsiden så måler vi en sidevisning slik

event_type: sidevisning,
event_properties: {
ab_test: variantA
}

Om brukeren ser gammel versjon av forsiden

event_type: sidevisning,
event_properties: {
ab_test: kontrollgruppe
}

Samme logikk kan gjelde klikk på knappen, med parameter for hvilken versjon de så.

Da kan man fortsatt gjøre AB-tester basert på enklere "hvis A så gjør dette" logikk.

For eksempel: Alle som besøker forsiden på et klokkeslett med oddetall får en annen tekst på lenker, eller ulik størrelse på boksene for lenkene

Begge løsninger krever at vi setter en cookie som varer like lenge som eksperimentet, slik at man ikke får se 2 ulike versjoner av samme side i løpet av eksperimentet. Ideelt sett så vil alt gå tilbake til normalen etter eksperimentet er over.

dokumentasjon til Amplitude SDK for JavaScript eget repo med eksempler for å legge til Amplitude med eksempler for dekoratøren og andre apper som sykepengesøknad

En viktig fordel er at vi unngår ad-blocking så målingen blir mer nøyaktig

theasteen commented 3 years ago

Skal vi flytte denne til nav-enonicxp-frontend?