Как создать A/B-тестирование в Firebase Remote Config

Применяя настройки Firebase Remote Config для приложения с активной пользовательской базой, вы должны быть уверены, что все делаете правильно. Эксперименты A/B Testing позволяют определить:

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

Чтобы провести A/B-тестирование вариантов функции с контрольной группой, выполните следующие действия:

  1. Создайте эксперимент.
  2. Управление экспериментом.

Создание эксперимента

Эксперимент Remote Config позволяет оценить несколько вариантов одного или нескольких параметров Remote Config.

  1. Убедитесь, что в вашем проекте включен сервис Google Analytics, чтобы у эксперимента был доступ к данным Analytics.

    Если вы не включили Google Analytics при создании проекта, вы можете сделать это на вкладке Settings (Настройки) > Integrations (Интеграции) в консоли Firebase.

  2. В консоли Firebase выберите DevOps & Engagement (DevOps и вовлечение) > A/B Testing.

  3. Нажмите Создать эксперимент и выберите Remote Config, когда вам будет предложено указать сервис, который вы хотите протестировать.

  4. В разделе Варианты выберите исходный вариант и хотя бы один вариант для эксперимента. Вы можете добавить один или несколько параметров для эксперимента. Вы можете повторить этот шаг, чтобы добавить в эксперимент несколько параметров.

  5. Если вы хотите добавить в эксперимент несколько вариантов, нажмите Добавить вариант.

  6. Измените один или несколько параметров для определенных вариантов. Для пользователей, не участвующих в эксперименте, значения параметров остаются прежними.

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

  8. Задайте критерии таргетинга для эксперимента, используя условия Remote Config:

    • Использовать существующее условие. Если в шаблоне Remote Config уже есть условие, соответствующее вашей целевой аудитории, выберите его из списка.

    • Проверьте порядок оценки условий. Убедитесь, что условия на странице Условия упорядочены по приоритету. Поскольку Remote Config оценивает условия последовательно сверху вниз, другие условия с более высоким приоритетом могут помешать достаточному количеству пользователей достичь условия, связанного с вашим экспериментом.

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

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

      • Версия. Одна или несколько версий приложения.
      • Номер сборки. Номер сборки (Apple) или код версии (Android) вашего приложения.
      • Платформа. Одна или несколько целевых платформ (iOS, Android или веб).
      • Операционная система. Таргетинг на пользователей веб-приложений с учетом операционной системы и ее версии.
      • Браузер. Таргетинг на пользователей веб-приложений с учетом браузера и его версии.
      • Категория устройства. Таргетинг на пользователей веб-приложений в зависимости от того, используют ли они мобильные устройства.
      • Языки. Один или несколько языков и регионов, используемых для выбора пользователей, которые могут быть включены в эксперимент.
      • Страна/регион. Выберите одну или несколько стран или регионов, чтобы включить в эксперимент пользователей из них.
      • Аудитория пользователей. Analytics аудиторий, используемых для таргетинга на пользователей, которые могут быть включены в эксперимент.
      • Свойство пользователя. Одно или несколько свойств пользователя Analytics для выбора пользователей, которые могут быть включены в эксперимент.
      • Пользователь в случайном проценте. Таргетинг на случайно выбранный процент пользователей в определенном диапазоне процентилей.
      • Импортированный сегмент. Таргетинг на пользователей, которые относятся к специальным импортированным сегментам, загруженным в ваш проект.
      • Дата и время. Таргетинг на пользователей в определенный период времени.
      • Первый запуск. Таргетинг на пользователей, которые впервые открыли ваше приложение.
      • Идентификатор установки. Вы можете настроить таргетинг на определенные тестовые устройства или экземпляры клиентов, используя их идентификаторы установки Firebase (FID).
      • Пользователь существует. Таргетинг на всех пользователей во всех приложениях проекта.
      • Специальный сигнал. Таргетинг на пользователей на основе специальных сигналов типа "ключ-значение" на стороне клиента, передаваемых во время выполнения.
  9. Укажите охват. Введите процент пользовательской базы вашего приложения, соответствующей критериям, заданным в разделе Целевые пользователи, которую вы хотите равномерно распределить между контрольной группой и одним или несколькими вариантами в эксперименте. Это может быть любое значение от 0 до 100 %. Пользователи случайным образом распределяются по всем экспериментам, включая дублированные.

  10. При необходимости задайте событие активации, чтобы в эксперименте учитывались только данные пользователей, которые сначала активировали определенное событие Analytics. Обратите внимание, что все пользователи, соответствующие параметрам таргетинга, получат экспериментальные значения Remote Config, но в результаты эксперимента будут включены только те, кто активирует событие активации.

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

    • app_install
    • app_remove
    • app_update

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

  11. В разделе Цели выберите основной показатель для отслеживания и добавьте из списка дополнительные показатели. К ним относятся встроенные цели (покупки, доход, удержание, пользователи без сбоев и т. д.), события-конверсии Analytics и другие события Analytics. Когда все будет готово, нажмите Далее.

  12. Нажмите Сохранить. Чтобы запустить эксперимент, необходимо опубликовать шаблон.

