Создание экспериментов Firebase Remote Config с A/B-тестированием

Когда вы используете Firebase Remote Config для развертывания настроек для приложения с активной пользовательской базой, вы хотите убедиться, что делаете это правильно. Вы можете использовать эксперименты A/B-тестирования, чтобы лучше всего определить следующее:

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

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

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

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

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

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

    Если вы не включили Google Analytics при создании проекта, вы можете включить его на вкладке « Интеграции », доступ к которой можно получить, выбрав « » > «Настройки проекта» в консоли Firebase .

  2. В разделе Engage на панели навигации консоли Firebase нажмите A/B Testing .

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

  4. Введите Имя и необязательное Описание для вашего эксперимента и нажмите Далее .

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

    • Версия: одна или несколько версий вашего приложения.
    • Номер сборки: код версии приложения.
    • Языки: один или несколько языков и локалей, используемые для выбора пользователей, которые могут быть включены в эксперимент.
    • Страна/регион: одна или несколько стран или регионов для выбора пользователей, которых следует включить в эксперимент.
    • Аудитория пользователей: аудитории Google Analytics, используемые для таргетинга пользователей, которые могут быть включены в эксперимент.
    • Свойство пользователя: одно или несколько пользовательских свойств Google Analytics для выбора пользователей, которые могут быть включены в эксперимент.
  6. Задайте процент целевых пользователей: введите процент пользовательской базы вашего приложения, соответствующий критериям, установленным в разделе « Целевые пользователи », которые вы хотите равномерно разделить между базовым уровнем и одним или несколькими вариантами в вашем эксперименте. Это может быть любой процент от 0,01% до 100%. Пользователи случайным образом назначаются для каждого эксперимента, включая повторяющиеся эксперименты.

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

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

    • app_install
    • app_remove
    • app_update
    • dynamic_link_first_open
    • first_open
  8. Для целей эксперимента выберите основной показатель для отслеживания и добавьте любые дополнительные показатели из раскрывающегося списка. К ним относятся встроенные цели (покупки, доход, удержание, пользователи без сбоев и т. д.), события-конверсии Analytics и другие события Analytics. Когда закончите, нажмите Далее .

  9. В разделе « Варианты » вы выберете базовый план и хотя бы один вариант для эксперимента. Используйте список « Выбрать или создать новый », чтобы добавить один или несколько параметров для экспериментов. Вы можете создать параметр, который ранее не использовался в консоли Firebase, но он должен существовать в вашем приложении, чтобы иметь какой-либо эффект. Вы можете повторить этот шаг, чтобы добавить в эксперимент несколько параметров.

  10. (необязательно) Чтобы добавить в эксперимент несколько вариантов, нажмите Добавить другой вариант .

  11. Измените один или несколько параметров для конкретных вариантов. Любые неизмененные параметры одинаковы для пользователей, не включенных в эксперимент.

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

  13. Нажмите Проверить , чтобы сохранить эксперимент.

Вам разрешено проводить до 300 экспериментов в одном проекте, в том числе до 24 запущенных экспериментов, а остальные — в виде черновиков или завершенных.

Подтвердите свой эксперимент на тестовом устройстве

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

  1. Получите токен авторизации установки следующим образом:

    Быстрый

    Installations.installations().authTokenForcingRefresh(true, completion: { (result, error) in
      if let error = error {
        print("Error fetching token: \(error)")
        return
      }
      guard let result = result else { return }
      print("Installation auth token: \(result.authToken)")
    })
    

    Цель-C

    [[FIRInstallations installations] authTokenForcingRefresh:true
                                                   completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
      if (error != nil) {
        NSLog(@"Error fetching Installation token %@", error);
        return;
      }
      NSLog(@"Installation auth token: %@", [result authToken]);
    }];
    

    Java

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
            .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
        @Override
        public void onComplete(@NonNull Task<InstallationTokenResult> task) {
            if (task.isSuccessful() && task.getResult() != null) {
                Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
            } else {
                Log.e("Installations", "Unable to get Installation auth token");
            }
        }
    });

    Kotlin+KTX

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */ true)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d("Installations", "Installation auth token: " + task.result?.token)
            } else {
                Log.e("Installations", "Unable to get Installation auth token")
            }
        }

    С++

    firebase::InitResult init_result;
    auto* installations_object = firebase::installations::Installations::GetInstance(
        firebase::App::GetInstance(), &init_result);
    installations_object->GetToken().OnCompletion(
        [](const firebase::Future& future) {
          if (future.status() == kFutureStatusComplete &&
              future.error() == firebase::installations::kErrorNone) {
            printf("Installations Auth Token %s\n", future.result()->c_str());
          }
        });
    

    Единство

    Firebase.Installations.FirebaseInstallations.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Installations token {0}", task.Result));
        }
      });
    
  2. На панели навигации консоли Firebase нажмите A/B Testing .
  3. Нажмите « Черновик » (и/или « Выполняется » для экспериментов Remote Config), наведите указатель мыши на свой эксперимент, щелкните контекстное меню ( ) и выберите « Управление тестовыми устройствами » .
  4. Введите токен авторизации установки для тестового устройства и выберите экспериментальный вариант для отправки на это тестовое устройство.
  5. Запустите приложение и убедитесь, что выбранный вариант поступает на тестовое устройство.

