Przejdź do treści

12 błędów w testach A/B, przez które wyniki są fałszywe

Test A/B daje fałszywy wynik częściej, niż się wydaje – zwykle nie przez złą statystykę, ale przez błędy w projekcie, wdrożeniu i interpretacji. Opisujemy 12 najczęstszych, ich objawy i sposób wykrycia.

Redakcja Pixel Insider9 min czytaniaPoziom: zaawansowany

  • statystyka
  • GA4
  • BigQuery
  • SQL
Spis treści
  1. Błędy w projekcie testu
  2. Błędy w losowaniu i przydziale wariantów
  3. Błędy techniczne i pomiarowe
  4. Błędy związane z czasem trwania testu
  5. Błędy w interpretacji wyników
  6. Jak wyłapać błędy w testach A/B: objawy i lista kontrolna
  7. Najczęściej zadawane pytania

Błędy w testach A/B to decyzje w projekcie, wdrożeniu lub analizie, przez które wynik nie odzwierciedla rzeczywistej różnicy między wariantami. Najczęstsze z nich to kończenie testu przy pierwszym istotnym wyniku, zbyt mała próba, niezrównoważony podział ruchu (SRM), zła jednostka losowania, techniczne różnice między wariantami, takie jak migotanie strony, oraz szukanie zwycięzcy w segmentach po fakcie. Większość da się wykryć prostą kontrolą przed startem testu i przed ogłoszeniem wyniku.

Najważniejsze w skrócie

  • Codzienne sprawdzanie wyników i kończenie testu przy pierwszym istotnym wyniku podnosi ryzyko fałszywego zwycięzcy znacznie powyżej założonych 5%.
  • Niezrównoważony podział ruchu, np. 50,6/49,4 przy 100 000 użytkowników i założonym podziale 50/50, oznacza błąd wdrożenia, a wynik takiego testu jest niewiarygodny.
  • Losowanie musi odbywać się na poziomie użytkownika, a nie sesji czy odsłony, jeśli mierzysz zakupy lub inne decyzje podejmowane podczas kilku wizyt.
  • Różnice techniczne między wariantami – migotanie, wolniejsze ładowanie, brak śledzenia – potrafią dać efekt większy niż sama testowana zmiana.
  • Szukanie zwycięzcy w segmentach po zakończeniu testu i ocena wielu metryk bez korekty prowadzą do wniosków, które nie powtarzają się po wdrożeniu.

Błędy w projekcie testu

Błędy projektowe pojawiają się, zanim test wystartuje, i żadna analiza ich później nie naprawi. Dotyczą hipotezy, metryki i wielkości próby.

1. Brak hipotezy i jednej metryki głównej

Test bez spisanej hipotezy („zmiana X zwiększy Y, bo Z”) i bez jednej metryki głównej kończy się wyborem tej metryki, która akurat wyszła najlepiej. Przed startem zapisz metrykę główną (np. odsetek użytkowników z zakupem), 2–3 metryki ochronne (marża, zwroty, przychód na użytkownika) i regułę decyzji. Bez tego każdy wynik da się zinterpretować jako sukces.

2. Za mała próba i zbyt mała moc

Test, który przy Twoim ruchu może wykryć tylko poprawę o 40%, prawie zawsze skończy się wynikiem nieistotnym albo przypadkowym zwycięzcą. Przy konwersji 2% wykrycie poprawy o 10% wymaga ok. 80 700 użytkowników na wariant przy istotności 5% i mocy 80%. Policz próbę przed startem – wzór, tabelę i kod znajdziesz w artykule o wielkości próby i istotności statystycznej.

3. Zbyt wiele wariantów i metryk bez korekty

Przy poziomie istotności 5% i dwudziestu porównaniach (np. 4 warianty × 5 metryk) spodziewasz się średnio jednego „istotnego” wyniku, nawet jeśli żadna zmiana nie działa. Ogranicz liczbę wariantów, ustal jedną metrykę główną i stosuj korektę na wielokrotne porównania, np. Bonferroniego, która dzieli poziom α przez liczbę porównań.

Błędy w losowaniu i przydziale wariantów