В одном проекте может быть до 300 экспериментов (включая развертывания), из которых до 24 могут быть активными, а остальные – завершенными.

Как управлять экспериментом

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

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

Как изменить эксперимент

  1. В разделе DevOps & Engagement (DevOps и взаимодействие) меню навигации консоли Firebase нажмите Remote Config.
  2. Откройте вкладку A/B-тестирование.
  3. Нажмите Выполняется и выберите эксперимент, который нужно изменить.
  4. Откройте контекстное меню и выберите Изменить текущий эксперимент.
  5. Чтобы убедиться, что в эксперимент будут включены пользователи вашего приложения, разверните сведения и проверьте, что в разделе Таргетинг и распространение указано число больше 0 % (например, 1 % пользователей соответствует критериям).

Как отслеживать эксперимент

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

  1. В разделе DevOps & Engagement (DevOps и взаимодействие) меню навигации консоли Firebase нажмите Remote Config.
  2. Откройте вкладку A/B-тестирование.
  3. Нажмите Выполняется, а затем выберите или найдите название эксперимента. На этой странице вы можете посмотреть различные наблюдаемые и смоделированные статистические данные о текущем эксперименте, в том числе:

    • % разницы с базовым вариантом. Мера улучшения показателя для определенного варианта по сравнению с базовым. Рассчитывается путем сравнения диапазона значений для варианта с диапазоном значений для базового значения.
    • Вероятность опережения базовой модели. Расчетная вероятность того, что определенный вариант превзойдет базовую модель по выбранному показателю.
    • observed_metric на пользователя. Прогнозируемый диапазон значений показателя, рассчитанный на основе результатов эксперимента.
    • Итоговое значение observed_metric. Наблюдаемое совокупное значение для контрольной или экспериментальной группы. Это значение используется для оценки эффективности каждого варианта эксперимента, а также для расчета улучшения, диапазона значений, вероятности опережения базовой модели и вероятности того, что вариант окажется лучшим. В зависимости от отслеживаемого показателя этот столбец может называться "Продолжительность на пользователя", "Доход на пользователя", "Показатель удержания" или "Коэффициент конверсии".
  4. После того как эксперимент продлится некоторое время (14 дней для Remote Config), на этой странице появятся данные о том, какой вариант является лидером. Некоторые показатели сопровождаются линейчатой диаграммой, которая представляет данные в визуальном формате.

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

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

  1. В разделе DevOps & Engagement (DevOps и взаимодействие) меню навигации консоли Firebase нажмите Remote Config.
  2. Откройте вкладку A/B-тестирование.
  3. Нажмите Завершено или Выполняется, выберите эксперимент, который хотите применить ко всем пользователям, откройте контекстное меню и нажмите Применить вариант.
  4. Чтобы применить результаты эксперимента ко всем пользователям, выполните следующие действия:
    • Для эксперимента Remote Config выберите вариант, чтобы определить, какие значения параметров Remote Config нужно обновить. Критерии таргетинга, заданные при создании эксперимента, будут добавлены в шаблон в качестве нового условия, чтобы развертывание затронуло только пользователей, на которых был нацелен эксперимент. Нажмите Проверить в Remote Config, чтобы посмотреть изменения, а затем – Опубликовать изменения, чтобы завершить развертывание.

Как расширить эксперимент

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

  1. В меню навигации консоли Firebase в разделе DevOps & Engagement (DevOps и вовлечение) нажмите Remote Config.
  2. Откройте вкладку A/B-тестирование.
  3. Выберите активный эксперимент, который нужно изменить.
  4. В разделе Обзор эксперимента откройте контекстное меню и выберите Изменить текущий эксперимент.
  5. В диалоговом окне Таргетинг вы увидите вариант, позволяющий увеличить долю пользователей, участвующих в текущем эксперименте. Выберите число, которое больше текущего процента, и нажмите Опубликовать. Эксперимент будет запущен для указанного вами процента пользователей.

