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

Чтобы вы могли получить максимально релевантные и полезные результаты тестирования, на этой странице подробно описано, как работает Firebase A/B Testing.

Размер выборки

Для инференса Firebase A/B Testing не требуется определять минимальный размер выборки до начала эксперимента. В целом рекомендуется выбирать максимально возможный уровень охвата, который вы можете себе позволить. Чем больше выборка, тем выше вероятность получить статистически значимый результат, особенно если разница в эффективности вариантов невелика. Вы также можете воспользоваться онлайн-калькулятором размера выборки, чтобы определить рекомендуемый размер выборки на основе характеристик вашего эксперимента.

Изменение экспериментов

Вы можете изменить некоторые параметры текущих экспериментов, в том числе:

  • Название эксперимента
  • Описание
  • Условия таргетинга
  • Значения вариантов

Чтобы изменить эксперимент, выполните следующие действия:

  1. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  2. Откройте страницу результатов эксперимента, который вы хотите изменить.
  3. В меню Ещё выберите Изменить текущий эксперимент.
  4. Внесите изменения и нажмите Опубликовать.

Обратите внимание, что изменение поведения приложения во время эксперимента может повлиять на результаты.

Логика назначения вариантов Remote Config

Пользователи, соответствующие всем условиям таргетинга эксперимента (включая условие процента охвата), распределяются по вариантам эксперимента в соответствии с весом варианта и хешем идентификатора эксперимента и идентификатора установки Firebase пользователя.

Google AnalyticsАудитории становятся доступны не сразу после того, как пользователь начинает соответствовать критериям аудитории.

  • После создания новой аудитории накопление новых пользователей может занять 24–48 часов.
  • Новые пользователи обычно добавляются в подходящие аудитории в течение 24–48 часов после того, как они начинают соответствовать критериям.

Для таргетинга, зависящего от времени, используйте свойства пользователей Google Analytics или встроенные параметры таргетинга, такие как страна или регион, язык и версия приложения.

После того как пользователь попал в эксперимент, ему назначается определенный вариант эксперимента и он получает значения параметров из эксперимента, пока тот активен, даже если свойства пользователя изменятся и он перестанет соответствовать критериям таргетинга эксперимента.

события активации

События активации эксперимента ограничивают измерение эксперимента пользователями приложения, которые активируют событие активации. Событие активации эксперимента не влияет на параметры эксперимента, получаемые приложением. Все пользователи, соответствующие критериям таргетинга эксперимента, получат параметры эксперимента. Поэтому важно выбрать событие активации, которое происходит после получения и активации параметров эксперимента, но до того, как они будут использованы для изменения поведения приложения.

Вес вариантов

При создании эксперимента можно изменить веса вариантов по умолчанию, чтобы увеличить долю пользователей, которые увидят определенный вариант.

Интерпретация результатов тестирования

Firebase A/B Testing использует частотный вывод, чтобы помочь вам понять вероятность того, что результаты вашего эксперимента могли быть получены исключительно по случайному совпадению. Эта вероятность выражается значением вероятности, или p-значением. P-значение – это вероятность того, что разница в эффективности между двумя вариантами, равная или превышающая наблюдаемую, могла возникнуть случайно, если на самом деле эффекта нет. Измеряется значением от 0 до 1. В A/B Testing используется уровень значимости 0,05, поэтому:

  • P-значение меньше 0,05 указывает на то, что если бы истинная разница была равна нулю, то вероятность того, что наблюдаемая разница такой величины могла возникнуть случайно, составляет менее 5 %. Поскольку пороговое значение составляет 0,05, любое p-значение меньше 0,05 указывает на статистически значимую разницу между вариантами.
  • Если p-значение больше 0,05, то разница между вариантами статистически незначима.

Данные эксперимента обновляются раз в день. Время последнего обновления указано в верхней части страницы с результатами.

На графике результатов эксперимента показаны совокупные средние значения выбранного показателя. Например, если вы отслеживаете доход от рекламы на пользователя, то увидите наблюдаемый доход на пользователя, а если вы отслеживаете пользователей без сбоев, то увидите процент пользователей, у которых не было сбоев. Данные накапливаются с начала эксперимента.

Результаты разделены на Наблюдаемые данные и Данные, полученные на основе логических выводов. Наблюдаемые данные рассчитываются непосредственно на основе данных Google Аналитики, а данные вывода содержат p-значения и доверительные интервалы, которые помогают оценить статистическую значимость наблюдаемых данных.

Для каждого показателя приводятся следующие статистические данные:

Исходные данные

  • Общее значение отслеживаемого показателя (количество удержанных пользователей, количество пользователей, у которых произошел сбой, общий доход).
  • Показатель (показатель удержания, коэффициент конверсии, доход на пользователя)
  • Разница в процентах (рост) между вариантом и базовым значением

Данные для вывода

  • 95% CI (Difference in means) (95 % доверительный интервал (разница средних значений)) – интервал, который содержит "истинное" значение отслеживаемого показателя с доверительной вероятностью 95 %. Например, если в результате эксперимента вы получили 95 % доверительный интервал для расчетного общего дохода от 5 до 10 долларов США, то с вероятностью 95 % истинная разница средних значений находится в диапазоне от 5 до 10 долларов США. Если доверительный интервал включает 0, статистически значимая разница между вариантом и контрольной группой не обнаружена.

    Значения доверительного интервала указываются в формате, соответствующем отслеживаемому показателю. Например, для удержания пользователей это время (в HH:MM:SS), для дохода от рекламы на пользователя – доллары США, а для коэффициента конверсии – проценты.

  • P-значение – вероятность того, что наблюдаемые данные будут такими же экстремальными, как и результаты, полученные в ходе эксперимента, при условии, что между вариантом и базовым элементом нет истинной разницы. Чем ниже p-значение, тем выше вероятность того, что наблюдаемая эффективность сохранится, если мы повторим эксперимент. Значение 0,05 или ниже указывает на существенную разницу и низкую вероятность того, что результаты были получены случайно. P-значения основаны на одностороннем критерии, когда значение варианта больше базового значения. Для непрерывных переменных (числовых значений, например дохода) Firebase использует t-критерий Уэлча, а для данных о конверсиях (бинарных значений, например удержания пользователей, пользователей, у которых не было сбоев, пользователей, активировавших событие Google Analytics) – z-критерий для долей.

Результаты эксперимента содержат важную информацию о каждом варианте, в том числе:

  • Насколько выше или ниже каждый показатель эксперимента по сравнению с исходным, как измерено напрямую (то есть фактические наблюдаемые данные)
  • Вероятность того, что наблюдаемая разница между вариантом и контрольной группой могла возникнуть случайно (p-значение).
  • Диапазон, в котором, скорее всего, находится "истинная" разница в эффективности между вариантом и контрольной группой для каждого показателя эксперимента. Позволяет понять, какими могут быть наилучший и наихудший сценарии.

Определение лидера

В экспериментах, использующих частотный вывод, Firebase объявляет вариант ведущим, если между ним и контрольными настройками существует статистически значимая разница в значениях целевого показателя. Если этому условию отвечают несколько вариантов, выбирается вариант с самым низким p-значением.

Поскольку лучший вариант определяется только с учетом основной цели, вам следует самостоятельно проанализировать второстепенные показатели и принять решение с учетом этих данных. При этом следует учитывать ожидаемые преимущества и риски (например, нижнюю границу доверительного интервала для улучшения), а также влияние на показатели, не связанные с основной целью.

Например, если основным показателем является доля пользователей, у которых не было сбоев, и вариант A явно превосходит контрольный вариант, но уступает ему по удержанию пользователей, то, прежде чем внедрять вариант A, стоит провести дополнительное исследование.

Вы можете запустить любой вариант, а не только лучший, на основе общей оценки эффективности по основным и дополнительным показателям.

Продолжительность эксперимента

Firebase рекомендует продолжать эксперимент, пока не будут выполнены следующие условия:

  1. В ходе эксперимента собрано достаточно данных, чтобы получить полезный результат. Данные об экспериментах и их результатах обновляются раз в день. Вы можете использовать онлайн-калькулятор размера выборки, чтобы оценить рекомендуемый размер выборки для вашего эксперимента.
  2. Эксперимент проводился достаточно долго, чтобы получить репрезентативную выборку пользователей и оценить долгосрочную эффективность. Две недели – это рекомендуемый минимальный срок проведения типичного эксперимента Remote Config.

Данные эксперимента обрабатываются в течение максимум 90 дней после его начала. По прошествии 90 дней эксперимент автоматически завершается. Результаты эксперимента больше не обновляются в консоли Firebase, а значения параметров, относящихся к эксперименту, перестают отправляться. В этот момент клиенты начинают получать значения параметров на основе условий, заданных в шаблоне Remote Config. Статистика эксперимента хранится до тех пор, пока вы его не удалите.

Схема BigQuery

Данные экспериментов A/B Testing можно просматривать не только в консоли Firebase, но и в BigQuery. Хотя в A/B Testing нет отдельной таблицы BigQuery, данные об участии в экспериментах и вариантах хранятся в каждом событии Google Analytics в таблицах событий Analytics.

