Ga naar inhoud

5.2 A/B-testen

Een A/B-test die te vroeg wordt gestopt of te weinig verkeer krijgt, is gevaarlijker dan geen test: hij geeft een vals gevoel van zekerheid en je rolt een “winnaar” uit die in werkelijkheid ruis was. Dit hoofdstuk leert je testen die je echt iets vertellen — met de juiste hypothese, steekproefgrootte en testduur.

Na dit hoofdstuk kun je:

  • Je kunt een toetsbare hypothese formuleren met wijziging, verwachting en onderbouwing, vertrekkend vanuit een concreet funnel-lek.
  • Je weet wat statistische significantie (95%), power (80%) en MDE betekenen en kunt vooraf je steekproefgrootte en testduur bepalen.
  • Je herkent peeking als de grootste valkuil en weet waarom je pas na de vooraf bepaalde steekproef én volledige weken naar de uitslag kijkt.
  • Je kunt beoordelen of een test haalbaar is bij jouw verkeer en wat je doet als dat niet zo is.
  • Je weet welke elementen je wél (hoge impact) en niet los (te klein) test en houdt het bij één wijziging en één primaire metric.

A/B-test (split test). Je toont variant A (controle, het origineel) aan de helft van het verkeer en variant B (de wijziging) aan de andere helft, willekeurig verdeeld. Je meet welke variant beter converteert. Omdat het verkeer willekeurig verdeeld is, is het enige systematische verschil tussen de groepen jouw wijziging.

Hypothese. Een toetsbare voorspelling, niet een onderbuikgevoel. Vorm: “Als ik [wijziging] doorvoer, dan stijgt [meetbare metric] met [verwachting], omdat [onderbouwing].”

Statistische significantie. De kans dat het gemeten verschil géén toeval is. Standaard streef je naar 95% significantie (p-waarde kleiner dan 0,05): bij die drempel is er 5% kans dat je een verschil ziet dat er in werkelijkheid niet is (een vals positief).

Statistisch vermogen (power). De kans dat je een écht bestaand verschil ook daadwerkelijk detecteert. Standaard 80%. Te weinig power betekent dat een echte verbetering onzichtbaar blijft.

Minimaal detecteerbaar effect (MDE). De kleinste verbetering die je test betrouwbaar kan oppikken. Hoe kleiner het effect dat je wilt kunnen zien, hoe meer verkeer je nodig hebt — de relatie is kwadratisch: een MDE die half zo klein is, vraagt ongeveer 4 keer zoveel verkeer.

Steekproefgrootte (sample size). Het aantal bezoekers per variant dat je nodig hebt om met 95% significantie en 80% power je MDE te detecteren. Dit bereken je vooraf, niet achteraf.

  1. Begin met een lek uit je funnel-diagnose. Test nooit willekeurig. Je vertrekt vanuit het grootste herstelbare lek uit 5.1.

  2. Formuleer één scherpe hypothese. Gebruik het sjabloon. Eén wijziging, één verwachte uitkomst, één onderbouwing.

  3. Bepaal je primaire metric. Meestal de aankoopconversie of de overgangsratio van de geraakte stap. Eén primaire metric — niet vijf, want dan vind je altijd wel ergens “iets”.

  4. Bereken vooraf je steekproefgrootte. Gebruik je huidige conversie (baseline), je gewenste MDE, 95% significantie en 80% power. Een gratis sample-size-calculator (Evan Miller, AB Tasty, VWO) doet het rekenwerk.

  5. Bereken de benodigde testduur. Steekproefgrootte per variant × 2, gedeeld door je dagelijkse verkeer. Rond altijd af op volledige weken.

  6. Zet de test live met willekeurige 50/50-verdeling. Laat hem draaien tot je vooraf bepaalde steekproef én minimaal 1-2 volledige weken zijn behaald — wat later komt.

  7. Sluit de test af en beoordeel pas dan. Significant en boven je MDE? Roll uit. Niet significant? Geen verschil aangetoond — behoud de controle en leer ervan.

  8. Documenteer het resultaat. Ook (juist) de tests die niets opleverden. Bouw een test-logboek op; dat voorkomt dat je hetzelfde tweemaal test.

Prioriteer op impact × verkeer. Test grote, zichtbare elementen die veel bezoekers raken; verspil geen verkeer aan microdetails.

Wel testen (hoge impact)Niet los testen (te klein)
Productpagina-indeling en volgorde van elementenKleurtint van een knop
Aanwezigheid en plaatsing van reviewsLettergrootte van bijschrift
Prijspresentatie en kortingsweergaveKomma in een microcopy-zin
Gastcheckout vs. account verplichtPictogramvariaties
USP-balk / verzendbelofte boven de vouwFooterlinks
Productfoto’s en video vs. alleen fotoExacte witruimte tussen blokken

