使用 A/B 測試建立 Firebase 遠端設定實驗

當您使用 Firebase Remote Config 為具有活躍用戶群的應用程式部署設定時,您需要確保正確無誤。您可以使用 A/B 測試實驗來最好地確定以下內容:

  • 實施功能以優化使用者體驗的最佳方式。很多時候,應用程式開發人員直到他們的應用程式在應用程式商店中的評分下降後才知道他們的用戶不喜歡新功能或更新的用戶體驗。 A/B 測試可以幫助衡量您的用戶是否喜歡新的功能變體,或者他們是否喜歡現有的應用程式。另外,將大多數用戶保留在基準組中可以確保大多數用戶群可以繼續使用您的應用程序,而不會對其行為或外觀進行任何更改,直到實驗結束。
  • 優化使用者體驗以實現業務目標的最佳方式。有時,您會實施產品變更以最大限度地提高收入或保留率等指標。透過 A/B 測試,您可以設定業務目標,Firebase 會執行統計分析,以確定變體是否優於您所選目標的基準。

若要使用基線對功能變體進行 A/B 測試,請執行以下操作:

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

創建一個實驗

遠端配置實驗可讓您評估一個或多個遠端配置參數的多個變體。

  1. 登入Firebase 控制台並驗證您的專案中是否啟用了 Google Analytics(分析),以便實驗能夠存取 Analytics 資料。

    如果您在建立專案時未啟用 Google Analytics,則可以在「整合」標籤上啟用它,您可以使用Firebase 控制台中的 > 「專案設定」來存取該標籤。

  2. Firebase 控制台導覽選單的Engage部分中,按一下A/B 測試

  3. 按一下「建立實驗」 ,然後在提示您選擇要實驗的服務時選擇「遠端設定」

  4. 輸入實驗的名稱和可選說明,然後按一下「下一步」

  5. 填寫“定位”字段,首先選擇使用您的實驗的應用程式。您也可以透過點擊,然後從以下清單中選擇選項來定位一部分使用者參與您的實驗:

    • 版本:您的應用程式的一個或多個版本
    • 內部版本號:應用程式的版本號
    • 語言:用於選擇可能包含在實驗中的使用者的一種或多種語言和區域設置
    • 國家/地區:一個或多個國家或地區,用於選擇應納入實驗的用戶
    • 使用者受眾:用於定位可能包含在實驗中的使用者的分析受眾
    • 使用者屬性:一個或多個 Analytics 使用者屬性,用於選擇可能包含在實驗中的用戶
    • 首次開啟:根據用戶第一次開啟您的應用程式的時間來定位用戶

      選擇 Android 或 iOS 應用程式後,即可依首次開啟時間定位使用者。以下遠端配置 SDK 版本支援它:Apple 平台 SDK v9.0.0+ 和 Android SDK v21.1.1+ (Firebase BoM v30.3.0+)。

      在第一次開放事件期間,也必須在客戶端啟用分析。

  6. 設定目標使用者的百分比:輸入與您希望在實驗中的基準和一個或多個變體之間平均劃分的目標使用者下設定的條件相符的應用程式使用者群的百分比。該百分比可以是 0.01% 到 100% 之間的任意百分比。使用者被隨機分配到每個實驗,包括重複實驗。

  7. (可選)設定啟動事件,以確保只有首次觸發某些 Analytics 事件的使用者的資料才會計入您的實驗中。請注意,與您的定位參數相符的所有使用者都將收到遠端配置實驗值,但只有那些觸發啟動事件的使用者才會包含在您的實驗結果中。

    為了確保實驗有效,請確保您選擇的事件在您的應用程式啟動所獲得的配置值之後發生。此外,不能使用以下事件,因為它們總是在啟動獲取的值之前發生:

    • app_install
    • app_remove
    • app_update
    • dynamic_link_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)")
    })
    

    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

    val forceRefresh = true
    FirebaseInstallations.getInstance().getToken(forceRefresh)
        .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(forceRefresh: true).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. 按一下草稿(和/或執行遠端設定實驗),將滑鼠懸停在實驗上,按一下上下文選單 ( ),然後按一下管理測試裝置
  4. 輸入測試設備的安裝身份驗證令牌,然後選擇要傳送到該測試設備的實驗變體。
  5. 運行應用程式並確認測試設備正在接收所選變體。

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