Свойства пользователя, содержащие информацию об эксперименте, имеют вид userProperty.key like "firebase_exp_%" или userProperty.key = "firebase_exp_01", где 01 – идентификатор эксперимента, а userProperty.value.string_value – индекс варианта эксперимента (начиная с нуля).

Вы можете использовать эти свойства пользователей для извлечения данных эксперимента. Это позволяет анализировать результаты экспериментов с разных точек зрения и независимо проверять результаты A/B Testing.

Чтобы начать работу, выполните следующие действия:

  1. Включите экспорт BigQuery для Google Analytics в консоли Firebase
  2. Доступ к данным A/B Testing с помощью BigQuery
  3. Примеры запросов

Включите экспорт BigQuery для Google Analytics в консоли Firebase.

Если у вас тарифный план Spark, вы можете использовать изолированную среду BigQuery, чтобы получить бесплатный доступ к BigQuery с учетом ограничений изолированной среды. Подробнее о ценах и тестовой среде BigQuery…

Сначала убедитесь, что вы экспортируете данные Analytics в BigQuery.

  1. В консоли Firebase перейдите в раздел Settings (Настройки) > Integrations (Интеграции).

  2. На карточке BigQuery нажмите Управление и убедитесь, что данные Analytics экспортируются в BigQuery.

    Если на карточке написано Связать, вам нужно настроить экспорт (перейдите к следующему шагу).

  3. Если вам нужно настроить экспорт:

    1. Ознакомьтесь с информацией в разделе О связывании Firebase с BigQuery и нажмите Далее.

    2. В разделе Configure integration (Настройка интеграции) включите Google Analytics.

    3. Выберите регион и настройки экспорта.

    4. Нажмите Связать с BigQuery.

В зависимости от выбранного способа экспорта данных таблицы могут стать доступны в течение суток. Подробнее о том BigQuery, как экспортировать данные проекта в BigQuery…

Доступ к данным A/B Testing в BigQuery

Прежде чем запрашивать данные для определенного эксперимента, вам нужно получить некоторые или все из следующих данных, которые будут использоваться в запросе:

  • Идентификатор эксперимента. Его можно найти в URL страницы Обзор эксперимента. Например, если URL выглядит как https://console.firebase.google.com/project/my_firebase_project/config/experiment/results/25, то идентификатор эксперимента – 25.
  • Идентификатор ресурса Google Analytics. Это девятизначный идентификатор ресурса Google Analytics. Его можно найти в Google Analytics. Он также появляется в BigQuery, когда вы разворачиваете название проекта, чтобы посмотреть название таблицы событий Google Analytics (project_name.analytics_000000000.events).
  • Дата эксперимента. Чтобы запрос выполнялся быстрее и эффективнее, рекомендуем ограничить его Google Analytics разделами таблицы ежедневных событий, которые содержат данные эксперимента. Такие таблицы имеют суффикс YYYYMMDD. Например, если эксперимент проводился со 2 февраля по 2 мая 2026 года, укажите _TABLE_SUFFIX between '20260202' AND '20260502'. Пример приведен в разделе Как выбрать значения для определенного эксперимента.
  • Названия событий. Обычно они соответствуют целевым показателям, которые вы настроили в эксперименте. Например, события in_app_purchase, ad_impression или user_retention.
…

После того как вы соберете информацию, необходимую для создания запроса:

  1. В консоли Google Cloud перейдите в раздел BigQuery.
  2. Выберите проект, затем выберите Создать SQL-запрос.
  3. Введите запрос. Примеры запросов приведены в разделе Примеры запросов.
  4. Нажмите Выполнить.

Как запрашивать данные эксперимента с помощью автоматически созданного запроса в консоли Firebase

Если вы используете тарифный план Blaze, на странице Обзор эксперимента будет доступен пример запроса, который возвращает название эксперимента, варианты, названия событий и количество событий для просматриваемого эксперимента.

Чтобы получить и выполнить автоматически созданный запрос, сделайте следующее:

  1. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing (A/B-тестирование).
  2. Выберите эксперимент A/B Testing, чтобы открыть обзор эксперимента.
  3. В меню параметров в разделе Интеграция с BigQuery выберите Запросить данные эксперимента. В консоли Google Cloud откроется ваш проект в BigQuery и появится базовый запрос, который можно использовать для получения данных об эксперименте.