Чтобы узнать больше об установках Firebase, см. раздел Управление установками Firebase .

Управляйте своим экспериментом

Независимо от того, создаете ли вы эксперимент с помощью Remote Config, Notifications composer или Firebase In-App Messaging, вы можете затем проверить и запустить свой эксперимент, отслеживать его во время его выполнения и увеличить количество пользователей, включенных в ваш текущий эксперимент.

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

Начать эксперимент

  1. В разделе Engage на панели навигации консоли Firebase нажмите A/B Testing .
  2. Нажмите « Черновик » и выберите название своего эксперимента.
  3. Чтобы убедиться, что в вашем приложении есть пользователи, которые будут включены в ваш эксперимент, разверните сведения о черновике и проверьте наличие числа, превышающего 0 % , в разделе « Таргетинг и распространение » (например, 1 % пользователей, соответствующих критериям ).
  4. Чтобы изменить эксперимент, нажмите « Изменить » .
  5. Чтобы начать эксперимент, нажмите « Начать эксперимент» . Вы можете запускать до 24 экспериментов в одном проекте одновременно.

Отслеживание эксперимента

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

  1. В разделе Engage на панели навигации консоли Firebase нажмите A/B Testing .
  2. Нажмите Выполняется , а затем щелкните название своего эксперимента. На этой странице вы можете просмотреть различную наблюдаемую и смоделированную статистику вашего текущего эксперимента, в том числе следующие:

    • % отличия от базового уровня : мера улучшения показателя для данного варианта по сравнению с базовым уровнем. Рассчитывается путем сравнения диапазона значений варианта с диапазоном значений базового плана.
    • Вероятность превзойти базовый уровень : расчетная вероятность того, что данный вариант превзойдет базовый уровень для выбранной метрики.
    • observed_metric per user : на основе результатов эксперимента это прогнозируемый диапазон, в который будет попадать значение метрики с течением времени.
    • observed_metric : наблюдаемое кумулятивное значение для базового уровня или варианта. Это значение используется для измерения эффективности каждого варианта эксперимента, а также для расчета Улучшения , Диапазона значений , Вероятности превзойти базовый уровень и Вероятности быть лучшим вариантом . В зависимости от измеряемой метрики этот столбец может быть помечен как «Продолжительность на пользователя», «Доход на пользователя», «Коэффициент удержания» или «Коэффициент конверсии».
  3. После того, как ваш эксперимент продлится некоторое время (не менее 7 дней для FCM и обмена сообщениями в приложении или 14 дней для Remote Config), данные на этой странице показывают, какой вариант, если таковой имеется, является «лидером». Некоторые измерения сопровождаются гистограммой, которая представляет данные в визуальном формате.

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

После того, как эксперимент продлится достаточно долго, чтобы у вас появился «лидер» или выигрышный вариант целевого показателя, вы можете развернуть эксперимент для 100 % пользователей. Это позволяет вам выбрать вариант для публикации для всех пользователей в будущем. Даже если ваш эксперимент не выявил явного победителя, вы все равно можете развернуть вариант для всех своих пользователей.

  1. В разделе Engage на панели навигации консоли Firebase нажмите A/B Testing .
  2. Нажмите « Выполнено » или « Выполняется » , выберите эксперимент, который вы хотите развернуть для всех пользователей, щелкните контекстное меню ( ), а затем нажмите «Развернуть вариант» .
  3. Разверните свой эксперимент для всех пользователей, выполнив одно из следующих действий:

    • Для эксперимента, в котором используется компоновщик уведомлений , используйте диалоговое окно « Развернуть сообщение », чтобы отправить сообщение оставшимся целевым пользователям, которые не участвовали в эксперименте.
    • Для эксперимента Remote Config выберите вариант, чтобы определить, какие значения параметров Remote Config следует обновить. Критерии таргетинга, определенные при создании эксперимента, будут добавлены в качестве нового условия в ваш шаблон, чтобы гарантировать, что развертывание затронет только тех пользователей, на которых нацелен эксперимент. Нажав « Просмотреть» в Remote Config , чтобы просмотреть изменения, нажмите « Опубликовать изменения », чтобы завершить развертывание.
    • Для эксперимента с обменом сообщениями в приложении используйте диалоговое окно, чтобы определить, какой вариант необходимо развернуть как отдельную кампанию обмена сообщениями в приложении. После выбора вы будете перенаправлены на экран создания FIAM, чтобы внести любые изменения (при необходимости) перед публикацией.

