Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

A/B 테스트로 메시징 실험 만들기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

사용자에게 다가가거나 새로운 마케팅 캠페인을 시작할 때 제대로 하고 있는지 확인하고 싶을 것입니다. A/B 테스트는 사용자 기반의 선택된 부분에 대해 메시지 변형을 테스트하여 최적의 문구 및 프레젠테이션을 찾는 데 도움이 됩니다. 귀하의 목표가 제안에 대한 더 나은 유지 또는 전환인지 여부에 관계없이 A/B 테스트는 통계 분석을 수행하여 메시지 변형이 선택한 목표의 기준을 능가하는지 확인할 수 있습니다.

기준선을 사용하여 기능 변형을 A/B 테스트하려면 다음을 수행하십시오.

  1. 실험을 만듭니다.
  2. 테스트 장치에서 실험을 검증하십시오.
  3. 실험을 관리하세요.

실험 만들기

알림 작성기를 사용하는 실험을 통해 단일 알림 메시지에서 여러 변형을 평가할 수 있습니다.

  1. 실험에서 애널리틱스 데이터에 액세스할 수 있도록 Firebase 콘솔 에 로그인하고 프로젝트에서 Google 애널리틱스가 사용 설정되어 있는지 확인하세요.

    프로젝트를 생성할 때 Google 애널리틱스를 활성화하지 않은 경우 Firebase 콘솔 > 프로젝트 설정 을 사용하여 액세스할 수 있는 통합 탭에서 활성화할 수 있습니다.

  2. Firebase 콘솔 탐색 메뉴의 Engage 섹션에서 A/B Testing 을 클릭합니다.

  3. 실험 만들기 를 클릭한 다음 실험할 서비스에 대한 메시지가 표시되면 알림 을 선택합니다.

  4. 실험에 대한 이름 과 선택적 설명 을 입력하고 다음 을 클릭합니다.

  5. 먼저 실험을 사용하는 앱을 선택하여 타겟팅 필드를 작성합니다. 다음을 포함하는 옵션을 선택하여 실험에 참여하도록 사용자 하위 집합을 타겟팅할 수도 있습니다.

    • 버전: 하나 이상의 앱 버전
    • 사용자 잠재고객: 실험에 포함될 수 있는 사용자를 타겟팅하는 데 사용되는 애널리틱스 잠재고객
    • 사용자 속성: 실험에 포함될 수 있는 사용자를 선택하기 위한 하나 이상의 애널리틱스 사용자 속성
    • 국가/지역: 실험에 포함될 수 있는 사용자를 선택하기 위한 하나 이상의 국가 또는 지역
    • 장치 언어: 실험에 포함될 수 있는 사용자를 선택하는 데 사용되는 하나 이상의 언어 및 로케일
    • 처음 열 때: 앱을 처음 열었을 때를 기준으로 사용자를 타겟팅합니다.
    • 마지막 앱 참여: 앱 에 마지막으로 참여한 시간을 기준으로 사용자 타겟팅
  6. 대상 사용자 비율 설정: 기준선과 실험에서 하나 이상의 변형 간에 균등하게 나누려는 대상 사용자 에서 설정한 기준과 일치하는 앱의 사용자 기반 비율을 선택합니다. 0.01%에서 100% 사이의 백분율이 될 수 있습니다. 백분율은 중복 실험을 포함하여 각 실험에 대해 사용자에게 무작위로 재할당됩니다.

  7. 변형 섹션에서 메시지 입력 텍스트 필드에 기준선 그룹에 보낼 메시지를 입력합니다. 기준선 그룹에 메시지를 보내지 않으려면 이 필드를 비워 둡니다.

  8. (선택사항) 실험에 둘 이상의 대안을 추가하려면 대안 추가 를 클릭합니다. 기본적으로 실험에는 하나의 기준선과 하나의 변형이 있습니다.

  9. (선택사항) 변수 A , 변수 B 등의 이름을 대체할 실험의 각 변수 이름을 입력합니다.

  10. 드롭다운 목록에서 원하는 추가 측정항목과 함께 실험 변형을 평가할 때 사용할 실험의 목표 측정항목을 정의합니다. 이러한 메트릭에는 기본 제공 목표(참여, 구매, 수익, 유지 등), Analytics 전환 이벤트 및 기타 Analytics 이벤트가 포함됩니다.

  11. 메시지 옵션 선택:

    • 배달 날짜: 저장 즉시 실험을 시작하려면 지금 보내기 를 선택하고, 나중에 실험을 시작할 시간을 지정하려면 예약 됨을 선택합니다.
    • 고급 옵션: 실험에 포함된 모든 알림에 대한 고급 옵션을 선택하려면 고급 옵션 을 확장한 다음 나열된 메시지 옵션을 변경합니다.
  12. 검토 를 클릭하여 실험을 저장합니다.

