获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

使用 A/B 测试创建 Firebase 远程配置实验

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

当您使用 Firebase 远程配置为具有活跃用户群的应用程序部署设置时,您需要确保正确设置。您可以使用 A/B 测试实验来最好地确定以下内容:

  • 实现功能以优化用户体验的最佳方式。很多时候,应用程序开发人员直到他们的应用程序在应用程序商店中的评分下降时才知道他们的用户不喜欢新功能或更新的用户体验。 A/B 测试可以帮助衡量您的用户是否喜欢新的功能变体,或者他们是否更喜欢当前存在的应用程序。此外,将您的大多数用户保留在基线组中可确保您的大多数用户群可以继续使用您的应用,而不会对其行为或外观进行任何更改,直到实验结束。
  • 针对业务目标优化用户体验的最佳方式。有时您正在实施产品更改以最大化收入或保留等指标。通过 A/B 测试,您可以设置业务目标,Firebase 会执行统计分析以确定变体是否在您选择的目标方面优于基准。

要使用基线 A/B 测试功能变体,请执行以下操作:

  1. 创建你的实验。
  2. 在测试设备上验证您的实验。
  3. 管理您的实验。

创建实验

远程配置实验可让您评估一个或多个远程配置参数的多个变体。

  1. 登录Firebase 控制台并验证您的项目中是否启用了 Google Analytics,以便实验可以访问 Analytics 数据。

    如果您在创建项目时未启用 Google Analytics,则可以在集成选项卡上启用它,您可以使用Firebase 控制台中的 >项目设置访问该选项卡。

  2. Firebase 控制台导航栏的参与部分,点击A/B 测试

  3. 单击创建实验,然后在提示您要试验的服务时选择远程配置

  4. 为您的实验输入名称和可选描述,然后单击下一步

  5. 填写定位字段,首先选择使用您的实验的应用程序。您还可以通过单击,然后从以下列表中选择选项来定位您的用户子集以参与您的实验:

    • 版本:您的应用的一个或多个版本
    • 内部版本号:应用程序的版本代码
    • 语言:用于选择可能包含在实验中的用户的一种或多种语言和区域设置
    • 国家/地区:一个或多个国家或地区,用于选择应包含在实验中的用户
    • 用户受众:用于定位可能包含在实验中的用户的分析受众
    • 用户属性:一个或多个 Google Analytics(分析)用户属性,用于选择可能包含在实验中的用户
  6. 设置目标用户百分比:输入与目标用户下设置的条件相匹配的应用用户群百分比,您希望在基线和实验中的一个或多个变体之间平均分配。这可以是 0.01% 到 100% 之间的任何百分比。用户被随机分配到每个实验,包括重复实验。

  7. (可选)设置激活事件以确保只有首先触发某些 Analytics 事件的用户的数据才会被计入您的实验。请注意,与您的定位参数匹配的所有用户都将收到远程配置实验值,但只有那些触发激活事件的用户才会包含在您的实验结果中。

    为确保实验有效,请确保您选择的事件您的应用激活获取的配置值之后发生。此外,不能使用以下事件,因为它们总是在激活获取的值之前发生:

    • app_install
    • app_remove
    • app_update
    • dynamic_link_first_open
    • first_open
  8. 对于实验的目标,选择要跟踪的主要指标,然后从下拉列表中添加任何所需的附加指标。这些包括内置目标(购买、收入、保留、无崩溃用户等)、分析转换事件和其他分析事件。完成后,单击下一步

  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)")
    })
    

    Objective-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")
            }
        }

    C++

    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 测试
  3. 单击Draft (和/或Running for Remote Config 实验),将鼠标悬停在您的实验上,单击上下文菜单 ( ),然后单击Manage test devices
  4. 输入测试设备的安装身份验证令牌,然后选择要发送到该测试设备的实验变体。
  5. 运行应用程序并确认在测试设备上接收到所选变体。

要详细了解 Firebase 安装,请参阅管理 Firebase 安装

管理您的实验

无论您是使用 Remote Config、Notifications composer 还是 Firebase In-App Messaging 创建实验,您都可以验证和启动实验,在实验运行时对其进行监控,并增加正在运行的实验中包含的用户数量。

实验完成后,您可以记下获胜变体使用的设置,然后将这些设置推广给所有用户。或者,您可以运行另一个实验。

开始实验

  1. Firebase 控制台导航栏的参与部分,点击A/B 测试
  2. 点击草稿,然后点击您的实验标题。
  3. 要验证您的应用是否有将包含在实验中的用户,请展开草稿详细信息并在“定位和分发”部分检查大于0%的数字(例如, 1% 的用户符合条件)。
  4. 要更改您的实验,请点击Edit
  5. 要开始您的实验,请点击Start Experiment 。每个项目一次最多可以运行 24 个实验。

监控实验

