Pomiń do treści
Netova
Zespół Netova

A/B Testing - Jak testować zmiany bez zgadywania?

A/B Testing - Jak testować zmiany bez zgadywania?

"Powinniśmy zmienić przycisk na zielony."
"Nie, czerwony konwertuje lepiej."
"A może niebieski?"

Stop. Nie zgadujcie. Testujcie.

A/B testing to jedyny sposób na pewność, co działa, a co nie.

Czym jest A/B Testing?

Definicja: Pokazujesz 50% użytkowników wersję A, 50% wersję B. Mierzysz, która konwertuje lepiej.

Przykład:

  • Wersja A: "Kup teraz" (button zielony)
  • Wersja B: "Rozpocznij za darmo" (button niebieski)

Wynik: Wersja B konwertuje o 34% lepiej → wdrażasz B na stałe.

Co można testować?

1. Headlines (największy impact)

  • "Najlepsza strona w Polsce" vs "Zwiększ sprzedaż o 300%"
  • Emocjonalne vs racjonalne

2. CTA (Call to Action)

  • "Kup teraz" vs "Wypróbuj za darmo"
  • Kolor przycisku
  • Rozmiar i pozycja

3. Formularze

  • 3 pola vs 7 pól
  • Z/bez phone number
  • Vertical vs horizontal layout

4. Pricing

  • "$99/month" vs "$1188/year (save 20%)"
  • Pokaż/ukryj plan darmowy

5. Images & Video

  • Stockowe foto vs realne zdjęcie zespołu
  • Z/bez video explainer

6. Social Proof

  • Liczba klientów vs testimonials vs logos firm

7. Navigation

  • Menu zawsze widoczne vs hamburger
  • 5 pozycji vs 8 pozycji

Narzędzia do A/B testingu (2026)

1. Vercel Edge Config + Middleware

// middleware.ts
import { next } from '@vercel/edge';

export const config = {
  matcher: '/',
};

export default function middleware(req) {
  const bucket = Math.random() < 0.5 ? 'A' : 'B';
  
  const response = next();
  response.cookies.set('ab-test-variant', bucket);
  
  return response;
}

Component:

// app/page.tsx
import { cookies } from 'next/headers';

export default async function HomePage() {
  const cookieStore = await cookies();
  const variant = cookieStore.get('ab-test-variant')?.value || 'A';
  
  const cta = variant === 'A' 
    ? 'Kup teraz' 
    : 'Wypróbuj za darmo';
  
  return {cta};
}

2. PostHog (Recommended)

Zalety:

  • Open-source
  • Feature flags + analytics
  • Session replay
  • Privacy-friendly

Setup:

npm install posthog-js
// app/providers.tsx
'use client';
import posthog from 'posthog-js';
import { PostHogProvider } from 'posthog-js/react';

if (typeof window !== 'undefined') {
  posthog.init('YOUR_PROJECT_KEY', {
    api_host: 'https://app.posthog.com'
  });
}

export function PHProvider({ children }) {
  return {children};
}

A/B Test:

'use client';
import { useFeatureFlagVariantKey } from 'posthog-js/react';

export default function CTAButton() {
  const variant = useFeatureFlagVariantKey('cta-test');
  
  const buttonText = variant === 'test' 
    ? 'Rozpocznij za darmo' 
    : 'Kup teraz';
  
  return {buttonText};
}

3. Optimizely

Dla enterprise ($50k+/rok)

4. VWO (Visual Website Optimizer)

No-code editor ($199+/miesiąc)

5. Google Optimize (deprecated, ale fork istnieje)

Praktyczny przykład: Optimizing Landing Page

Test: Hero CTA

Hipoteza: "Wypróbuj za darmo" konwertuje lepiej niż "Kup teraz"

Setup:

// app/page.tsx
import { cookies } from 'next/headers';

export default async function LandingPage() {
  const cookieStore = await cookies();
  const variant = cookieStore.get('hero-cta-test')?.value || 'control';
  
  const heroData = {
    control: {
      headline: 'Najlepsza platforma do zarządzania projektami',
      cta: 'Kup teraz',
      buttonColor: 'bg-green-600'
    },
    variant: {
      headline: 'Zarządzaj projektami 3x szybciej',
      cta: 'Wypróbuj za darmo',
      buttonColor: 'bg-blue-600'
    }
  };
  
  const content = heroData[variant];
  
  return (
    
      {content.headline}
      
        {content.cta}
      
    
  );
}

Tracking:

'use client';

export function CTAButton({ variant, text }) {
  const handleClick = () => {
    // Track conversion
    fetch('/api/analytics/conversion', {
      method: 'POST',
      body: JSON.stringify({
        event: 'cta_click',
        variant: variant,
        timestamp: Date.now()
      })
    });
  };
  
  return {text};
}

