Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

使用 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 小時內註冊為合格的受眾,或者是最近創建的受眾

對於遠程配置,這意味著即使用戶在技術上符合受眾條件,如果在執行 `activateFetched` 時 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 控制台中的可用數據更新。