Ниже приведен пример запроса, созданного для эксперимента с тремя вариантами (включая контрольный), который называется "Winter welcome experiment". Он возвращает название активного эксперимента, название варианта, уникальное событие и количество событий для каждого события. Обратите внимание, что конструктор запросов не указывает название вашего проекта в названии таблицы, поскольку он открывается непосредственно в вашем проекте.

  /*
    This query is auto-generated by Firebase A/B Testing for your
    experiment "Winter welcome experiment".
    It demonstrates how you can get event counts for all Analytics
    events logged by each variant of this experiment's population.
  */
  SELECT
    'Winter welcome experiment' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'Welcome message (1)'
      WHEN '2' THEN 'Welcome message (2)'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_000000000.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN '20260202' AND '20260502')
    AND userProperty.key = 'firebase_exp_25'
  GROUP BY
    experimentVariant, eventName

Дополнительные примеры запросов можно найти в статье Примеры запросов.

Примеры запросов

В следующих разделах приведены примеры запросов, которые можно использовать для извлечения данных об экспериментах A/B Testing из таблиц событий Google Analytics.

Извлечь значения стандартного отклонения для покупок и экспериментов из всех экспериментов

Вы можете использовать данные результатов эксперимента, чтобы самостоятельно проверить результаты Firebase A/B Testing. Следующая инструкция SQL BigQuery извлекает варианты эксперимента, количество уникальных пользователей в каждом варианте, а также суммирует общий доход от событий in_app_purchase и ecommerce_purchase и стандартные отклонения для всех экспериментов в диапазоне дат, указанном в качестве дат начала и окончания _TABLE_SUFFIX. Полученные данные можно использовать в генераторе статистической значимости для односторонних t-критериев, чтобы убедиться, что результаты Firebase соответствуют вашему анализу.

Подробнее о том, как A/B Testing рассчитывает статистический вывод, читайте в статье Как интерпретировать результаты тестирования.

  /*
    This query returns all experiment variants, number of unique users,
    the average USD spent per user, and the standard deviation for all
    experiments within the date range specified for _TABLE_SUFFIX.
  */
  SELECT
    experimentNumber,
    experimentVariant,
    COUNT(*) AS unique_users,
    AVG(usd_value) AS usd_value_per_user,
    STDDEV(usd_value) AS std_dev
  FROM
    (
      SELECT
        userProperty.key AS experimentNumber,
        userProperty.value.string_value AS experimentVariant,
        user_pseudo_id,
        SUM(
          CASE
            WHEN event_name IN ('in_app_purchase', 'ecommerce_purchase')
              THEN event_value_in_usd
            ELSE 0
            END) AS usd_value
      FROM `PROJECT_NAME.analytics_ANALYTICS_ID.events_*`
      CROSS JOIN UNNEST(user_properties) AS userProperty
      WHERE
        userProperty.key LIKE 'firebase_exp_%'
        AND event_name IN ('in_app_purchase', 'ecommerce_purchase')
        AND (_TABLE_SUFFIX BETWEEN 'YYYYMMDD' AND 'YYYMMDD')
      GROUP BY 1, 2, 3
    )
  GROUP BY 1, 2
  ORDER BY 1, 2;

Как выбрать значения для определенного эксперимента

В примере ниже показано, как получить данные для определенного эксперимента в BigQuery. Этот пример запроса возвращает название эксперимента, названия вариантов (включая контрольный), названия событий и количество событий.

  SELECT
    'EXPERIMENT_NAME' AS experimentName,
    CASE userProperty.value.string_value
      WHEN '0' THEN 'Baseline'
      WHEN '1' THEN 'VARIANT_1_NAME'
      WHEN '2' THEN 'VARIANT_2_NAME'
      END AS experimentVariant,
    event_name AS eventName,
    COUNT(*) AS count
  FROM
    `analytics_ANALYTICS_PROPERTY.events_*`,
    UNNEST(user_properties) AS userProperty
  WHERE
    (_TABLE_SUFFIX BETWEEN 'YYYMMDD' AND 'YYYMMDD')
    AND userProperty.key = 'firebase_exp_EXPERIMENT_NUMBER'
  GROUP BY
    experimentVariant, eventName

Ограничения

В A/B Testing можно создать не более 300 экспериментов, из которых 24 могут быть активными. Эти ограничения распространяются на Remote Config развертываний. Например, если у вас есть два запущенных внедрения и три запущенных эксперимента, вы можете добавить ещё 19 внедрений или экспериментов.

  • Если вы достигли лимита в 300 экспериментов, то, прежде чем создать новый, вам нужно будет удалить один из существующих.

  • Если вы достигли лимита в 24 эксперимента и внедрения, то, прежде чем запустить новые, вам нужно будет остановить некоторые из текущих.

В эксперименте может быть не более восьми вариантов (включая контрольный) и до 25 параметров для каждого варианта. Размер эксперимента может составлять до 200 КиБ. включая названия вариантов, параметры вариантов и другие метаданные конфигурации.