Как скопировать эксперимент

  1. В меню навигации консоли Firebase в разделе DevOps & Engagement (DevOps и вовлечение) нажмите Remote Config.
  2. Откройте вкладку A/B-тестирование.
  3. Выберите активный или завершенный эксперимент, который нужно остановить.
  4. Нажмите Завершено или Выполняется, наведите указатель на эксперимент, откройте контекстное меню () и выберите Дублировать эксперимент или Остановить эксперимент.

Как остановить эксперимент

  1. В меню навигации консоли Firebase в разделе DevOps & Engagement (DevOps и вовлечение) нажмите Remote Config.
  2. Откройте вкладку A/B-тестирование.
  3. Выберите активный или завершенный эксперимент, который нужно остановить.
  4. Нажмите Завершено или Выполняется, наведите указатель на эксперимент, нажмите на контекстное меню () и выберите Остановить эксперимент.

Идентификация веб-клиента и сохранение эксперимента

Когда пользователь впервые запускает веб-приложение с помощью Firebase A/B Testing в браузере, генерируется уникальный идентификатор установки Firebase (FID). Этот идентификатор постоянно хранится в IndexedDB браузера, чтобы идентифицировать экземпляр приложения в разных сеансах.

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

Поскольку идентификатор установки Firebase хранится в IndexedDB, Firebase A/B Testing считает пользователя новым, если он заходит в приложение из другого браузера или в режиме инкогнито, а также если он очистил IndexedDB в браузере. Это означает, что пользователь может быть включен в разные варианты эксперимента при использовании разных браузеров или сеансов просмотра.

Таргетинг на пользователей

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

В консоли Firebase поддерживаются следующие типы правил: Эквивалентные функции доступны в Remote Config REST API, как описано в справочнике по условным выражениям.

Тип правила Операторы Значения Примечание
Приложение == Выберите идентификатор приложения из списка идентификаторов приложений, связанных с вашим проектом Firebase. При добавлении приложения в Firebase вы указываете идентификатор пакета или название пакета Android, определяющее атрибут, который в правилах Remote Config представлен как Идентификатор приложения.

Вот как использовать этот атрибут:
  • Для платформ Apple: используйте CFBundleIdentifier приложения. Идентификатор пакета можно найти на вкладке General (Общие) для основной цели приложения в Xcode.
  • Для Android: используйте applicationId приложения. Значение applicationId можно найти в файле build.gradle(.kts) на уровне приложения.
Версия приложения Для строковых значений:
"точно соответствует",
"содержит",
"не содержит",
"содержит регулярное выражение".

Для числовых значений:
<, <=, =, !=, >, >=

Укажите версии приложения, на которые нужно настроить таргетинг.

Прежде чем использовать это правило, необходимо с помощью правила Идентификатор приложения выбрать приложение Android или Apple, связанное с вашим проектом Firebase.

Для платформ Apple: используйте CFBundleShortVersionString приложения.

Примечание. Убедитесь, что в вашем приложении для Apple используется Firebase Apple platforms SDK версии 6.24.0 или более поздней, поскольку в более ранних версиях CFBundleShortVersionString не отправляется (см. примечания к выпуску).

Для Android: используйте параметр versionName.

Примечание. Операторы сравнения чисел (<, <=, =, !=, >, >=) поддерживают только семантические версии чисел (например, 1.2.3). Они не поддерживают суффиксы предварительных выпусков или дефисы (например, -beta или -rc). Для строк версий с нечисловыми суффиксами или дефисами (например, 1.5-beta) используйте строковые операторы (например, содержит регулярное выражение, содержит или точно соответствует).

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

При использовании оператора содержит регулярное выражение вы можете создавать регулярные выражения в формате RE2. Регулярное выражение может соответствовать всей строке целевой версии или ее части. Вы также можете использовать символы ^ и $, чтобы сопоставлять начало, конец или всю целевую строку.

Номер сборки Для строковых значений:
точно соответствует;
содержит;
не содержит;
регулярное выражение.

Для числовых значений:
=, ≠, >, ≥, <, ≤.

Укажите сборки приложения, на которые нужно настроить таргетинг.

Прежде чем использовать это правило, необходимо выбрать приложение Apple или приложение для Android, связанное с вашим проектом Firebase, с помощью правила Идентификатор приложения.

Этот оператор доступен только для приложений Apple и Android. Соответствует CFBundleVersion для Apple и versionCode для Android. При сравнении строк учитывается регистр.

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

