Skip to content
PПромтбук
RUEN
06Performance

A/B-тестирование landing page

Гипотеза одной переменной, MDE и длительность, secondary metrics, типичные ошибки (peeking, novelty effect).

Спроектируй A/B-тест для {{landing_url}}. Primary metric = {{primary_metric}}, baseline = {{current_conversion}}%, traffic = {{weekly_traffic}}/week.

Главный принцип: A/B-тест без гипотезы и MDE — это не эксперимент, а гадание. Если не готов посчитать sample size — не запускай.

Этап 1. Гипотеза (одна переменная)

Шаблон:

Мы верим что [изменение X]
приведёт к [эффекту Y]
потому что [механизм / inside]
Мы поймём что правы если [metric] вырастет на ≥ [MDE]%

Правило: одна переменная. Если меняешь hero + CTA + form одновременно — не узнаешь что сработало.

Плохо vs хорошо:

"Сделаем landing лучше""Поменяем hero, цвет CTA и social proof""Заменим headline 'Project management for teams' на 'Cut meeting time in half' — гипотеза: outcome-focused копий конвертит лучше для нашего ICP"

Этап 2. Что меняем — приоритизация по импакту

Иерархия по ожидаемому эффекту (сверху — больше impact):

ЭлементТипичный upliftNote
Hero copy / value prop10-30%Если message-market fit weak — самый большой рычаг
Hero visual (image vs video vs demo)5-20%Особенно для visual продуктов
Social proof (logos, count, testimonials)5-15%Эффект зависит от target audience trust level
CTA copy ("Try free" vs "Get started" vs "Book demo")2-10%Маленький, но cheap test
Form length (fields count)5-30%Каждое лишнее поле = -5-10% completion
Pricing presentation5-20%Anchor, monthly/annual default, plan order
Page structure (sections order)3-10%Above-the-fold critical
CTA button color0-2%Bikeshedding, почти всегда noise

Совет: не тестируй button color пока hero copy не оптимизирован.

Этап 3. MDE и длительность

MDE (Minimum Detectable Effect) = минимальный uplift который тест может задетектить со statistical power 80%, significance 95%

Sample size calculator inputs:

  • Baseline conversion: {{current_conversion}}%
  • MDE: целевой uplift (обычно 5-20% relative)
  • Statistical significance: 95% (α = 0.05)
  • Statistical power: 80% (β = 0.20)

Формула (для конверсии):

n per variant ≈ (16 × p × (1-p)) / (delta^2)

где p = baseline conversion (в долях), delta = MDE × p (абсолютное изменение)

Пример:

  • Baseline 5%, MDE = 10% relative (= 0.5% absolute)
  • n per variant ≈ 16 × 0.05 × 0.95 / (0.005)^2 ≈ 30,400
  • Total = 60,800 visitors

Длительность теста:

duration_weeks = (2 × n) / weekly_traffic

Правило: минимум 1 полная неделя (захватывает weekly seasonality), даже если sample size достигнут раньше. Максимум 4-6 недель — иначе novelty effect или внешние факторы исказят.

Этап 4. Secondary metrics — обязательно

Primary metric может вырасти за счёт ухудшения другого. Защита — secondary:

- Bounce rate (если landing стал хуже engagement)
- Scroll depth (видели ли весь page)
- Time on page
- Click-through to next step (если primary = signup, то trial activation)
- Downstream conversion (signup → activation → revenue)
- Mobile vs desktop split (вдруг winner только на одной платформе)

Real story: changed CTA — конверсия на signup +15%, но trial activation downstream −20%. Net negative. Без downstream metric — победа была бы false win.

Этап 5. Сегментация результатов

Не смотри только overall. Разделяй:

- New vs returning visitor
- Mobile vs desktop
- Traffic source (organic, paid, referral)
- Geo
- Device class (low-end mobile особенно)

Иногда treatment выигрывает overall, но проигрывает в важном сегменте (e.g. mobile = 60% traffic). Решение по сегменту.

Этап 6. Anti-patterns

  • Peeking — смотреть результат каждый день и останавливать когда p<0.05. False positive rate растёт с N peeks. Решение: pre-register stop time, не смотри early
  • Не учёл novelty effect — новый дизайн "wow" в week 1, эффект уходит в week 3. Запускай минимум 2 недели
  • Multiple variants без correction — A vs B vs C vs D, считаешь каждый против A. Bonferroni correction нужна (α / k)
  • Тест без MDE — собрал 1000 visitors, "winner на 3%", noise. Не достаточно power чтобы детектить 3% uplift
  • Не учёл seasonality — тест в Black Friday week vs обычная неделя — результаты не generalisable
  • Изменил test mid-flight — добавил третий variant через неделю → result invalid
  • Optimized для primary, ignored downstream — see Stage 4
  • Statistical significance ≠ practical significance — uplift 0.5% при N=1M статистически значим, но не стоит ship complexity
  • Стартовал без traffic baseline — если weekly_traffic = 500, любой A/B на conversion невозможен мата

Этап 7. Документирование

Pre-test:

- Hypothesis (one paragraph)
- What's changing (with screenshots before/after)
- Primary metric + MDE + sample size + planned duration
- Secondary metrics
- Stop conditions (early stop if -X% downstream)

Post-test:

- Result: winner / no significant difference / loser
- Effect size (with CI), not just p-value
- Segment breakdown
- Learnings (что узнали даже если null result)
- Decision: ship / iterate / kill

На выходе

  • Конкретная гипотеза (одна переменная)
  • Sample size calculation с цифрами
  • Test duration estimate
  • Primary + secondary metrics
  • Segmentation plan
  • Pre-registered stop conditions
  • Template для post-test write-up
К подразделу «Performance»
Похожие промты