Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

使用A / B測試創建Firebase遠程配置實驗

當您更新應用程序並使用Firebase Remote Config將其推送到具有活躍用戶群的應用程序時,您需要確保正確使用它。您可能不確定以下幾點:

  • 實現功能以優化用戶體驗的最佳方法。直到他們的應用在應用商店中的評級下降之前,應用開發人員常常不知道他們的用戶不喜歡新功能或更新的用戶體驗。 A / B測試可以幫助評估您的用戶是否喜歡新的功能變體,或者他們是否喜歡當前存在的應用程序。此外,將大多數用戶歸為對照組,可確保大多數用戶群可以繼續使用您的應用,而無需對應用的行為或外觀進行任何更改,直到實驗結束。
  • 為業務目標優化用戶體驗的最佳方法。有時您正在實施產品更改,以最大化收益或保留率等指標。通過A / B測試,您可以設置業務目標,然後Firebase進行統計分析,以確定某個變體是否優於所選目標的對照組。

要與對照組進行A / B測試功能變體,請執行以下操作:

  1. 創建實驗。
  2. 在測試設備上驗證實驗。
  3. 管理實驗。

創建實驗

遠程配置實驗使您可以評估一個或多個遠程配置參數的多個變體。

  1. 登錄Firebase,更新數據共享設置 ,並確保啟用了數據共享。沒有數據共享,您的實驗將無法訪問分析數據。
  2. Firebase控制台導航欄上,展開增長 ,然後點擊A / B測試
  3. 單擊“ 創建實驗” ,然後在系統提示您提供要使用的服務時選擇“遠程配置”。
  4. 輸入實驗的名稱和可選說明 ,然後點擊下一步
  5. 填寫“ 定位”字段,首先選擇使用實驗的應用。您還可以通過選擇以下一個或多個選項來定位一部分用戶以參與實驗:

    • 版本:您的應用程序的一個或多個版本
    • 使用者對象: Analytics(分析)使用者過去曾指定實驗中可能包含的使用者
    • 用戶屬性:一個或多個Google Analytics(分析)用戶屬性,用於選擇實驗中可能包含的用戶
    • 預測:通過機器學習預測的參與特定行為的用戶組
    • 國家/地區:一個或多個國家或地區,用於選擇實驗中可能包含的用戶
    • 設備語言:一種或多種語言和語言環境,用於選擇實驗中可能包含的用戶
  6. 設置目標用戶百分比:輸入與您希望在對照組和實驗中的一個或多個變體之間平均分配的“ 目標用戶”下設置的條件相匹配的應用程序用戶群的百分比。這可以是0.01%到100%之間的任何百分比。用戶被隨機分配到每個實驗,包括重複的實驗。

  7. (可選)設置一個激活事件,以確保您的實驗中僅計入首次觸發某些Google Analytics(分析)事件的用戶,然後單擊“ 下一步”

  8. 對於實驗的目標 ,選擇要跟踪的主要指標,然後從下拉列表中添加任何所需的其他指標。這些包括內置目標(參與度,購買,收入,保留率等),Analytics轉換事件和其他Analytics(分析)事件。完成後,單擊“ 下一步”

  9. 在“ 變體”部分中,您將為實驗選擇一個對照組和至少一個變體。使用選擇或創建新列表添加一個或多個參數進行試驗。您可以創建一個Firebase控制台以前未使用過的參數,但該參數必須存在於您的應用中才能生效。您可以重複此步驟以將多個參數添加到實驗中。

  10. (可選)要向您的實驗添加多個變體,請點擊添加另一變體

  11. 更改特定變體的一個或多個參數。對於未包含在實驗中的用戶,任何不變的參數都是相同的。

  12. 點擊查看以保存實驗。

每個項目最多允許您進行300個實驗,其中最多可以包含24個正在運行的實驗,其餘的則作為草稿或已完成。

在測試設備上驗證實驗