Je huidige checkout-conversie (baseline) is 47%. Je wilt een verbetering van minimaal 5% relatief kunnen detecteren — dat is een stijging naar 49,35%. Significantie 95%, power 80%.

Een sample-size-calculator geeft dan ongeveer 6.700 bezoekers per variant, dus 13.400 in totaal die de checkout starten.

Stel: er starten 660 bezoekers per maand de checkout (uit het voorbeeld in 5.1). Dan duurt deze test 13.400 / 660 ≈ 20 maanden. Veel te lang — dit lek is via A/B niet te testen bij dit verkeer. Conclusie: kies kwalitatieve validatie (heatmaps, gebruikerstests) of test hoger in de funnel waar meer verkeer langskomt.

Tweede voorbeeld, hoger in de funnel. Add-to-cart-ratio is 10%, je wilt 15% relatieve verbetering (naar 11,5%) kunnen zien. Dat vraagt ongeveer 9.000 productpaginabezoekers per variant. Bij 11.000 productpaginaweergaven per maand × 2 varianten = 22.000 nodig in totaal → 18.000 / 11.000 ≈ ruim 1,5 maand. Haalbaar.

Waarom mag je niet stoppen zodra de test significant lijkt?

Omdat significantie pas iets betekent bij de stéékproef die je vooraf hebt vastgelegd — en niet op elk willekeurig tussenmoment. De 95%-drempel garandeert dat je maar 5% kans hebt op een vals positief als je één keer kijkt, aan het einde. Maar elke keer dat je tussentijds gluurt, neem je opnieuw die gok.

De conversiecijfers schommelen van dag tot dag rond hun werkelijke waarde. Vroeg in een test zijn die schommelingen groot; puur door toeval schiet het verschil geregeld even boven de 95%-lijn — om daarna weer te verdampen. Stop je precies op zo’n piek, dan rol je ruis uit als “winnaar”.

Dit heet peeking, en het effect is dramatisch: wie continu meekijkt en stopt bij de eerste significante uitslag, jaagt de vals-positief-kans op van 5% naar meer dan 30%. Je denkt op 95% zekerheid te beslissen, maar zit in werkelijkheid dichter bij een muntworp.

De remedie is puur discipline, geen wiskunde: bereken vooraf je steekproefgrootte én testduur (minimaal 1–2 volledige weken), en kijk pas naar de uitslag als beide behaald zijn. Wil je wél tussentijds kunnen stoppen, dan heb je een andere methode nodig (sequential testing / Bayesiaanse tools) die daar expliciet voor corrigeert — niet het gewone 95%-cijfer.

Conversieratio per variant:

CVR = conversies / bezoekers × 100%

Relatieve uplift:

Uplift = (CVR variant B − CVR variant A) / CVR variant A × 100%

Voorbeeld: A = 2,0%, B = 2,3% → (0,023 − 0,020) / 0,020 = 15% relatieve uplift.

Vereenvoudigde steekproefgrootte-indicatie (per variant, bij 95% / 80%):

Hoe lager je baseline-conversie en hoe kleiner het effect dat je wilt zien, hoe meer verkeer. Gebruik altijd een calculator; uit het hoofd reken je dit niet betrouwbaar.

Baseline CVRMDE (relatief)Bezoekers per variant (indicatie)
2%25%± 9.300
2%10%± 56.000
5%25%± 3.500
10%15%± 9.000
47%5%± 6.700
TestparameterSlechtGoed
Significantieniveauonder 90%95% of hoger
Poweronbekend / onder 70%80% of hoger
Conversies per variantminder dan 100meer dan 300
Testduurminder dan 1 week2 tot 4 volledige weken
Aantal varianten tegelijkmeer dan 32 (A/B), hooguit 3 (A/B/C)
ToolFunctieWanneer kiezen
Shopify-native (Shopify Plus: Functions/Apps)Eenvoudige split-tests binnen ShopifyOp Shopify zonder externe tool; beperkt op standaard-plan
IntelligemsA/B-testen van prijs, aanbod en content voor ShopifyAls je prijs- en aanboptests wilt draaien
VWOVolwaardige A/B- en multivariate testing + sample-calculatorBij voldoende verkeer en serieus testprogramma
Convert / AB TastyVisuele editor, server-side testingPrivacyvriendelijk alternatief, EU-hosting beschikbaar
Google OptimizeVoorheen gratis testtool van GoogleNiet meer beschikbaar (gestopt 2023) — gebruik niet
Evan Miller sample-size calculatorSteekproefgrootte vooraf berekenenAltijd, vóór elke test — gratis
  • Te vroeg stoppen (peeking). Je ziet na 3 dagen +20% en stopt juichend. Drie dagen later is het verschil verdampt. Wacht je vooraf bepaalde steekproef af.
  • Te veel varianten tegelijk. Vier varianten betekent dat elke variant maar een kwart van het verkeer krijgt — je hebt vier keer zo lang nodig én meer kans op een vals positief.
  • Meerdere wijzigingen in één variant. Verander je knopkleur én tekst én plaatsing, dan weet je bij winst niet wát werkte. Eén wijziging per test (tenzij je bewust een nieuw concept tegen het oude zet).
  • Te veel metrics bekijken. Kijk je naar 10 metrics, dan is er statistisch altijd wel één “significant” door toeval. Eén primaire metric, vooraf vastgelegd.
  • Niet op volledige weken testen. Dinsdag koopt anders dan zondag. Een test van 10 dagen weegt twee dinsdagen en één zondag scheef. Test altijd in blokken van 7 dagen.
  • Lokaal optimum najagen. Eindeloos knopjes finetunen levert 1% hier en 1% daar. Een radicale herontwerptest van de hele productpagina kan 20% opleveren. Durf groter te testen.
  • Seizoens- of campagne-effecten negeren. Een test tijdens Black Friday of een grote betaalde campagne meet een uitzonderlijke periode, niet je normaal.