При использовании оператора соответствует регулярному выражению вы можете создавать регулярные выражения в формате RE2. Регулярное выражение может соответствовать всей строке целевой версии или ее части. Вы также можете использовать якоря ^ и $, чтобы сопоставлять начало, конец или всю целевую строку.

Платформа == iOS
Android
Веб
 
Операционная система ==

Укажите операционные системы, на которые нужно настроить таргетинг.

Прежде чем использовать это правило, необходимо с помощью правила Идентификатор приложения выбрать веб-приложение, связанное с вашим проектом Firebase.

Это правило принимает значение true для экземпляра веб-приложения, если операционная система и ее версия соответствуют целевому значению в указанном списке.
Браузер ==

Укажите браузеры, на которые нужно настроить таргетинг.

Прежде чем использовать это правило, необходимо с помощью правила Идентификатор приложения выбрать веб-приложение, связанное с вашим проектом Firebase.

Это правило принимает значение true для заданного экземпляра веб-приложения, если браузер и его версия соответствуют целевому значению в указанном списке.
Тип устройства "равно", "не равно"; мобильное Это правило определяет, является ли устройство, с которого осуществляется доступ к вашему веб-приложению, мобильным или нет (компьютер или консоль). Этот тип правил доступен только для веб-приложений.
Языки относится Выберите один или несколько языков. Это правило принимает значение true для экземпляра приложения, если он установлен на устройстве, на котором используется один из перечисленных языков.
Страна/регион относится Выберите один или несколько регионов или стран. Правило принимает значение true для экземпляра приложения, если он находится в одном из перечисленных регионов или стран. Код страны устройства определяется по IP-адресу устройства в запросе или по коду страны, определенному Firebase Аналитика (если данные Аналитики передаются в Firebase).
Аудитории пользователей Включает хотя бы 1 из Выберите одну или несколько из Google Analytics аудиторий, настроенных для вашего проекта.

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

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

Свойство пользователя Для строковых значений:
содержит;
не содержит;
точно соответствует;
содержит регулярное выражение.

Для числовых значений:
=, ≠, >, ≥, <, ≤.

Примечание. На стороне клиента для свойств пользователя можно задавать только строковые значения. Для условий, в которых используются числовые операторы, Remote Config преобразует значение соответствующего свойства пользователя в целое число или число с плавающей запятой.
Выберите из списка доступных свойств пользователей Google Analytics. Чтобы узнать, как использовать свойства пользователей для настройки приложения под определенные сегменты пользовательской базы, прочитайте статью Remote Config и свойства пользователей.

Дополнительную информацию о свойствах пользователей можно найти в следующих руководствах:

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

При использовании оператора соответствует регулярному выражению вы можете создавать регулярные выражения в формате RE2. Регулярное выражение может соответствовать всей строке целевой версии или ее части. Вы также можете использовать якоря ^ и $, чтобы сопоставлять начало, конец или всю целевую строку.

Примечание. Автоматически регистрируемые свойства пользователей недоступны при создании условий Remote Config.
Пользователь в случайном проценте Ползунок (в консоли Firebase). В REST API используются операторы <=, > и between. 0-100

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

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

Правило будет использовать ключ по умолчанию (в консоли Firebase он называется Изменить начальное значение), если вы не измените начальное значение. Чтобы вернуть правило к использованию ключа по умолчанию, очистите поле Начальное значение.

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

Например, чтобы создать два связанных условия, каждое из которых применяется к неперекрывающимся 5 % пользователей приложения, вы можете настроить одно условие для соответствия проценту от 0 % до 5 %, а другое – для соответствия диапазону от 5 % до 10 %. Чтобы некоторые пользователи случайным образом попадали в обе группы, используйте разные начальные значения для правил в каждом условии.

Импортированный сегмент относится Выберите один или несколько импортированных сегментов. Для этого правила необходимо настроить специальные импортированные сегменты.
Дата и время До, после Указанные дата и время в часовом поясе устройства или в заданном часовом поясе, например "(GMT+11) Сидней". Сравнивает текущее время со временем получения данных на устройстве.
Первый запуск До, после

Таргетинг на пользователей, которые впервые открыли ваше приложение:

  • Выберите Новые пользователи, чтобы настроить таргетинг на пользователей, которые впервые откроют ваше приложение после указанной даты и времени.
  • Выберите Диапазон дат, чтобы настроить таргетинг на пользователей, которые впервые открыли ваше приложение в течение определенного периода до или после указанной даты и времени. Объедините условия До и После, чтобы настроить таргетинг на пользователей в определенном диапазоне дат.

Таргетинг на пользователей по первому запуску доступен после выбора приложения для Android, iOS или веб-приложения.