管理您的實驗

無論您是使用遠端設定、通知編輯器或 Firebase 應用程式內訊息建立實驗,您都可以驗證並啟動實驗、在實驗執行時間監控實驗,並增加正在執行的實驗中包含的使用者數量。

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

開始實驗

  1. Firebase 控制台導覽選單的Engage部分中,按一下A/B 測試
  2. 按一下草稿,然後按一下實驗的標題。
  3. 若要驗證您的應用程式是否包含將包含在您的實驗中的用戶,請展開草稿詳細資訊並在「定位和分發」部分中檢查是否有大於0%的數字(例如, 1% 的用戶符合資格)。
  4. 若要更改您的實驗,請按一下“編輯”
  5. 要開始實驗,請按一下“開始實驗” 。每個項目一次最多可以運行 24 個實驗。

監控實驗

實驗運行一段時間後,您可以檢查其進度,並查看迄今為止參與實驗的使用者的結果。

  1. Firebase 控制台導覽選單的Engage部分中,按一下A/B 測試
  2. 按一下「執行」 ,然後按一下或搜尋實驗的標題。在此頁面上,您可以查看有關正在運行的實驗的各種觀察到的和建模的統計數據,包括以下內容:

    • 與基線的差異百分比:與基線相比,給定變異體的指標改善的衡量。透過將變異體的值範圍與基線的值範圍進行比較來計算。
    • 擊敗基線的機率:給定變體擊敗所選指標的基線的估計機率。
    • observed_metric per user :根據實驗結果,這是指標值隨著時間的推移將落入的預測範圍。
    • Total observed_metric :基線或變異的觀察累積值。該值用於衡量每個實驗變體的執行情況,並用於計算改進值範圍擊敗基線的機率成為最佳變體的機率。根據測量的指標,此列可能被標記為「每個用戶的持續時間」、「每個用戶的收入」、「保留率」或「轉換率」。
  3. 在您的實驗運行一段時間後(FCM 和應用程式內訊息傳遞至少 7 天,遠端配置至少 14 天),此頁面上的資料會指示哪個變體(如果有)是「領先者」。有些測量結果附有長條圖,以視覺化格式呈現資料。

向所有用戶推出實驗

當實驗運行足夠長的時間,您的目標指標有了「領先者」或獲勝變體後,您可以向 100% 的用戶發布該實驗。這使您可以選擇要發佈給所有使用者的變體。即使您的實驗沒有產生明顯的勝利者,您仍然可以選擇向所有用戶發布變體。

  1. Firebase 控制台導覽選單的Engage部分中,按一下A/B 測試
  2. 按一下「已完成」「正在運行」 ,按一下要發佈給所有使用者的實驗,按一下上下文功能表 ( )以推出變體
  3. 透過執行以下操作之一向所有使用者推出您的實驗:

    • 對於使用通知編輯器的實驗,請使用轉出訊息對話方塊將訊息傳送給未參與實驗的其餘目標使用者。
    • 對於遠端配置實驗,選擇一個變體以決定要更新哪些遠端配置參數值。建立實驗時定義的定位條件將作為新條件新增至模板中,以確保推出僅影響實驗所定位的使用者。按一下「遠端配置」中的「檢視」以查看變更後,按一下「發布變更」以完成部署。
    • 對於應用程式內訊息傳遞實驗,使用該對話方塊來確定需要將哪個變體作為獨立的應用程式內訊息傳遞活動推出。選擇後,您將被重定向到 FIAM 撰寫螢幕,以便在發布之前進行任何更改(如果需要)。

展開實驗