Losowanie ma zapewnić, że grupy różnią się tylko testowaną zmianą. Jeśli przydział jest wadliwy, porównujesz różne populacje, a nie warianty.

4. Losowanie na poziomie sesji zamiast użytkownika

Jeśli ta sama osoba w poniedziałek widzi wariant A, a w środę B, nie da się ustalić, który z nich doprowadził do zakupu. Losuj na poziomie użytkownika i utrzymuj przydział przez cały test. Analizę też prowadź per użytkownik, a nie per sesję – inaczej obserwacje nie są niezależne, a przedziały ufności wychodzą zbyt wąskie.

5. Niezrównoważony podział ruchu (SRM)

SRM (sample ratio mismatch) to sytuacja, w której proporcja użytkowników w grupach istotnie odbiega od założonej. Przyczyny to m.in. przekierowanie w jednym wariancie, które gubi część osób, tag uruchamiany tylko w jednej wersji, pamięć podręczna strony albo boty. Sprawdzisz to testem chi-kwadrat:

from statistics import NormalDist

def test_srm(n_a, n_b, udzial_a=0.5):
    n = n_a + n_b
    oczek_a, oczek_b = n * udzial_a, n * (1 - udzial_a)
    chi2 = (n_a - oczek_a) ** 2 / oczek_a + (n_b - oczek_b) ** 2 / oczek_b
    p = 2 * (1 - NormalDist().cdf(chi2 ** 0.5))   # chi-kwadrat z 1 stopniem swobody
    return chi2, p

print(test_srm(50600, 49400))   # chi2 = 14,4, p ≈ 0,00015

Liczbę użytkowników w wariantach pobierzesz z eksportu GA4:

SELECT
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'variant_id') AS wariant,
  COUNT(DISTINCT user_pseudo_id) AS uzytkownicy