프로젝트당 최대 300개의 실험이 허용되며, 최대 24개의 실행 중인 실험으로 구성될 수 있으며 나머지는 초안 또는 완료됩니다.

테스트 장치에서 실험 검증

각 Firebase 설치에 대해 연결된 FCM 등록 토큰을 검색할 수 있습니다. 이 토큰을 사용하여 앱이 설치된 테스트 기기에서 특정 실험 변형을 테스트할 수 있습니다. 테스트 장치에서 실험을 검증하려면 다음을 수행하십시오.

  1. 다음과 같이 FCM 등록 토큰을 가져옵니다.

    빠른

    Messaging.messaging().token { token, error in
      if let error = error {
        print("Error fetching FCM registration token: \(error)")
      } else if let token = token {
        print("FCM registration token: \(token)")
        self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
      }
    }
    

    목표-C

    [[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
      if (error != nil) {
        NSLog(@"Error getting FCM registration token: %@", error);
      } else {
        NSLog(@"FCM registration token: %@", token);
        self.fcmRegTokenMessage.text = token;
      }
    }];
    

    Java

    FirebaseMessaging.getInstance().getToken()
        .addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
              if (!task.isSuccessful()) {
                Log.w(TAG, "Fetching FCM registration token failed", task.getException());
                return;
              }
    
              // Get new FCM registration token
              String token = task.getResult();
    
              // Log and toast
              String msg = getString(R.string.msg_token_fmt, token);
              Log.d(TAG, msg);
              Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

    Kotlin+KTX

    FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
        if (!task.isSuccessful) {
            Log.w(TAG, "Fetching FCM registration token failed", task.exception)
            return@OnCompleteListener
        }
    
        // Get new FCM registration token
        val token = task.result
    
        // Log and toast
        val msg = getString(R.string.msg_token_fmt, token)
        Log.d(TAG, msg)
        Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
    })

    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());
          }
        });
        

    Unity

    Firebase.Messaging.FirebaseMessaging.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("FCM registration token {0}", task.Result));
        }
      });
    
  2. Firebase 콘솔 탐색 메뉴에서 A/B 테스트 를 클릭합니다.
  3. 초안 을 클릭하고 실험 위로 마우스를 가져간 다음 상황에 맞는 메뉴( )를 클릭한 다음 테스트 장치 관리 를 클릭합니다.
  4. 테스트 장치에 대한 FCM 토큰을 입력하고 해당 테스트 장치로 보낼 실험 변형을 선택합니다.
  5. 앱을 실행하고 선택한 변형이 테스트 장치에서 수신되고 있는지 확인합니다.

실험 관리

원격 구성, 알림 작성기 또는 Firebase 인앱 메시지를 사용하여 실험을 생성하는지 여부에 관계없이 실험을 검증 및 시작하고, 실행되는 동안 실험을 모니터링하고, 실행 중인 실험에 포함되는 사용자 수를 늘릴 수 있습니다.

실험이 완료되면 우승한 변형이 사용하는 설정을 기록한 다음 해당 설정을 모든 사용자에게 롤아웃할 수 있습니다. 또는 다른 실험을 실행할 수 있습니다.

실험 시작

  1. Firebase 콘솔 탐색 메뉴의 Engage 섹션에서 A/B Testing 을 클릭합니다.
  2. 초안 을 클릭한 다음 실험 제목을 클릭합니다.
  3. 앱에 실험에 포함될 사용자가 있는지 확인하려면 초안 세부정보를 확장하고 타겟팅 및 분포 섹션에서 0% 보다 큰 숫자를 확인합니다(예: 기준과 일치하는 사용자의 1% ).
  4. 실험을 변경하려면 수정 을 클릭합니다.
  5. 실험을 시작하려면 실험 시작 을 클릭합니다. 한 번에 프로젝트당 최대 24개의 실험을 실행할 수 있습니다.

실험 모니터링