Развернуть эксперимент

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

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

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

  1. В разделе Engage на панели навигации консоли Firebase нажмите A/B Testing .
  2. Нажмите « Завершено » или « Выполняется » , наведите указатель мыши на свой эксперимент, откройте контекстное меню ( ), а затем нажмите « Дублировать эксперимент » или «Остановить эксперимент » .

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

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

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

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

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

Аудитория пользователей включает в себя все,
включает по крайней мере один из,
не включает все,
не включает хотя бы один из
Выберите одну или несколько аудиторий Google Analytics, чтобы настроить таргетинг на пользователей, которые могут быть включены в ваш эксперимент. Для некоторых экспериментов, нацеленных на аудиторию Google Analytics, может потребоваться несколько дней для сбора данных, поскольку они подвержены задержке обработки данных Analytics. Вы, скорее всего, столкнетесь с этой задержкой с новыми пользователями, которые обычно регистрируются в подходящих аудиториях через 24–48 часов после создания или в недавно созданных аудиториях .

Для Remote Config это означает, что даже если пользователь технически подходит для аудитории, если Analytics еще не добавила пользователя в аудиторию при выполнении `activateFetched`, пользователь не будет включен в эксперимент.

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

Для чисел:
<, ≤, =, ≥, >
Свойство пользователя Analytics используется для выбора пользователей, которые могут быть включены в эксперимент, с рядом параметров для выбора значений свойств пользователя.

На клиенте вы можете установить только строковые значения для свойств пользователя. Для условий, использующих числовые операторы, служба Remote Config преобразует значение соответствующего свойства пользователя в целое число или число с плавающей запятой.
При использовании оператора regex contains вы можете создавать регулярные выражения в формате RE2 . Ваше регулярное выражение может соответствовать всей строке целевой версии или ее части. Вы также можете использовать привязки ^ и $ для соответствия началу, концу или всей целевой строке.
Страна устройства Н/Д Одна или несколько стран или регионов, используемых для выбора пользователей, которые могут быть включены в эксперимент.
Язык устройства Н/Д Один или несколько языков и локалей, используемых для выбора пользователей, которых можно включить в эксперимент. Этот критерий таргетинга доступен только для Remote Config.
Первый открытый больше, чем
меньше, чем
между
Настройте таргетинг на пользователей на основе того, когда они впервые открыли ваше приложение, в днях. Этот критерий таргетинга доступен только для обмена сообщениями в приложении Firebase.
Последнее взаимодействие с приложением больше, чем
меньше, чем
между
Настройте таргетинг на пользователей на основе того, когда они в последний раз взаимодействовали с вашим приложением (в днях). Этот критерий таргетинга доступен только для обмена сообщениями в приложении Firebase.

Показатели A/B-тестирования

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

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

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

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

Целевые показатели

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

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

Метрика Описание
уведомление_отклонить Событие Analytics, которое запускается при отклонении уведомления, отправленного компоновщиком уведомлений (только для Android).
уведомление_получить Событие Analytics, которое запускается, когда уведомление, отправленное компоновщиком уведомлений, получено, когда приложение находится в фоновом режиме (только для Android).
os_update Событие Analytics, которое отслеживает, когда операционная система устройства обновляется до новой версии. Дополнительные сведения см. в разделе Автоматически собираемые события .
screen_view Событие Analytics, которое отслеживает экраны, просмотренные в вашем приложении. Чтобы узнать больше, см. раздел Отслеживание просмотров экрана .
сеанс_старт Событие Analytics, которое подсчитывает сеансы пользователей в вашем приложении. Дополнительные сведения см. в разделе Автоматически собираемые события .

Экспорт данных BigQuery

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

Чтобы в полной мере воспользоваться преимуществами экспорта данных BigQuery, в проектах Firebase следует использовать тарифный план Blaze с оплатой по факту использования. BigQuery взимает плату за хранение данных, потоковую вставку и запросы к данным. Загрузка и экспорт данных бесплатны. Дополнительные сведения см. в разделе Цены на BigQuery или в тестовой среде BigQuery.

Для начала убедитесь, что ваш проект Firebase связан с BigQuery. Выберите «Настройки» > «Настройки проекта» на левой панели навигации, затем выберите « Интеграции» > «BigQuery» > «Ссылка» . На этой странице отображаются параметры для выполнения экспорта данных аналитики BiqQuery для всех приложений в проекте.

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

  1. В списке активных экспериментов выберите нужный эксперимент, чтобы открыть страницу результатов эксперимента.
  2. В контекстном меню на панели обзора эксперимента выберите Запросить данные эксперимента (этот параметр недоступен для проектов на бесплатном уровне).

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

  3. В компоновщике запросов выберите Выполнить запрос. Результаты отображаются на нижней панели.

Обратите внимание: поскольку данные Firebase в BigQuery обновляются только один раз в день, данные, доступные на странице эксперимента, могут быть более актуальными, чем данные, доступные в консоли BigQuery.