對於每個Firebase安裝,您可以檢索與其關聯的Firebase安裝身份驗證令牌。您可以使用此令牌在安裝了應用的測試設備上測試特定的實驗變體。要在測試設備上驗證實驗,請執行以下操作:

  1. 獲取Firebase安裝身份驗證令牌,如下所示:

    迅速

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

    物鏡

    [[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]);
    }];
    

    爪哇

    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* instance_id_object = firebase::instance_id::InstanceId::GetInstanceId(
        firebase::App::GetInstance(), &init_result);
    instance_id_object->GetToken().OnCompletion(
        [](const firebase::Future<std::string>& future) {
          if (future.status() == kFutureStatusComplete &&
              future.error() == firebase::instance_id::kErrorNone) {
            printf("Instance ID Token %s\n", future.result()->c_str());
          }
        });
    

    統一

    Firebase.InstanceId.FirebaseInstanceId.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Instance ID Token {0}", task.Result));
        }
      });
    
  2. Firebase控制台導航欄上,單擊A / B測試
  3. 單擊草稿 (和/或為遠程配置實驗運行 ),將鼠標懸停在實驗上,單擊上下文菜單( ),然後單擊管理測試設備
  4. 輸入測試設備的Firebase安裝身份驗證令牌,然後選擇要發送到該測試設備的實驗版本。
  5. 運行應用程序,並確認測試設備上已接收到所選的變體。

要了解有關Firebase安裝的更多信息,請參閱管理Firebase安裝

管理實驗

無論您是使用Remote Config,Notifications作曲器還是Firebase應用內消息創建實驗,您都可以驗證並啟動實驗,在實驗運行時對其進行監視,並增加正在運行的實驗中包含的用戶數量。

實驗完成後,您可以記錄獲勝版本使用的設置,然後將這些設置推廣給所有用戶。或者,您可以運行另一個實驗。

開始實驗

  1. Firebase控制台導航欄上,展開增長 ,然後點擊A / B測試
  2. 點擊草稿 ,然後點擊實驗標題。
  3. 要驗證您的應用是否包含將要包含在實驗中的用戶,請在“ 定位和分發”部分中檢查數字是否大於0% (例如, 符合條件的用戶中有1% )。
  4. 要更改實驗,請點擊編輯
  5. 要開始實驗,請點擊開始實驗 。每個項目一次最多可以運行24個實驗。

監控實驗

實驗運行了一段時間後,您可以檢查其進度,並查看到目前為止參與實驗的用戶的結果。

  1. Firebase控制台導航欄上,單擊“ 增長” ,然後單擊“ A / B測試”
  2. 點擊運行 ,然後點擊實驗標題。在此頁面上,您可以查看有關正在運行的實驗的各種統計信息,包括目標指標和其他指標。對於每個指標,可以使用以下信息:

    • 改進 :衡量給定變量與基準(或對照組)相比的改進。通過將變體的值範圍與基線的值範圍進行比較來計算。
    • 超過基準的概率:給定變體超出所選指標的基準的估計概率。
    • 最佳變體的可能性:對於所選指標,給定變體擊敗其他變體的估計概率。
    • 每位用戶的價值 :根據實驗結果,這是指標值隨時間下降的預測範圍。
    • 總值 :對照組或變異體的觀察到的累積值。該值用於衡量每個實驗變體的效果,並用於計算改進值範圍超出 基線的 概率以及成為最佳變體的概率 。根據要衡量的指標,此列可能會標記為“每位用戶的持續時間”,“保留率”或“轉化率”。
  3. 要增加實驗中包含的用戶數,請點擊增加分配 ,然後選擇增加的百分比以將更多符合條件的用戶添加到實驗中。

  4. 實驗運行一段時間後(對於FCM和應用內消息傳遞,至少需要7天,對於遠程配置,至少需要14天),此頁面上的數據會指出哪個版本(如果有)是“領導者”。某些測量伴隨有條形圖,以可視格式顯示數據。

向所有用戶推出實驗