实验运行一段时间后,您可以查看其进度,并查看迄今为止参与实验的用户的结果。

  1. Firebase 控制台导航栏的参与部分,点击A/B 测试
  2. 单击Running ,然后单击或搜索您的实验的标题。在此页面上,您可以查看有关正在运行的实验的各种观察和建模统计数据,包括以下内容:

    • 与基线的百分比差异:与基线相比,给定变体的度量改进的度量。通过将变体的值范围与基线的值范围进行比较来计算。
    • 超过基线的概率:给定变体超过所选指标的基线的估计概率。
    • observed_metric per user :根据实验结果,这是度量值随时间落入的预测范围。
    • Total observed_metric :观察到的基线或变体的累积值。该值用于衡量每个实验变体的执行情况,并用于计算改进值范围击败基线概率和成为最佳变体的概率。根据所衡量的指标,此列可能标记为“每位用户的持续时间”、“每位用户的收入”、“留存率”或“转化率”。
  3. 在您的实验运行一段时间后(FCM 和应用内消息至少 7 天或远程配置至少 14 天),此页面上的数据表明哪个变体(如果有)是“领先者”。一些测量伴随着一个条形图,以可视格式显示数据。

向所有用户推出实验

在实验运行足够长的时间后,您有一个“领先者”或获胜变体作为您的目标指标,您可以将实验推广到 100% 的用户。这允许您选择一个变体以发布给所有用户。即使您的实验没有创造出明显的赢家,您仍然可以选择向所有用户推出一个变体。

  1. Firebase 控制台导航栏的参与部分,点击A/B 测试
  2. 单击CompletedRunning ,单击要向所有用户推出的实验,单击上下文菜单 ( ),然后单击Roll out variant
  3. 通过执行以下操作之一向所有用户推出您的实验:

    • 对于使用Notifications composer的实验,使用Roll out message对话框将消息发送给未参与实验的剩余目标用户。
    • 对于远程配置实验,选择一个变体以确定要更新哪些远程配置参数值。创建实验时定义的定位条件将作为新条件添加到您的模板中,以确保推出仅影响实验所定位的用户。在远程配置中单击查看以查看更改后,单击发布更改以完成部署。
    • 对于应用内消息实验,使用对话框确定需要作为独立应用内消息活动推出的变体。选择后,您将被重定向到 FIAM 撰写屏幕,以便在发布前进行任何更改(如果需要)。

展开实验

如果您发现某个实验没有为 A/B 测试带来足够的用户来宣布领导者,您可以增加实验的分布以覆盖更大比例的应用用户群。

  1. Firebase 控制台导航栏的参与部分,点击A/B 测试
  2. 选择要编辑的正在运行的实验。
  3. 实验概述中,单击上下文菜单 ( ),然后单击编辑运行实验
  4. Targeting对话框显示一个选项,用于增加当前运行实验中的用户百分比。选择一个大于当前百分比的数字,然后单击发布。实验将被推送到您指定的用户百分比。

复制或停止实验

  1. Firebase 控制台导航栏的参与部分,点击A/B 测试
  2. 单击已完成或正在运行,将鼠标悬停在您的实验上,单击上下文菜单 ( ),然后单击复制实验停止实验

用户定位

您可以使用以下用户定位标准来定位要包含在实验中的用户。

定位条件操作员笔记
版本包含,
不含,
完全匹配,
包含正则表达式
为您要包含在实验中的一个或多个应用版本输入一个值。

当使用任何contains不包含完全匹配运算符时,您可以提供以逗号分隔的值列表。

使用contains regex运算符时,您可以创建RE2格式的正则表达式。您的正则表达式可以匹配全部或部分目标版本字符串。您还可以使用^$锚来匹配目标字符串的开头、结尾或全部内容。

用户受众包括所有,
包括以下至少一项,
不包括所有,
不包括至少一项
选择一个或多个 Google Analytics(分析)受众群体来定位可能包含在您的实验中的用户。一些针对 Google Analytics(分析)受众的实验可能需要几天时间来积累数据,因为它们会受到 Analytics(分析)数据处理延迟的影响。对于新用户,您最有可能遇到这种延迟,这些新用户通常在创建后 24-48 小时内注册为合格的受众,或者是最近创建的受众

对于远程配置,这意味着即使用户在技术上符合受众条件,如果在执行 fetchAndActivate() 时 Analytics 尚未将该用户添加到受众中,则该用户不会被包含在实验中。

用户属性对于文本:
包含,
不含,
完全匹配,
包含正则表达式

对于数字:
<, ≤, =, ≥, >
Analytics 用户属性用于选择可能包含在实验中的用户,并提供一系列用于选择用户属性值的选项。