실험이 한동안 실행되면 진행 상황을 확인하고 지금까지 실험에 참여한 사용자의 결과가 어떻게 보이는지 확인할 수 있습니다.

  1. Firebase 콘솔 탐색 메뉴의 Engage 섹션에서 A/B Testing 을 클릭합니다.
  2. Running 을 클릭한 다음 실험 제목을 클릭하거나 검색합니다. 이 페이지에서 다음을 포함하여 실행 중인 실험에 대해 관찰되고 모델링된 다양한 통계를 볼 수 있습니다.

    • 기준선과의 % 차이: 기준선 과 비교하여 주어진 변형에 대한 측정항목의 개선 정도를 측정합니다. 변수의 값 범위를 기준 값 범위와 비교하여 계산됩니다.
    • 기준선 초과 확률 : 주어진 변형이 선택한 측정항목의 기준선을 초과할 것으로 예상되는 확률입니다.
    • observed_metric per user : 실험 결과를 기반으로 시간 경과에 따라 메트릭 값이 포함될 예측 범위입니다.
    • Total observed_metric : 기준선 또는 변형에 대해 관찰된 누적 값입니다. 이 값은 각 실험 변수의 실적을 측정하는 데 사용되며 개선 , 값 범위 , 기준을 상회할 확률 및 최상의 변수가 될 확률 을 계산하는 데 사용됩니다. 측정 중인 측정항목에 따라 이 열에는 '사용자당 기간', '사용자당 수익', '유지율' 또는 '전환율'이라는 레이블이 지정될 수 있습니다.
  3. 실험이 일정 시간(FCM 및 인앱 메시지의 경우 최소 7일 또는 원격 구성의 경우 14일) 실행된 후 이 페이지의 데이터는 어떤 변형이 '우수'인지 나타냅니다. 일부 측정에는 시각적 형식으로 데이터를 표시하는 막대 차트가 수반됩니다.

모든 사용자에게 실험 실시

실험이 충분히 오래 실행되어 목표 측정항목에 대해 '최우수' 또는 가장 우수한 변형이 있으면 사용자의 100%를 대상으로 실험을 시행할 수 있습니다. 이렇게 하면 앞으로 모든 사용자에게 게시할 변형을 선택할 수 있습니다. 실험에서 확실한 승자가 나오지 않은 경우에도 모든 사용자에게 변형을 출시하도록 선택할 수 있습니다.

  1. Firebase 콘솔 탐색 메뉴의 Engage 섹션에서 A/B Testing 을 클릭합니다.
  2. 완료 됨 또는 실행 중 을 클릭하고 모든 사용자에게 롤아웃할 실험을 클릭하고 상황에 맞는 메뉴( )를 클릭한 다음 변형 롤아웃 을 클릭합니다.
  3. 다음 중 하나를 수행하여 실험을 모든 사용자에게 롤아웃합니다.

    • 알림 작성기 를 사용하는 실험의 경우 롤아웃 메시지 대화상자를 사용하여 실험에 참여하지 않은 나머지 대상 사용자에게 메시지를 보냅니다.
    • 원격 구성 실험의 경우 변형을 선택하여 업데이트할 원격 구성 매개변수 값을 결정하세요. 실험을 생성할 때 정의된 타겟팅 기준이 템플릿의 새 조건으로 추가되어 출시가 실험에서 타겟팅한 사용자에게만 영향을 미치도록 합니다. 원격 구성 에서 검토를 클릭하여 변경 사항을 검토한 후 변경 사항 게시 를 클릭하여 롤아웃을 완료합니다.
    • 인앱 메시지 실험의 경우 대화 상자를 사용하여 독립 실행형 인앱 메시지 캠페인으로 롤아웃해야 하는 변형을 결정합니다. 선택한 후에는 게시하기 전에 변경(필요한 경우)할 수 있도록 FIAM 작성 화면으로 리디렉션됩니다.

실험 확장

실험에서 A/B Testing이 선두를 선언하기에 충분한 사용자를 끌어들이지 못하는 경우 실험의 분포를 늘려 앱 사용자 기반의 더 많은 비율에 도달할 수 있습니다.

  1. Firebase 콘솔 탐색 메뉴의 Engage 섹션에서 A/B Testing 을 클릭합니다.
  2. 수정하려는 실행 중인 실험을 선택합니다.
  3. 실험 개요 에서 상황에 맞는 메뉴( )를 클릭한 다음 실행 중인 실험 수정 을 클릭합니다.
  4. 타겟팅 대화상자에는 현재 실행 중인 실험에 참여하는 사용자의 비율을 늘리는 옵션이 표시됩니다. 현재 백분율보다 큰 숫자를 선택하고 게시 를 클릭합니다. 실험은 지정한 사용자 비율로 푸시됩니다.