實驗運行了足夠長的時間後,您就可以針對目標指標獲得“領導者”或獲勝變體,然後可以將實驗推廣到100%的用戶。這使您可以選擇一個變體發布給所有前進的用戶。即使您的實驗並未創造出明顯的贏家,您仍然可以選擇向所有用戶推出一個變體。

  1. Firebase控制台導航欄上,單擊“ 增長” ,然後單擊“ A / B測試”
  2. 點擊完成或正在運行 ,單擊要向所有用戶推出的實驗,單擊上下文菜單( ),然後單擊推出變體
  3. 通過執行以下操作之一,向所有用戶推廣您的實驗:

    • 對於使用Notifications作曲器的實驗,請使用“轉出消息”對話框將消息發送給不屬於該實驗的其餘目標用戶。
    • 對於遠程配置實驗,請使用該對話框來確定要為所有用戶更改的遠程配置參數值。
    • 對於應用內消息傳遞實驗,請使用該對話框確定哪些變量需要作為獨立的應用程序內消息傳遞活動推出。選擇後,您將被重定向到FIAM撰寫屏幕,以在發布之前進行任何更改(如果需要)。

展開實驗

如果您發現某個實驗沒有吸引足夠的用戶進行A / B測試來宣布領導者,則可以增加實驗的分佈範圍,以達到該應用程序用戶群的更大比例。

  1. Firebase控制台導航欄上,單擊“ 增長” ,然後單擊“ A / B測試”
  2. 點擊運行 ,將鼠標懸停在實驗上,點擊上下文菜單( ),然後點擊增加分佈
  3. 控制台顯示一個帶有選項的對話框,用於增加當前正在運行的實驗中的用戶百分比。輸入一個大於當前百分比的數字,然後單擊發送 。實驗將按您指定的用戶百分比推出。

複製或停止實驗

  1. Firebase控制台導航欄上,單擊“ 增長” ,然後單擊“ A / B測試”
  2. 點擊完成運行 ,將鼠標懸停在您的實驗上,點擊上下文菜單( ),然後點擊複製停止

用戶定位

您可以使用以下用戶定位條件來定位要包含在實驗中的用戶。

定位標準運營商注意
包含
不含,
完全匹配
包含正則表達式
輸入要包含在實驗中的一個或多個應用版本的值。

當使用任何contains不包含完全匹配運算符時,可以提供一個用逗號分隔的值列表。

使用contains regex運算符時,可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$定位符來匹配目標字符串的開頭,結尾或整個字符串。

用戶受眾包括所有
包括以下至少一項:
不包括所有
不包含以下至少一項
選擇一個或多個Google Analytics(分析)受眾群體以定位可能包含在您的實驗中的用戶。
用戶屬性 對於文字:
包含
不含,
完全匹配
包含正則表達式

對於數字:
<,≤,=,≥,>
Google Analytics(分析)用戶屬性用於選擇可能包含在實驗中的用戶,以及用於選擇用戶屬性值的一系列選項。

在客戶端上,您只能為用戶屬性設置字符串值。對於使用數字運算符的條件,“遠程配置”服務將相應用戶屬性的值轉換為整數/浮點數。
使用contains regex運算符時,可以創建RE2格式的正則表達式。您的正則表達式可以匹配全部或部分目標版本字符串。您還可以使用^$定位符來匹配目標字符串的開頭,結尾或整個字符串。
預測不適用指定由Firebase預測定義的用戶組-例如,可能停止使用您的應用程序的用戶或可能進行應用程序內購買的用戶。選擇由Firebase預測工具定義的值之一。如果某個選項不可用,則可能需要通過訪問Firebase控制台的“預測”部分來選擇加入Firebase預測。
設備國家不適用用於選擇可能包含在實驗中的用戶的一個或多個國家或地區。
裝置語言不適用一種或多種語言和語言環境,用於選擇實驗中可能包含的用戶。 此定位條件僅適用於遠程配置。
第一次開放多於
少於
之間
根據用戶首次打開您的應用(以天為單位)定位目標用戶。 此定位條件僅適用於Firebase應用內消息傳遞。
上次應用互動多於
少於
之間
根據用戶上一次與您的應用互動的時間(以天為單位)來定位用戶。 此定位條件僅適用於Firebase應用內消息傳遞。