如果您發現某個實驗沒有為 A/B 測試帶來足夠的用戶來宣布領先者,則可以增加實驗的分發範圍,以覆蓋應用程式用戶群的更大比例。

  1. Firebase 控制台導覽選單的Engage部分中,按一下A/B 測試
  2. 選擇您要編輯的正在執行的實驗。
  3. 實驗概述中,按一下上下文功能表 ( ),然後按一下編輯正在執行的實驗
  4. 「目標」對話方塊顯示一個選項,用於增加正在運行的實驗中的使用者百分比。選擇一個大於目前百分比的數字,然後按一下「發布」 。實驗將推送至您指定的使用者百分比。

重複或停止實驗

  1. Firebase 控制台導覽選單的Engage部分中,按一下A/B 測試
  2. 按一下「已完成」或「正在運行」 ,將指標停留在實驗上,按一下上下文功能表 ( ),然後按一下「複製實驗」「停止實驗」

使用者定位

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

目標標準操作員筆記
版本包含,
不含,
完全匹配,
包含正規表示式
輸入您想要包含在實驗中的一個或多個應用程式版本的值。

當使用任何包含不包含完全符合運算子時,您可以提供以逗號分隔的值清單。

使用contains 正規表示式運算子時,您可以建立RE2格式的正規表示式。您的正規表示式可以符合全部或部分目標版本字串。您也可以使用^$錨點來匹配目標字串的開頭、結尾或整個。

使用者受眾包括所有,
至少包括以下之一,
不包括全部,
不包括至少一項
選擇一個或多個 Analytics 受眾群體來定位可能包含在您的實驗中的使用者。一些針對 Google Analytics(分析)受眾群體的實驗可能需要幾天的時間來累積數據,因為它們會受到 Analytics(分析)數據處理延遲的影響。新用戶最有可能遇到這種延遲,這些新用戶通常會在創建後 24-48 小時內註冊到合格受眾群體中,或是最近創建的受眾群體

對於遠端配置,這意味著即使使用者在技術上符合受眾資格,如果在執行「fetchAndActivate()」時 Analytics 尚未將使用者新增至受眾中,則該使用者將不會包含在實驗中。

使用者屬性對於文字:
包含,
不含,
完全匹配,
包含正規表示式

對於數字:
<、≤、=、≥、>
Analytics 使用者屬性用於選擇可能包含在實驗中的用戶,並提供一系列用於選擇使用者屬性值的選項。

在用戶端上,您只能設定使用者屬性的字串值。對於使用數位運算子的條件,遠端配置服務會將對應使用者屬性的值轉換為整數/浮點型。
使用contains 正規表示式運算子時,您可以建立RE2格式的正規表示式。您的正規表示式可以符合全部或部分目標版本字串。您也可以使用^$錨點來匹配目標字串的開頭、結尾或整個。
國家/地區不適用用於選擇可能包含在實驗中的使用者的一個或多個國家或地區。
語言不適用用於選擇可能包含在實驗中的使用者的一種或多種語言和區域設定。
首次開放

根據用戶第一次打開您的應用程式來定位用戶:

  • 選擇「新使用者」以定位在指定的未來日期和時間之後首次開啟您的應用程式的使用者。
  • 選擇時間範圍以定位在您指定的日期和時間之前或之後的範圍內首次開啟您的應用程式的使用者。結合之前之後條件來定位特定時間範圍內的使用者。

選擇 Android 或 iOS 應用程式後,即可使用首次開啟進行的使用者定位。目前以下遠端配置 SDK 版本支援它:Apple 平台 SDK v9.0.0+ 和 Android SDK v21.1.1+ (Firebase BoM v30.3.0+)。

在第一次開放事件期間,也必須在客戶端啟用分析。

A/B 測試指標

建立實驗時,您選擇一個主要指標或目標指標,用於確定獲勝變體。您還應該追蹤其他指標,以幫助您更好地了解每個實驗變體的性能,並追蹤每個變體可能不同的重要趨勢,例如用戶保留率、應用穩定性和應用程式內購買收入。您可以在實驗中追蹤最多五個非目標指標。