Statystyczna istotność - Kiedy test jest gotowy?

Minimalne wymagania:

  • Minimum 100 konwersji na wariant
  • Confidence level: 95%
  • Test duration: min 1 tydzień (żeby pokryć różne dni)

Kalkulator:

// Uproszczony przykład
function calculateSignificance(controlConv, testConv, controlVisits, testVisits) {
  const controlRate = controlConv / controlVisits;
  const testRate = testConv / testVisits;
  const improvement = ((testRate - controlRate) / controlRate) * 100;
  
  // Z-score calculation (simplified)
  const pooledRate = (controlConv + testConv) / (controlVisits + testVisits);
  const se = Math.sqrt(pooledRate * (1 - pooledRate) * (1/controlVisits + 1/testVisits));
  const zScore = (testRate - controlRate) / se;
  
  // p-value approximation
  const significant = Math.abs(zScore) > 1.96; // 95% confidence
  
  return { improvement, significant, zScore };
}

Case Study: E-commerce Checkout

Test: Uproszczenie checkout flow

Kontrola (A):

  • 5 kroków
  • Obowiązkowe konto
  • 12 pól formularza

Wariant (B):

  • 3 kroki
  • Guest checkout
  • 6 pól formularza

Rezultaty (2 tygodnie, 50k wizyt):

|--------------------------------------------------------------|
| Metryka              | Kontrola A |   Wariant B   |  Zmiana  |
|----------------------|------------|---------------|----------|
| Conversion rate      |    2.1%    |       3.4%    |   +61%   |
| Avg. time to complete|   4m 20s   |     2m 45s    |   -37%   |
| Cart abandonment     |    68%     |       51%     | -17 p.p. |
| Mobile conversion    |    1.2%    |      2.8%     |   +133%  |
|--------------------------------------------------------------|

Wartość biznesowa:
+61% konwersja przy 50k wizyt/miesiąc = +650 zamówień/miesiąc

Przy średniej wartości zamówienia 250 zł = +162,500 zł przychodu/miesiąc

Winner: Wariant B (wdrożony na stałe)

Częste błędy w A/B testingu

❌ Błąd 1: Za krótki test

Problem: 2 dni testowania, 50 konwersji
Fix: Min 1 tydzień, min 100 konwersji

❌ Błąd 2: Testowanie wielu rzeczy naraz

Problem: Zmieniasz headline + CTA + obrazek
Fix: Testuj jedną zmienną na raz

❌ Błąd 3: Ignorowanie segmentów

Problem: Desktop vs Mobile mogą mieć różne wyniki
Fix: Analizuj per segment

❌ Błąd 4: Podglądanie wyników co godzinę

Problem: Random variance może wprowadzać w błąd
Fix: Poczekaj do końca testu

❌ Błąd 5: Brak hipotezy

Problem: Testujesz "bo tak"
Fix: Zawsze zapisuj hipotezę + oczekiwany outcome

Multivariate Testing (gdy A/B to za mało)

Przykład: Testujesz jednocześnie:

  • 2 wersje headline
  • 2 wersje CTA
  • 2 wersje image

Kombinacje: 2 × 2 × 2 = 8 wariantów

Wymagany traffic: 8x więcej niż A/B test

Kiedy używać:
Tylko przy dużym traffic (100k+ wizyt/miesiąc)

Narzędzia do kalkulacji

1. Sample Size Calculator

🔗 abtestguide.com/calc/

Oblicza ile wizyt potrzebujesz.

2. Significance Calculator

🔗 abtestguide.com/bayesian/

Sprawdza czy wyniki są statystycznie istotne.

Best Practices 2026

Test continously - zawsze miej aktywny test
Document everything - hipoteza, wyniki, learnings
Start with high-impact areas - hero, pricing, checkout
Mobile-first - testuj mobile osobno
User research first - zrozum problem przed testem
Ethical testing - nie testuj na krytycznych funkcjach (accessibility, security)

Checklist A/B Test

✅ Jasna hipoteza zapisana
✅ Jedna zmienna testowana
✅ Tracking setup (konwersje + metrics)
✅ Sample size calculated
✅ Test duration planned (min 1 tydzień)
✅ Segmentation defined
✅ Success criteria defined
✅ Backup plan jeśli test fail

Podsumowanie

A/B testing to nie luksus. To konieczność w 2026. Każda decyzja o UI/UX powinna być poparta danymi, nie opinią.

W Netova każdy projekt większy niż landing page otrzymuje A/B testing setup. Efekt? Średnio +45% konwersja w ciągu 3 miesięcy optymalizacji.

Wdrożymy A/B testing na Twojej stronie