FROM `twoj-projekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261028'
  AND event_name = 'experiment_impression'
  AND (SELECT value.string_value FROM UNNEST(event_params)
       WHERE key = 'experiment_id') = 'karta_produktu_cta_2026_10'
GROUP BY wariant;

W praktyce alarm ustawia się przy p < 0,001, żeby ograniczyć fałszywe alarmy. Test z SRM nie nadaje się do oceny – znajdź przyczynę, popraw wdrożenie i zacznij od nowa. Jak przekazywać warianty do GA4, opisujemy w tekście o testach A/B w GA4.

6. Zanieczyszczenie grup: wiele urządzeń i równoległe testy

Użytkownik, który przegląda sklep na telefonie, a kupuje na komputerze, może trafić do obu wariantów. Przy zalogowanych klientach przydzielaj wariant według identyfikatora konta, a w analizie pomijaj osoby, które widziały obie wersje. Drugi problem to równoległe testy na tych samych elementach – zmiana w koszyku i zmiana w karcie produktu mogą się wzajemnie wzmacniać lub znosić. Prowadź rejestr testów i nie uruchamiaj nakładających się eksperymentów bez planu ich rozdzielenia.

Błędy techniczne i pomiarowe

Te błędy sprawiają, że warianty różnią się czymś więcej niż testowaną zmianą albo że pomiar w jednej grupie działa gorzej niż w drugiej.

7. Migotanie i różnice w szybkości ładowania

W testach po stronie przeglądarki wariant może pojawiać się z opóźnieniem, a skrypt ukrywający stronę do czasu zastosowania zmian spowalnia wyświetlenie treści. Testy z przekierowaniem dodają kolejne opóźnienie. Jeśli wariant B ładuje się wolniej, test mierzy efekt szybkości, a nie treści. Porównaj metryki wydajności dla obu wariantów; jak to zrobić, opisujemy w tekście o tagach a Core Web Vitals.

8. Nierówna utrata danych przez zgody i blokery

Jeśli wariant zmienia układ strony tak, że baner zgód jest mniej lub bardziej widoczny, odsetek zgód w grupach się różni, a GA4 widzi inną część każdej grupy. Podobnie działa blokowanie skryptów: użytkownik z blokerem może widzieć wersję kontrolną, ale nie trafić do pomiaru. Porównaj odsetek zgód między wariantami i, jeśli to możliwe, oceniaj test na danych z systemu sprzedaży. Jak Consent Mode wpływa na dane, wyjaśniamy w porównaniu trybu podstawowego i zaawansowanego.

9. Boty, ruch wewnętrzny i duplikaty transakcji

Boty i ruch pracowników zwiększają liczbę użytkowników bez zakupów, a jeśli rozkładają się nierówno, mogą wywołać SRM. Wykluczaj ruch wewnętrzny i testowy, a anomalie, takie jak skoki odsłon z jednego źródła, sprawdzaj metodami opisanymi w tekście o ad fraudzie i botach. Zduplikowane zdarzenia zakupu potrafią sztucznie podnieść konwersję jednego wariantu – usuń je według identyfikatora transakcji, jak pokazujemy w artykule o duplikatach transakcji w GA4.

Błędy związane z czasem trwania testu

Czas trwania decyduje o tym, czy próba jest reprezentatywna. Za krótki test łapie przypadek, a źle ułożony w kalendarzu – nietypowe zachowania.

10. Podglądanie wyników i wcześniejsze zakończenie

Wartość p w trakcie testu naturalnie się waha. Jeśli sprawdzasz ją codziennie i kończysz test przy pierwszym wyniku poniżej 0,05, realne ryzyko fałszywego zwycięzcy jest dużo wyższe niż 5%. Ustal datę zakończenia przed startem albo korzystaj z narzędzia stosującego metody sekwencyjne, które dopuszczają wielokrotną ocenę. Wcześniej wolno sprawdzać tylko poprawność techniczną, np. SRM.

11. Efekt nowości, sezonowość i niepełne tygodnie

Powracający użytkownicy często reagują na samą zmianę: klikają nowy element z ciekawości, a po kilku tygodniach efekt słabnie. Bywa też odwrotnie – stali klienci potrzebują czasu, żeby przyzwyczaić się do nowego układu. Analizuj wynik osobno dla nowych i powracających użytkowników oraz w kolejnych tygodniach testu. Planuj pełne tygodnie i unikaj okresów takich jak Black Friday, chyba że test dotyczy właśnie ich.

Błędy w interpretacji wyników

Nawet poprawnie przeprowadzony test można źle odczytać. Najczęstszy błąd interpretacyjny łączy dwa zjawiska: szukanie wyniku w segmentach i przecenianie zwycięzcy.

12. Szukanie zwycięzcy w segmentach i przecenianie efektu

Gdy test ogólnie nie wyszedł, kusi sprawdzenie urządzeń, źródeł ruchu, województw i nowych klientów. Przy kilkunastu segmentach któryś prawie na pewno pokaże „istotną” poprawę przez przypadek. Segmenty analizuj tylko wtedy, gdy zaplanowałeś to przed startem, a odkrycia z analizy po fakcie traktuj jako hipotezę do kolejnego testu.

Drugie zjawisko to tzw. klątwa zwycięzcy: wyniki, które przekroczyły próg istotności, zwykle przeszacowują prawdziwy efekt, szczególnie w testach o małej mocy. Jeśli test pokazał poprawę o 18%, po wdrożeniu spodziewaj się mniejszej. Dobrą praktyką jest pozostawienie niewielkiej grupy kontrolnej po wdrożeniu, która pokaże efekt w dłuższym okresie. Zasady takich pomiarów opisujemy w tekście o testach inkrementalności.

Jak wyłapać błędy w testach A/B: objawy i lista kontrolna

Większość opisanych błędów zostawia ślady w danych. Poniższa tabela pomaga je rozpoznać.

Błąd Objaw w danych Jak wykryć
Brak metryki głównej raport z wieloma „zwycięskimi” metrykami sprawdź dokument testu sprzed startu
Za mała moc szeroki przedział ufności policz MDE dla faktycznej próby
Wiele porównań pojedynczy istotny wynik wśród wielu policz liczbę porównań, zastosuj korektę
Losowanie per sesja ci sami użytkownicy w obu wariantach policz osoby z obiema ekspozycjami
SRM proporcja grup inna niż założona test chi-kwadrat, alarm przy p < 0,001
Zanieczyszczenie różnice między urządzeniami analiza osób zalogowanych
Migotanie, szybkość gorsze LCP w jednym wariancie porównanie metryk wydajności
Zgody i blokery różny odsetek zgód w grupach porównanie zgód według wariantu
Boty, duplikaty skoki ruchu, powtórzone transakcje filtry, deduplikacja
Podglądanie test zakończony przed planowaną datą porównanie z planem testu
Efekt nowości malejący efekt w kolejnych tygodniach wynik tydzień po tygodniu
Segmenty po fakcie „zwycięski” segment niezapowiedziany w planie porównanie z dokumentem testu

Do każdego testu stosuj tę samą procedurę kontrolną:

  1. Przed startem spisz hipotezę, metrykę główną, metryki ochronne, wielkość próby i datę zakończenia.
  2. Uruchom test A/A przy nowym narzędziu lub nowym typie wdrożenia, żeby sprawdzić równowagę podziału.
  3. W pierwszych dniach sprawdź SRM, poprawność zdarzeń i wydajność wariantów – bez oceny wyniku.
  4. Po zakończeniu usuń boty, ruch wewnętrzny i duplikaty, a potem policz wynik dla metryki głównej.
  5. Przed ogłoszeniem porównaj wynik z danymi z systemu sprzedaży i z metrykami ochronnymi.
  6. Po wdrożeniu obserwuj efekt przez kilka tygodni lub utrzymaj małą grupę kontrolną.

Wybierając narzędzie, sprawdź, które z tych kontroli wykonuje automatycznie – porównanie znajdziesz w artykule o narzędziach do testów A/B. Te same zasady dotyczą testów kampanii w platformach, opisanych w poradniku o eksperymentach w Google Ads i Meta Ads. Pozostałe materiały znajdziesz w dziale Testy A/B.

Najczęściej zadawane pytania

Co to jest SRM w teście A/B?

SRM, czyli sample ratio mismatch, to istotna różnica między założonym a faktycznym podziałem użytkowników między warianty, np. 50,6/49,4 przy 100 000 osób i planie 50/50. Sprawdza się ją testem chi-kwadrat. SRM oznacza błąd w przydziale lub pomiarze, np. przekierowanie gubiące część osób, więc wyniku takiego testu nie należy interpretować.

Dlaczego nie wolno kończyć testu A/B, gdy wynik jest istotny?

Bo w klasycznym teście poziom istotności 5% obowiązuje tylko przy jednej ocenie po zebraniu zaplanowanej próby. Wartość p w trakcie testu się waha i przy wielu sprawdzeniach często na chwilę spada poniżej progu, nawet gdy warianty niczym się nie różnią. Wcześniejsze zakończenie jest uprawnione tylko w narzędziach z metodami sekwencyjnymi albo przy poważnym błędzie technicznym.

Czym jest test A/A i po co go robić?

Test A/A porównuje dwie identyczne wersje strony. Powinien dać równy podział ruchu i brak istotnej różnicy w metrykach. Jeśli pokazuje SRM albo regularnie wskazuje „zwycięzcę”, problem leży w narzędziu, wdrożeniu lub pomiarze. Warto go przeprowadzić przy wdrażaniu nowego narzędzia i po większych zmianach w tagowaniu strony.

Czy można ufać wynikom testu A/B w segmentach, np. tylko na urządzeniach mobilnych?

Tylko wtedy, gdy analiza segmentu była zaplanowana przed startem i segment ma wystarczającą próbę. Segmenty sprawdzane po fakcie, bo ogólny wynik nie wyszedł, bardzo często dają przypadkowe „zwycięstwa”. Traktuj je jako hipotezę i potwierdź osobnym testem skierowanym do tej grupy, z próbą policzoną dla niej.

Dlaczego po wdrożeniu zwycięskiego wariantu efekt jest mniejszy niż w teście?

Najczęściej z powodu klątwy zwycięzcy: wyniki, które przekroczyły próg istotności, zwykle przeszacowują prawdziwy efekt, zwłaszcza w testach o małej mocy. Dochodzą do tego efekt nowości, który słabnie z czasem, oraz zmiana sezonu lub struktury ruchu. Dlatego planuj wdrożenia z założeniem mniejszego efektu i mierz go po wdrożeniu.