在客户端上,您只能为用户属性设置字符串值。对于使用数字运算符的条件,远程配置服务将相应用户属性的值转换为整数/浮点数。
使用contains regex运算符时,您可以创建RE2格式的正则表达式。您的正则表达式可以匹配全部或部分目标版本字符串。您还可以使用^$锚来匹配目标字符串的开头、结尾或全部内容。
国家/地区不适用用于选择可能包含在实验中的用户的一个或多个国家或地区。
语言不适用用于选择可能包含在实验中的用户的一种或多种语言和区域设置。
首次打开多于
少于
之间
根据用户首次打开您的应用的时间来定位用户,以天为单位。此定位条件仅适用于 Firebase 应用内消息。
上次应用参与度多于
少于
之间
根据用户上次与您的应用互动的时间(以天为单位)来定位用户。此定位条件仅适用于 Firebase 应用内消息。

A/B 测试指标

创建实验时,您可以选择一个主要指标或目标指标,用于确定获胜的变体。您还应该跟踪其他指标,以帮助您更好地了解每个实验变体的性能,并跟踪每个变体可能不同的重要趋势,例如用户留存率、应用稳定性和应用内购买收入。您最多可以在实验中跟踪五个非目标指标。

例如,假设您正在使用远程配置在您的应用中启动两个不同的游戏流程,并希望针对应用内购买和广告收入进行优化,但您还想跟踪每个变体的稳定性和用户留存率。在这种情况下,您可以考虑选择估计总收入作为您的目标指标,因为它包括应用内购买收入和广告收入,然后,对于要跟踪的其他指标,您可以添加以下内容:

  • 要跟踪您的每日和每周用户留存率,请添加Retention (2-3 days)Retention (4-7 days)
  • 要比较两个游戏流程之间的稳定性,请添加Crash-free users
  • 要查看每种收入类型的更详细视图,请添加购买收入估算的广告收入

下表提供了有关如何计算目标指标和其他指标的详细信息。

目标指标

公制描述
无崩溃用户实验期间 Firebase Crashlytics SDK 检测到的未在您的应用中遇到错误的用户百分比。
预计广告收入估算的广告收入。
预计总收入购买价值和预计广告收入的总和。
采购收入所有purchasein_app_purchase事件的总价值。
保留(1 天)每天返回您的应用的用户数量。
保留(2-3 天)在 2-3 天内返回您的应用的用户数。
保留(4-7 天)在 4-7 天内返回您的应用的用户数。
保留(8-14 天)在 8-14 天内返回您的应用的用户数量。
保留(15 天以上)在上次使用您的应用 15 天或更长时间后返回您的应用的用户数量。
first_open当用户在安装或重新安装应用后首次打开应用时触发的 Analytics 事件。用作转化漏斗的一部分。

其他指标

公制描述
notification_dismiss当通知编辑器发送的通知被解除时触发的 Analytics 事件(仅限 Android)。
通知接收一个 Analytics 事件,当应用处于后台时收到通知编写器发送的通知时触发(仅限 Android)。
os_update跟踪设备操作系统何时更新到新版本的 Analytics 事件。要了解更多信息,请参阅自动收集的事件
screen_view跟踪在您的应用程序中查看的屏幕的分析事件。要了解更多信息,请参阅跟踪屏幕浏览量
session_start统计应用中用户会话的 Analytics 事件。要了解更多信息,请参阅自动收集的事件

BigQuery 数据导出

您可以在BigQuery中访问与您的 A/B 测试相关的所有分析数据。 BigQuery 允许您使用 BigQuery SQL 分析数据,将其导出到另一个云提供商,或将数据用于您的自定义 ML 模型。如需了解详情,请参阅将 BigQuery 链接到 Firebase

为了充分利用 BigQuery 数据导出,Firebase 项目应采用“Blaze”即用即付定价计划。 BigQuery 对存储数据、流​​式插入和查询数据收费。加载和导出数据是免费的。请参阅BigQuery 定价BigQuery 沙盒了解更多信息。

首先,请确保您的 Firebase 项目已链接到 BigQuery。从左侧导航栏中选择Settings > Project Settings ,然后选择Integrations > BigQuery > Link 。此页面显示为项目中的所有应用程序执行 BiqQuery 分析数据导出的选项。

要查询实验的分析数据:

  1. 从您的活动实验列表中,选择所需的实验以打开实验结果页面。
  2. 实验概览窗格中的上下文菜单中,选择查询实验数据(此选项不适用于免费层上的项目)。

    这将打开 BigQuery 控制台的查询编辑器,其中包含预先加载的实验数据自动生成示例查询以供您查看。在此查询中,您的实验被编码为用户属性,其中实验名称在键中,实验变体在值中。

  3. 在查询编辑器中,选择运行查询。结果显示在下部窗格中。

请注意,由于 BigQuery 中的 Firebase 数据每天仅更新一次,因此实验页面中的可用数据可能比 BigQuery 控制台中的可用数据更新。