Налаштування A/B тестування в мобільному додатку
Ви запускаєте A/B тест, через три дні бачите p-value 0.04 і зупиняєте експеримент. Результат — хибнопозитивний. Таке трапляється в 80% мобільних A/B тестів, якщо вірити аналітиці. Причина — порушення базової статистики: множинні перевірки та передчасна зупинка. A/B тестування — потужний інструмент, але тільки при правильному налаштуванні. Наш досвід у мобільній розробці — понад 50 впроваджених A/B тестів на iOS та Android. Гарантуємо коректне налаштування та статистично значущі результати. Зв'яжіться з нами для консультації.
Як вибрати інструмент для A/B тестування?
| Інструмент | Підходить для | Мінус |
|---|---|---|
| Firebase A/B Testing | Прості UI/текст/параметри | Обмежена гнучкість таргетингу |
| Amplitude Experiment | Продуктові гіпотези з аналізом retention | Платний, вимагає Amplitude Analytics |
| Statsig | Повний цикл: флаги, експерименти, аналіз | Вимагає налаштування |
| Growthbook | Open-source, self-hosted | Інфраструктурні витрати |
Firebase A/B Testing — розумний старт для більшості проєктів. Інтеграція через Remote Config, без додаткових SDK. Для складної сегментації (користувачі з Києва з трьома сесіями) Statsig втричі ефективніший за рахунок стратифікованої вибірки.
Чому більшість A/B тестів дають хибнопозитивні результати?
Зупинка тесту при перших значущих результатах — найпоширеніша помилка. Якщо дивитися на p-value щодня і зупинити тест коли p < 0.05 вперше — ймовірність хибнопозитивного результату може зрости до 30%. Тест потрібно зупиняти, коли досягнуто заздалегідь визначеного розміру вибірки.
Один тест — одна метрика. Не можна оптимізувати одночасно conversion rate та session length одним тестом. Якщо обидві метрики зростають — добре, але таргетна має бути одна.
Novelty effect. Новий дизайн дає сплеск кліків на першому тижні просто тому що він новий. Для поведінкових тестів мінімальний термін — 2 тижні. Для retention-тестів — 4 тижні.
Коли потрібно зупиняти A/B тест?
Тест потрібно зупиняти тільки при досягненні заздалегідь розрахованого розміру вибірки. Не можна покладатися на поточне p-value. Використовуйте калькулятор розміру вибірки: вкажіть baseline конверсію, мінімальний ефект (MDE) та довірчий інтервал (зазвичай 95%). Наприклад, для baseline 10% і MDE 1% потрібно близько 10 000 користувачів на варіант.
Firebase A/B Testing: налаштування
Firebase A/B Testing будується поверх Remote Config. Спочатку визначаємо параметр:
// Отримуємо значення з Remote Config let remoteConfig = RemoteConfig.remoteConfig() remoteConfig.configSettings = RemoteConfigSettings() remoteConfig.configSettings.minimumFetchInterval = 0 // в debug remoteConfig.fetchAndActivate { status, error in let ctaText = remoteConfig.configValue(forKey: "checkout_cta_text").stringValue self.checkoutButton.setTitle(ctaText, for: .normal) } У Firebase Console → A/B Testing створюємо експеримент:
- Обираємо
checkout_cta_textяк Target Parameter - Control: "Оформити замовлення"
- Variant A: "Купити зараз"
- Цільова метрика:
purchase(конверсійна подія) - Відсоток учасників: 50%
- Мінімальний розмір вибірки: Firebase розраховує автоматично
Статистична значущість: неочевидні підводні камені
| Проблема | Наслідок | Рішення |
|---|---|---|
| Множинні перевірки (peeking) | Хибні спрацьовування | Заздалегідь фіксувати розмір вибірки |
| Декілька метрик | Переоптимізація | Обрати одну первинну метрику |
| Новизна (novelty effect) | Завищені результати | Мінімум 2 тижні для UI-тестів |
Statsig для складних експериментів
Відзначимо: коли потрібна більш гнучка сегментація (тестуємо тільки на користувачах з Києва, у яких > 3 сесій):
// iOS Statsig SDK import StatsigSDK Statsig.initialize(sdkKey: "client-xxx") { let experiment = Statsig.getExperiment("checkout_flow_v2") let variant = experiment.getValue(forKey: "flow_type", defaultValue: "standard") if variant == "simplified" { self.showSimplifiedCheckout() } else { self.showStandardCheckout() } } // Android val experiment = Statsig.getExperiment("checkout_flow_v2") val flowType = experiment.getString("flow_type", "standard") Statsig підтримує стратифіковану вибірку — рівномірний розподіл користувачів по стратах (платформа, країна, план підписки). Без стратифікації випадковий розподіл може створити когорти з різним складом, що спотворює результати.
Логування експозиції
Для коректного аналізу важливо логувати факт показу варіанту — не тільки конверсію:
Analytics.logEvent("experiment_exposure", parameters: [ "experiment_id": "checkout_cta_v2", "variant": variantName, "user_id": userId ]) Це дозволяє аналізувати конверсію тільки серед користувачів, які реально бачили експеримент, а не всіх учасників.
Що входить в роботу
- Вибір інструменту під завдання та стек (Firebase / Statsig / Amplitude Experiment)
- Інтеграція SDK та налаштування Remote Config / Feature Flags
- Реалізація шару A/B в коді з коректною обробкою варіантів
- Налаштування цільових метрик та конверсійних подій
- Конфігурація розміру вибірки та тривалості тесту
- Логування експозиції для аналізу
- Пост-тест аналіз з перевіркою статистичних припущень
- Документування результатів
Терміни
Один A/B тест на Firebase Remote Config: 1–2 дні. Інфраструктура для регулярного A/B тестування (Statsig/Growthbook): 3–5 днів. Вартість розраховується індивідуально. Оцінимо ваш проєкт — зв'яжіться з нами для консультації. Гарантуємо прозору звітність та коректні експерименти. Замовте реалізацію A/B тестування — отримайте статистично значущі результати без хибних спрацьовувань.