실험 복제 또는 중지

  1. Firebase 콘솔 탐색 메뉴의 Engage 섹션에서 A/B Testing 을 클릭합니다.
  2. 완료 됨 또는 실행 중 을 클릭하고 실험 위로 마우스를 가져간 다음 상황에 맞는 메뉴( )를 클릭한 다음 실험 복제 또는 실험 중지 를 클릭합니다.

사용자 타겟팅

다음 사용자 타겟팅 기준을 사용하여 실험에 포함할 사용자를 타겟팅할 수 있습니다.

타겟팅 기준 연산자 메모
버전 포함,
포함되어 있지 않다,
정확히 일치,
정규식 포함
실험에 포함하려는 하나 이상의 앱 버전에 대한 값을 입력합니다.

포함 , 포함 하지 않음 또는 정확히 일치 연산자를 사용할 때 쉼표로 구분된 값 목록을 제공할 수 있습니다.

포함 정규식 연산자를 사용하면 RE2 형식의 정규식을 만들 수 있습니다. 정규식은 대상 버전 문자열의 전체 또는 일부와 일치할 수 있습니다. ^$ 앵커를 사용하여 대상 문자열의 시작, 끝 또는 전체를 일치시킬 수도 있습니다.

사용자 대상 모두 포함,
다음 중 적어도 하나를 포함합니다.
모두 포함하지 않음,
다음 중 하나 이상을 포함하지 않음
실험에 포함될 수 있는 사용자를 타겟팅하려면 하나 이상의 애널리틱스 잠재고객을 선택하세요. Google 애널리틱스 잠재고객을 대상으로 하는 일부 실험은 애널리틱스 데이터 처리 지연 시간 의 영향을 받기 때문에 데이터를 축적하는 데 며칠이 걸릴 수 있습니다. 일반적으로 잠재고객 생성 후 24~48시간 내에 적격 잠재고객에 등록되는 신규 사용자 또는 최근에 생성된 잠재고객에 대해 이러한 지연이 발생할 가능성이 큽니다.
사용자 속성 텍스트:
포함,
포함되어 있지 않다,
정확히 일치,
정규식 포함

숫자의 경우:
<, ≤, =, ≥, >
애널리틱스 사용자 속성은 사용자 속성 값을 선택하기 위한 다양한 옵션과 함께 실험에 포함될 수 있는 사용자를 선택하는 데 사용됩니다.

클라이언트에서는 사용자 속성에 대해 문자열 값만 설정할 수 있습니다. 숫자 연산자를 사용하는 조건의 경우 원격 구성 서비스는 해당 사용자 속성의 값을 정수/부동수로 변환합니다.
포함 정규식 연산자를 사용하면 RE2 형식의 정규식을 만들 수 있습니다. 정규식은 대상 버전 문자열의 전체 또는 일부와 일치할 수 있습니다. ^$ 앵커를 사용하여 대상 문자열의 시작, 끝 또는 전체를 일치시킬 수도 있습니다.
국가/지역 해당 없음 실험에 포함될 수 있는 사용자를 선택하는 데 사용되는 하나 이상의 국가 또는 지역.
언어 해당 없음 실험에 포함될 수 있는 사용자를 선택하는 데 사용되는 하나 이상의 언어 및 로케일.
처음 열다 이상
미만
사이
일 단위로 지정된 앱을 처음 연 시간을 기준으로 사용자를 타겟팅합니다.
마지막 앱 참여 이상
미만
사이
일 단위로 지정된 마지막으로 앱에 참여한 시간을 기준으로 사용자를 타겟팅합니다.

A/B 테스트 지표

실험을 만들 때 가장 좋은 변형을 결정하는 데 사용되는 기본 또는 목표 측정항목을 선택합니다. 또한 각 실험 변형의 실적을 더 잘 이해하고 사용자 유지, 앱 안정성, 인앱 구매 수익과 같이 각 변형에 따라 다를 수 있는 중요한 추세를 추적하는 데 도움이 되는 다른 메트릭을 추적해야 합니다. 실험에서 목표가 아닌 지표를 최대 5개까지 추적할 수 있습니다.