A / B測試指標

創建實驗時,您可以選擇一個用於比較實驗變體的指標,還可以選擇其他指標進行跟踪,以幫助您更好地理解每個實驗變體並檢測任何重大副作用(例如應用程序崩潰)。下表提供有關如何計算目標指標和其他指標的詳細信息。

目標指標

公制描述
保留(1天) 每天返回您的應用的用戶數。
保留(2-3天) 2-3天內返回您的應用的用戶數。
保留(4-7天) 在4-7天內返回您的應用的用戶數。
保留(8-14天) 在8到14天內返回到您的應用的用戶數。
保留(超過15天) 上次使用您的應用15天或更長時間後返回您的應用的用戶數。
通知已開啟跟踪用戶是否打開Notifications作曲家發送的通知。
採購收入所有總價值ecommerce_purchasein_app_purchase事件。
AdMob估算收入來自AdMob的估算收入。
預計總收入購買價值和AdMob估算收入的總和。
first_open 當用戶在安裝或重新安裝應用程序後首次打開該應用程序時觸發的Analytics事件。用作轉化渠道的一部分。
notification_open 一個Analytics事件,當用戶打開Notifications作曲家發送的通知時觸發。用作轉化渠道的一部分。

其他指標

公制描述
無崩潰的用戶實驗期間,Firebase Crashlytics SDK檢測到未在您的應用程序中遇到錯誤的用戶所佔的百分比。
notification_dismiss 當由Notifications作曲家發送的通知被關閉時觸發的Analytics事件(僅適用於Android)。
notification_receive 當應用程序在後台(僅適用於Android)時,當收到Notifications作曲家發送的通知時觸發的Analytics事件。
os_update 一個Analytics事件,用於跟踪設備操作系統何時更新到新版本。要了解更多信息,請參閱自動收集事件
screen_view 一個Analytics(分析)事件,用於跟踪您在應用中查看的屏幕。要了解更多信息,請參閱跟踪屏幕視圖
session_start 一個Analytics(分析)事件,用於統計您應用中的用戶會話。要了解更多信息,請參閱自動收集事件
user_engagement 當您的應用程序位於前台時,會定期觸發的Analytics(分析)事件。要了解更多信息,請參閱自動收集事件

BigQuery數據導出

您可以在BigQuery中訪問與A / B測試相關的所有分析數據。 BigQuery允許您使用BigQuery SQL分析數據,將其導出到其他雲提供商或將數據用於自定義ML模型。有關更多信息,請參閱將BigQuery鏈接到Firebase

為了充分利用BigQuery數據導出功能,Firebase項目應採用“ Blaze”即用即付的定價計劃。 BigQuery負責存儲數據,流插入和查詢數據。加載和導出數據是免費的。有關更多信息,請參見BigQuery定價BigQuery沙盒

首先,請確保您的Firebase項目已鏈接到BigQuery。從左側導航欄中選擇設置>項目設置 ,然後選擇集成> BigQuery>鏈接 。該頁面顯示用於為項目中的所有應用執行BiqQuery分析數據導出的選項。

要查詢實驗的分析數據:

  1. 活動的實驗列表中,選擇所需的實驗以打開實驗結果頁面。
  2. 從“ 實驗”概述窗格的上下文菜單中,選擇“在BigQuery中查看” (此選項不適用於免費層上的項目)。

    這會打開BigQuery控制台的查詢撰寫器,並自動生成示例數據的示例查詢,供您查看。在此查詢中,您的實驗被編碼為用戶屬性,鍵中為實驗名稱,值中為實驗變體。

  3. 在查詢編輯器中,選擇“運行查詢”。結果顯示在下部窗格中。

請注意,由於BigQuery中的Firebase數據每天僅更新一次,因此與BigQuery控制台中的可用數據相比,實驗頁面中的可用數據可能是最新的。