Hypothese-formulier
  • Probleem (uit data): “In stap [stap] haakt [percentage] af; dit kost circa [bedrag] per maand.”
  • Hypothese: “Als ik [concrete wijziging] doorvoer, dan stijgt [primaire metric] met circa [verwachting], omdat [onderbouwing op basis van data/heatmap/gebruikersfeedback].”
  • Primaire metric: [bijv. checkout-voltooiingsratio]
  • Baseline-waarde: [huidig percentage]
  • Gewenst minimaal effect (MDE): [relatief percentage]
  • Benodigde steekproef per variant: [getal uit calculator]
  • Geschatte testduur: [aantal volledige weken]
  • Beslisregel: “Uitrollen als B significant (95%) beter is dan A én boven de MDE; anders A behouden.”

Case: is deze test überhaupt haalbaar?

Je wilt de productpagina testen. Je add-to-cart-ratio is nu 8% en je wilt een relatieve verbetering van 20% kunnen detecteren (naar 9,6%). Een sample-size-calculator geeft hiervoor ongeveer 4.300 bezoekers per variant nodig (95% significantie, 80% power). Je productpagina’s krijgen samen 6.000 weergaven per maand.

Bepaal: (1) hoeveel bezoekers je in totaal nodig hebt, (2) hoe lang de test duurt, (3) is dit haalbaar — en zo niet, wat doe je?

Toon uitwerking

1 — Totaal nodig: 4.300 per variant × 2 varianten = 8.600 bezoekers.

2 — Testduur: 8.600 / 6.000 per maand ≈ 1,4 maand (rond af op volledige weken → 6 weken).

3 — Haalbaar? Net aan de lange kant, maar werkbaar — mits er in die periode geen Black Friday of grote campagne loopt die het beeld vertekent. Belangrijker: controleer of je per variant je ~200–350 conversies haalt. Bij 8% op 4.300 bezoekers = ~344 conversies per variant. Net genoeg.

Als het niét haalbaar was (bv. de calculator vroeg 56.000 per variant omdat je een klein effect van 10% wilde zien): dan test je óf een grover, groter effect (een radicaler herontwerp dat meer dan 20% kan opleveren), óf je gaat hoger in de funnel waar meer verkeer komt, óf je valideert kwalitatief met heatmaps en gebruikerstests in plaats van A/B. Een test die 20 maanden zou duren, is geen test — dat is wachten.

Snelle kennischeck — A/B-testen

  1. Wat betekent '95% statistische significantie'?

  2. Je ziet na 3 dagen +20% en het lijkt significant. Wat doe je?

  3. Waarom test je altijd in blokken van volledige weken?

  4. Je wilt een 2× zo klein effect kunnen detecteren. Wat gebeurt er met het benodigde verkeer?

Samenvatting

  • Vertrek vanuit een concreet funnel-lek met één scherpe hypothese, één wijziging en één vooraf vastgelegde primaire metric.
  • Bereken vooraf je steekproefgrootte (95% significantie, 80% power) en testduur; de relatie tussen MDE en verkeer is kwadratisch — een half zo klein effect vraagt ~4× zoveel verkeer.
  • Peeking is de grootste valkuil: tussentijds stoppen jaagt je vals-positief-kans van 5% naar meer dan 30%. Wacht je steekproef én minimaal 1 à 2 volledige weken af.
  • Een test is praktisch haalbaar bij ongeveer 200 à 350 conversies per variant binnen 4 weken; lukt dat niet, test dan hoger in de funnel of valideer kwalitatief.
  • Test grote, zichtbare elementen, niet microdetails als knopkleur, en documenteer ook de tests die niets opleverden.