예를 들어 앱에 새로운 인앱 구매를 추가했고 두 가지 다른 "넛지" 메시지의 효과를 비교하고 싶다고 가정해 보겠습니다. 이 경우 가장 높은 인앱 구매 수익을 가져온 알림을 우승 변형으로 나타내기 위해 구매 수익 을 목표 메트릭으로 설정하기로 결정할 수 있습니다. 또한 어떤 변형이 더 많은 향후 전환과 사용자 유지로 이어졌는지 추적하고 싶기 때문에 추적할 기타 측정항목에 다음을 추가할 수 있습니다.

  • 인앱 구매와 광고 수익의 결합이 두 변형 간에 어떻게 다른지 확인하기 위한 예상 총 수익
  • 리텐션(1일) , 리텐션(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 이벤트입니다. 전환 유입경로의 일부로 사용됩니다.

기타 측정항목

미터법 설명
notification_dismiss 알림 작성기에서 보낸 알림이 해제될 때 트리거되는 분석 이벤트입니다(Android만 해당).
알림 수신 앱이 백그라운드에 있는 동안 알림 작성기가 보낸 알림이 수신될 때 트리거되는 분석 이벤트입니다(Android만 해당).
os_update 장치 운영 체제가 새 버전으로 업데이트되는 시기를 추적하는 Analytics 이벤트입니다. 자세한 내용은 자동으로 수집된 이벤트 를 참조하십시오.
screen_view 앱 내에서 본 화면을 추적하는 Analytics 이벤트입니다. 자세한 내용은 화면 조회수 추적 을 참조하십시오.
session_start 앱에서 사용자 세션을 계산하는 애널리틱스 이벤트입니다. 자세한 내용은 자동으로 수집된 이벤트 를 참조하십시오.

BigQuery 데이터 내보내기

BigQuery 에서 A/B 테스트와 관련된 모든 분석 데이터에 액세스할 수 있습니다. BigQuery를 사용하면 BigQuery SQL을 사용하여 데이터를 분석하거나 다른 클라우드 제공업체로 내보내거나 사용자 지정 ML 모델에 데이터를 사용할 수 있습니다. 자세한 내용 은 Firebase에 BigQuery 연결 을 참조하세요.

BigQuery 데이터 내보내기를 최대한 활용하려면 Firebase 프로젝트에서 'Blaze' 종량제 요금제를 채택해야 합니다. BigQuery는 데이터 저장, 스트리밍 삽입, 데이터 쿼리에 대해 요금을 부과합니다. 데이터 로드 및 내보내기는 무료입니다. 자세한 내용은 BigQuery 가격 또는 BigQuery 샌드박스 를 참조하세요.

시작하려면 Firebase 프로젝트가 BigQuery에 연결되어 있는지 확인하세요. 왼쪽 탐색 모음에서 설정 > 프로젝트 설정 을 선택한 다음 통합 > BigQuery > 링크 를 선택합니다. 이 페이지에는 프로젝트의 모든 앱에 대해 BiqQuery 분석 데이터 내보내기를 수행하는 옵션이 표시됩니다.

실험에 대한 분석 데이터를 쿼리하려면:

  1. 활성 실험 목록에서 원하는 실험을 선택하여 실험 결과 페이지를 엽니다.
  2. 실험 개요 창의 컨텍스트 메뉴에서 실험 데이터 쿼리 를 선택합니다(이 옵션은 무료 등급의 프로젝트에는 사용할 수 없음).

    이렇게 하면 검토를 위해 미리 로드된 실험 데이터의 자동 생성 예제 쿼리가 있는 BigQuery 콘솔의 쿼리 작성기가 열립니다. 이 검색어에서 실험은 키에 실험 이름이 있고 값에 실험 변형이 있는 사용자 속성으로 인코딩됩니다.

  3. 쿼리 작성기에서 쿼리 실행을 선택합니다. 결과는 아래쪽 창에 표시됩니다.

BigQuery의 Firebase 데이터는 하루에 한 번만 업데이트되기 때문에 실험 페이지에서 제공되는 데이터가 BigQuery 콘솔에서 제공되는 데이터보다 최신 데이터일 수 있습니다.