Требуются следующие SDK:

  • Firebase SDK для Google Analytics
  • Apple platforms SDK версии 9.0.0 или выше, Android SDK версии 21.1.1 или выше (Firebase BoM версии 30.3.0 или выше) и JavaScript SDK версии 12.8.0 или выше.

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

Идентификатор установки относится Укажите один или несколько идентификаторов установки (не более 50). Это правило возвращает значение true для определенной установки, если ее идентификатор есть в списке значений, разделенных запятыми.

Подробнее о том, как получить идентификаторы установки…
Пользователь существует (без оператора) Таргетинг на всех пользователей всех приложений в текущем проекте.

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

Специальный сигнал Для строковых значений:
содержит;
не содержит;
точное соответствие;
содержит регулярное выражение.

Для числовых значений:
=, ≠, >, ≥, <, ≤.

Для значений версий:
=, ≠, >, ≥, <, ≤.

При сравнении строк в этом правиле учитывается регистр. При использовании операторов "точно соответствует", "содержит", "не содержит" или "содержит регулярное выражение" можно выбрать несколько значений. При использовании оператора "содержит регулярное выражение" вы можете создавать регулярные выражения в формате RE2. Регулярное выражение может соответствовать всей строке целевой версии или ее части. Вы также можете использовать якоря ^ и $, чтобы сопоставлять начало, конец или всю целевую строку.

Для клиентских сред поддерживаются следующие типы данных:
  • iOS: int, double
  • Android: int, long, double.
  • Веб-поиск: число

Число, представляющее номер версии, которой должно соответствовать устройство (например, 2.1.0).

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

A/B Testing показателя

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

Например, вы используете Remote Config, чтобы запустить два разных игровых процесса в приложении, и хотите оптимизировать их для покупок в приложении и дохода от рекламы, а также отслеживать стабильность и удержание пользователей для каждого варианта. В этом случае в качестве целевого показателя можно выбрать Общий расчетный доход, поскольку он включает доход от покупок в приложении и доход от рекламы. В качестве других показателей для отслеживания можно добавить следующие:

  • Чтобы отслеживать удержание пользователей за день и за неделю, добавьте показатели Удержание (2–3 дня) и Удержание (4–7 дней).
  • Чтобы сравнить стабильность двух игровых процессов, добавьте показатель Пользователи, не столкнувшиеся со сбоями.
  • Чтобы посмотреть более подробные данные по каждому типу дохода, добавьте показатели Доход от покупок и Расчетный доход от рекламы.

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

Показатели целей

Показатель Описание
Пользователи, у которых не возникали сбои Процент пользователей, у которых не возникало ошибок в приложении, обнаруженных SDK Firebase Crashlytics во время эксперимента.

Примечание. Firebase Crashlytics не поддерживается для веб-приложений.

Расчетный доход от рекламы Расчетный доход от рекламы.
Общий расчетный доход Общая ценность покупок и расчетного дохода от рекламы.
Доход от покупок Общая ценность всех событий purchase и in_app_purchase.
Удержание (1 день) Количество пользователей, которые ежедневно возвращаются в ваше приложение.
Удержание (2–3 дня) Количество пользователей, которые возвращаются в приложение в течение 2–3 дней.
Удержание (4–7 дней) Количество пользователей, которые возвращаются в приложение в течение 4–7 дней.
Удержание (8–14 дней) Количество пользователей, которые вернулись в приложение в течение 8–14 дней.
Удержание (более 15 дней) Количество пользователей, которые вернулись в приложение через 15 или более дней после последнего использования.
first_open Событие Analytics, которое активируется, когда пользователь впервые открывает приложение после установки или переустановки. Используется как часть воронки конверсии.

Другие показатели

Показатель Описание
notification_dismiss Событие Analytics, которое активируется, когда пользователь закрывает уведомление, отправленное Компоновщиком уведомлений (только для Android).
notification_receive Событие Analytics, которое активируется, когда уведомление, отправленное Компоновщиком уведомлений, получено в момент, когда приложение функционирует в фоновом режиме (только для Android).
os_update Событие Analytics, которое регистрируется при обновлении операционной системы устройства. Подробнее об автоматически регистрируемых событиях…

Этот показатель не поддерживается для веб-приложений.

screen_view Событие Analytics, которое отслеживает просмотры экранов в приложении. Подробнее об отслеживании просмотров экранов…
session_start Событие Analytics, которое подсчитывает сеансы пользователей в приложении. Подробнее об автоматически регистрируемых событиях…

Экспорт данных в 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