例如,假設您使用遠端設定在應用程式中啟動兩個不同的遊戲流程,並希望針對應用程式內購買和廣告收入進行最佳化,但您還希望追蹤每個變體的穩定性和使用者保留率。在這種情況下,您可以考慮選擇估計總收入作為目標指標,因為它包括應用程式內購買收入和廣告收入,然後,對於要追蹤的其他指標,您可以添加以下內容:

  • 若要追蹤每日和每週的使用者保留率,請新增保留期(2-3 天)保留期(4-7 天)
  • 為了比較兩個遊戲流程之間的穩定性,請增加無崩潰用戶
  • 若要查看每種收入類型的更詳細視圖,請新增購買收入預估廣告收入

下表提供了有關如何計算目標指標和其他指標的詳細資訊。

目標指標

公制描述
無崩潰用戶在實驗期間,Firebase Crashlytics SDK 會偵測到您的應用程式中未遇到錯誤的使用者百分比。
預計廣告收入預估廣告收入。
預計總收入購買價值和估計廣告收入的綜合價值。
採購收入所有purchasein_app_purchase事件的總價值。
保留(1 天)每天返回您的應用程式的用戶數量。
保留(2-3天) 2-3 天內返回您的應用程式的用戶數量。
保留(4-7 天) 4-7 天內返回您的應用程式的用戶數量。
保留(8-14 天) 8-14 天內返回您的應用程式的用戶數量。
保留(15 天以上)在上次使用您的應用程式 15 天或更長時間後返回該應用程式的使用者數量。
首先打開當使用者安裝或重新安裝應用程式後首次開啟應用程式時觸發的 Analytics 事件。用作轉換漏斗的一部分。

其他指標

公制描述
通知關閉當通知編輯器發送的通知被忽略時觸發的 Analytics 事件(僅限 Android)。
通知接收當應用程式在背景時收到通知編輯器發送的通知時觸發的 Analytics 事件(僅限 Android)。
作業系統更新追蹤裝置作業系統何時更新到新版本的 Analytics 事件。要了解更多信息,請參閱自動收集的事件
螢幕視圖追蹤在您的應用程式中查看的螢幕的 Analytics 事件。要了解更多信息,請參閱跟踪螢幕視圖
會話開始對應用程式中的使用者會話進行計數的 Analytics 事件。要了解更多信息,請參閱自動收集的事件

BigQuery 資料匯出

您可以在BigQuery中存取與 A/B 測試相關的所有分析資料。 BigQuery 可讓您使用 BigQuery SQL 分析資料、將其匯出到其他雲端供應商,或將資料用於自訂機器學習模型。請參閱將 BigQuery 連結到 Firebase以了解更多資訊。

為了充分利用 BigQuery 資料匯出,Firebase 專案應採用「Blaze」即用即付定價計畫。 BigQuery 對儲存資料、串流插入和查詢資料收費。載入和匯出資料是免費的。請參閱BigQuery 定價BigQuery 沙盒以了解更多資訊。

首先,請確保您的 Firebase 專案已連結到 BigQuery。從左側導覽功能表中選擇「設定」>「專案設定」 ,然後選擇「整合」>「BigQuery」>「連結」 。此頁面顯示用於為專案中的所有應用程式執行 BiqQuery 分析資料匯出的選項。

要查詢實驗的分析數據:

  1. 活動實驗清單中,選擇實驗以開啟實驗結果頁面。
  2. 實驗概述窗格中的上下文功能表中,選擇查詢實驗資料(此選項不適用於免費圖層上的項目)。

    這將開啟 BigQuery 控制台的查詢編輯器,其中包含預先載入的自動產生的實驗資料範例查詢以供您查看。在此查詢中,您的實驗被編碼為使用者屬性,其中實驗名稱位於鍵中,實驗變體位於值中。

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

請注意,由於 BigQuery 中的 Firebase 資料每天僅更新一次,因此實驗頁面中的可用資料可能比 BigQuery 控制台中的可用資料更新。