사용자에게 무엇인가를 홍보하거나 새로운 마케팅 캠페인을 시작할 때는 가장 효과적인 방법을 찾아야 합니다. A/B 테스팅은 사용자층을 나누어 서로 다른 메시지를 테스트함으로써 가장 적절한 문구와 표현 방식을 알아내는 데 도움이 됩니다. 유지율 개선, 프로모션의 전환율 상승 등 목표가 무엇이든 간에 A/B 테스팅으로 통계 분석을 실시하여 특정 메시지 대안이 원하는 목표를 기준보다 뛰어나게 달성할 수 있는지 파악할 수 있습니다.
기준을 활용해 여러 기능 대안에 대한 A/B 테스트를 하는 방법은 다음과 같습니다.
- 실험을 만듭니다.
- 테스트 기기에서 실험의 유효성을 검증합니다.
- 실험을 관리합니다.
실험 만들기
Firebase In-App Messaging를 사용하는 실험을 통해 단일 인앱 메시지의 여러 대안을 평가할 수 있습니다.
Firebase Console에 로그인하고 실험에서 Analytics 데이터에 액세스할 수 있도록 Google Analytics가 프로젝트에 사용 설정되어 있는지 확인합니다.
프로젝트를 만들 때 Google Analytics를 사용 설정하지 않았으면 통합 탭(Firebase Console의 > 프로젝트 설정을 사용하여 액세스 가능)에서 사용 설정할 수 있습니다.
Firebase Console 탐색 메뉴의 참여 섹션에서 A/B Testing을 클릭합니다.
실험 만들기를 클릭한 후 실험하려는 서비스를 지정하라는 메시지가 표시되면 인앱 메시지를 선택합니다.
또는 Firebase Console 탐색 메뉴에서 참여를 펼친 후 In-App Messaging을 클릭합니다. 그런 다음 새 실험을 클릭합니다.
실험의 이름 및 설명(선택사항)을 입력하고 다음을 클릭합니다.
실험을 사용할 앱을 먼저 선택하고 타겟팅 입력란을 작성합니다. 다음과 같은 옵션을 선택하여 사용자의 일부만 실험에 참여하도록 타겟팅할 수도 있습니다.
- 버전: 하나 이상의 앱 버전입니다.
- 잠재 사용자: 실험에 포함될 수 있는 사용자를 타겟팅하는 데 사용되는 Analytics 잠재고객입니다.
- 사용자 속성: 실험에 포함될 수 있는 사용자를 선택하는 Analytics 사용자 속성 하나 이상입니다.
- 국가/지역: 실험에 포함될 수 있는 사용자를 선택하는 하나 이상의 국가 또는 지역입니다.
- 기기 언어: 실험에 포함될 수 있는 사용자를 선택하는 데 사용되는 하나 이상의 언어입니다.
- 최초 실행: 사용자가 앱을 처음으로 실행한 시간을 기준으로 사용자를 타겟팅합니다.
- 마지막 앱 참여: 사용자가 앱에 마지막으로 참여한 시간을 기준으로 사용자를 타겟팅합니다.
대상 사용자 비율 설정: 대상 사용자에 설정한 기준에 맞는 앱 사용자층을 기준 및 하나 이상의 실험 대안 간에 균등하게 배분할 비율을 선택합니다. 0.01~100% 사이의 백분율을 입력할 수 있습니다. 백분율은 중복 실험을 포함하여 실험마다 사용자에게 무작위로 다시 할당됩니다.
대안 섹션에서 일반 인앱 메시지 캠페인에 사용하는 메시지 디자인 인터페이스를 사용하여 기준 그룹에 전송할 기준 인앱 메시지를 구성합니다.
실험에 대안을 추가하려면 대안 추가를 클릭합니다. 실험에는 기본적으로 1개의 기준과 1개의 대안이 포함됩니다.
(선택사항) 대안마다 구체적인 이름을 입력합니다.
(선택사항) 대안 섹션 상단에서 대안 비교 버튼을 클릭하여 하나 이상의 메시지 대안을 기준 메시지와 나란히 비교합니다.
드롭다운 목록에서 사용할 추가 측정항목과 함께 실험 대안을 평가할 때 사용할 실험의 목표 측정항목을 정의합니다. 여기에는 기본 목표(참여도, 구매, 수익, 유지율 등), Analytics 전환 이벤트, 기타 Analytics 이벤트가 포함됩니다.
실험 일정을 구성합니다.
- 실험의 시작일 및 종료일을 설정합니다.
- 모든 대안에서 인앱 메시지가 트리거되는 방식을 설정합니다.
검토를 클릭하여 실험을 저장합니다.
프로젝트당 최대 300개의 실험이 허용되며 최대 24개까지 진행 중인 실험으로, 나머지는 초안 또는 완료로 구성할 수 있습니다.
테스트 기기에서 실험 검증
Firebase를 설치할 때마다 설치와 연결된 설치 인증 토큰을 가져올 수 있습니다. 이 토큰을 사용하면 앱이 설치된 테스트 기기에서 특정 실험 대안을 테스트할 수 있습니다. 테스트 기기에서 실험의 유효성을 검증하는 방법은 다음과 같습니다.
- 다음과 같이 설치 인증 토큰을 가져옵니다.
Swift
do { let result = try await Installations.installations() .authTokenForcingRefresh(true) print("Installation auth token: \(result.authToken)") } catch { print("Error fetching token: \(error)") }
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") } }
- Firebase Console 탐색 메뉴에서 A/B 테스팅을 클릭합니다.
- 초안(또는 원격 구성 실험인 경우 실행 중)을 클릭하고 마우스를 실험 위에 가져간 다음 컨텍스트 메뉴(more_vert)를 클릭하고 테스트 기기 관리를 클릭합니다.
- 테스트 기기의 설치 인증 토큰을 입력하고 테스트 기기로 전송할 실험 대안을 선택합니다.
- 앱을 실행하고 선택한 대안이 테스트 기기에 수신되는지 확인합니다.
Firebase 설치에 대한 자세한 내용은 Firebase 설치 관리를 참조하세요.
실험 관리
Remote Config, 알림 작성기 또는 Firebase In-App Messaging 중 무엇으로 실험을 만드는지에 관계없이 실험을 검증 및 시작하고 실험이 진행되는 동안 실험을 모니터링하며 진행 중인 실험에 포함된 사용자 수를 늘릴 수 있습니다.
실험이 끝나면 우수한 대안에 사용된 설정을 기록해 두고 이후에 모든 사용자에게 이 설정을 적용하거나 다른 실험을 진행할 수 있습니다.
실험 시작
- Firebase Console 탐색 메뉴의 참여 섹션에서 A/B Testing을 클릭합니다.
- 초안을 클릭하고 실험 제목을 클릭합니다.
- 실험에 포함될 사용자가 앱에 있는지 검증하려면 초안 세부정보를 펼치고 타겟팅 및 분포에서 0%보다 큰 숫자가 있는지 확인합니다(예: 기준과 일치하는 사용자 1%).
- 실험을 변경하려면 수정을 클릭합니다.
- 실험을 시작하려면 실험 시작을 클릭합니다. 한 번에 프로젝트당 최대 24개의 실험을 실행할 수 있습니다.
실험 모니터링
실험이 일정 시간 진행되면 실험의 진행 상황을 확인하고 지금까지 실험에 참여한 사용자의 결과가 어떤지 살펴볼 수 있습니다.
- Firebase Console 탐색 메뉴의 참여 섹션에서 A/B Testing을 클릭합니다.
실행 중을 클릭하고 실험 제목을 클릭하거나 검색합니다. 이 페이지에서는 다음을 포함하여 진행 중인 실험에 대한 다양한 관찰 및 모델링된 통계를 확인할 수 있습니다.
- 기준과의 차이(%): 기준과 비교하여 특정 대안의 측정항목 개선도를 측정한 값입니다. 대안의 값 범위를 기준의 값 범위와 비교하여 계산합니다.
- 기준 초과 가능성: 특정 대안이 선택한 측정항목의 기준을 초과할 것으로 예측되는 확률입니다.
- 사용자당 observed_metric: 실험 결과를 기준으로 시간 경과에 따라 측정항목 값이 속할 것으로 예상되는 범위입니다.
- 전체 observed_metric: 기준 또는 대안에서 관찰된 누적 값입니다. 이 값은 각 실험 대안의 효과를 측정하고 개선, 값 범위, 기준 초과 가능성, 최적의 대안이 될 확률을 계산하는 데 사용됩니다. 대상 측정항목에 따라 이 열에 '사용자당 기간', '사용자당 수익', '유지율', '전환율' 등의 라벨을 지정할 수 있습니다.
일정 시간(FCM 및 In-App Messaging의 경우 최소 7일, Remote Config의 경우 14일) 동안 실험이 진행된 후 이 페이지의 데이터에 '최우수 대안'(있는 경우)이 표시됩니다. 일부 측정항목은 데이터를 시각적으로 표현하는 막대 그래프가 함께 제공됩니다.
모든 사용자에게 실험 적용
목표 측정항목을 기준으로 가장 우수한 대안이 판명될 때까지 실험이 충분히 진행되었으면 이를 사용자 전체에 적용할 수 있습니다. 이렇게 하여 앞으로 모든 사용자에게 게시할 대안을 선택할 수 있습니다. 실험을 통해 우열이 명확히 가려지지 않은 경우에도 대안 중 하나를 모든 사용자에게 적용할 수 있습니다.
- Firebase Console 탐색 메뉴의 참여 섹션에서 A/B Testing을 클릭합니다.
- 완료됨 또는 실행 중을 클릭하고 모든 사용자에게 적용할 실험을 클릭한 다음 컨텍스트 메뉴( )대안 적용을 클릭합니다.
다음 중 하나를 수행하여 실험을 모든 사용자에게 적용합니다.
- 실험에서 알림 작성기를 사용하는 경우 메시지 전파 대화상자를 사용하여 이전에 실험에 참여하지 않았던 나머지 타겟팅 사용자에게 메시지를 보냅니다.
- Remote Config 실험의 경우 대안을 선택하여 업데이트할 Remote Config 파라미터 값을 결정합니다. 실험을 만들 때 정의된 타겟팅 기준은 템플릿에 새 조건으로 추가되어 실험에서 타겟팅되는 사용자에게만 출시되도록 합니다. 원격 구성에서 검토를 클릭하여 변경사항을 검토한 후 변경사항 게시를 클릭하여 출시를 완료합니다.
- In-App Messaging 실험의 경우 대화상자를 사용하여 독립형 In-App Messaging 캠페인으로 출시해야 하는 대안을 결정합니다. 선택하면 Firebase 인앱 메시지 작성 화면으로 리디렉션되며 필요한 경우 게시하기 전에 변경할 수 있습니다.
실험 확장
A/B Testing에서 실험에 참여하는 사용자 수가 부족하여 우열을 가릴 수 없으면 실험의 분포를 늘려 앱 사용자층에서 실험에 참가하는 비율을 높이면 됩니다.
- Firebase Console 탐색 메뉴의 참여 섹션에서 A/B Testing을 클릭합니다.
- 수정하려는 실행 중인 실험을 선택합니다.
- 실험 개요에서 컨텍스트 메뉴( )를 클릭한 후 실행 중인 실험 수정을 클릭합니다.
- 타겟팅 대화상자에는 실행 중인 실험에 있는 사용자의 비율을 높일 수 있는 옵션이 표시됩니다. 현재 백분율보다 큰 숫자를 선택하고 게시를 클릭합니다. 그러면 지정한 비율의 사용자에게 실험이 적용됩니다.
실험 복제 또는 중지
- Firebase Console 탐색 메뉴의 참여 섹션에서 A/B Testing을 클릭합니다.
- 완료됨 또는 실행 중을 클릭하고 마우스 포인터를 실험 위에 가져간 다음 컨텍스트 메뉴( )를 클릭하고 실험 복제 또는 실험 중지를 클릭합니다.
사용자 타겟팅
다음과 같은 사용자 타겟팅 기준을 사용하여 실험에 포함할 사용자를 타겟팅할 수 있습니다.
타겟팅 기준 | 연산자 | 값 | 참고사항 |
---|---|---|---|
버전 | 포함, 제외, 정확히 일치함, 정규식 포함 |
실험에 포함할 하나 이상의 앱 버전 값을 입력합니다. |
포함, 제외 또는 정확히 일치함 연산자를 사용하는 경우 쉼표로 구분된 값 목록을 제공할 수 있습니다. 정규식 포함 연산자를 사용하면 RE2 형식의 정규 표현식을 만들 수 있습니다. 정규 표현식은 타겟 버전 문자열의 일부 또는 전부와 일치할 수 있습니다. ^ 및 $ 앵커를 사용하여 타겟 문자열의 시작, 끝 또는 전체와 일치시킬 수도 있습니다. |
잠재 사용자 | 다음을 모두 포함, 다음 중 1개 이상 포함, 다음을 모두 포함하지 않음, 다음 중 최소 1개를 포함하지 않음 |
실험에 포함될 수 있는 사용자를 타겟팅하는 Analytics 잠재고객을 하나 이상 선택합니다. | Google Analytics 잠재고객을 타겟팅하는 일부 실험에서는 Analytics 데이터 처리 지연 시간이 발생하므로 데이터가 누적되는 데 며칠이 걸릴 수 있습니다. 일반적으로 생성 후 24~48시간 이내에 적격 잠재고객으로 등록된 신규 사용자나 최근에 생성된 잠재고객에게 이러한 지연이 발생할 가능성이 가장 높습니다. |
사용자 속성 | 텍스트:
포함, 제외, 정확히 일치함, 정규식 포함 숫자: <, ≤, =, ≥, > |
Analytics 사용자 속성은 실험에 포함될 수 있는 사용자를 선택하는 데 사용되며 다양한 옵션으로 사용자 속성 값을 선택할 수 있습니다.
클라이언트에서는 사용자 속성에 문자열 값만 설정할 수 있습니다. 숫자 연산자를 사용하는 조건의 경우 Remote Config 서비스는 해당 사용자 속성 값을 정수/부동 소수점 수로 변환합니다. |
정규식 포함 연산자를 사용하면 RE2 형식의 정규 표현식을 만들 수 있습니다. 정규 표현식은 타겟 버전 문자열의 일부 또는 전부와 일치할 수 있습니다. ^ 및 $ 앵커를 사용하여 타겟 문자열의 시작, 끝 또는 전체와 일치시킬 수도 있습니다. |
국가/지역 | N/A | 실험에 포함될 수 있는 사용자를 선택하는 데 사용되는 하나 이상의 국가 또는 지역입니다. | |
언어 | N/A | 실험에 포함될 수 있는 사용자를 선택하는 데 사용되는 하나 이상의 언어입니다. | |
최초 실행 |
초과
미만 사이 |
사용자가 앱을 처음으로 실행한 날짜를 기준으로 사용자를 타겟팅하며 일 단위로 지정됩니다. | |
마지막 앱 참여 |
초과
미만 사이 |
사용자가 앱을 마지막으로 사용한 날짜를 기준으로 사용자를 타겟팅하며 일 단위로 지정됩니다. |
측정항목 A/B Testing개
실험을 만들 때는 가장 우수한 대안을 판단하는 데 사용할 기본 또는 목표 측정항목을 선택합니다. 또한 각 실험 대안의 성과를 더 잘 파악하고 사용자 유지, 앱 안정성, 인앱 구매 수익 등 대안마다 차이가 있을 수 있는 중요한 추세를 추적하는 데 도움이 되는 다른 측정항목도 추적해야 합니다. 실험에서 목표 이외의 측정항목을 최대 5개까지 추적할 수 있습니다.
예를 들어 앱에 새 인앱 구매를 추가했고 두 가지 '유도' 메시지의 효과를 비교하려고 한다고 가정해 보겠습니다. 이 경우 가장 높은 인앱 구매 수익을 가져온 알림이 가장 실적이 좋은 대안으로 표시되도록 하기 위해 구매 수익을 목표 측정항목으로 설정하기로 결정할 수 있습니다. 또한 향후 더 많은 전환과 사용자 유지를 유도한 대안을 추적하기 위해 추적할 기타 측정항목에 다음을 추가할 수 있습니다.- 예상 총수익: 인앱 구매와 광고 수익을 합산한 값이 두 대안 간에 어떻게 다른지 확인합니다.
- 유지(1일), 유지(2~3일), 유지(4~7일): 일일/주간 사용자 유지 추적
다음 표에서는 목표 측정항목과 기타 측정항목이 계산되는 방식을 상세히 확인할 수 있습니다.
목표 측정항목
측정항목 | 설명 |
---|---|
비정상 종료가 발생하지 않은 사용자 | 실험 중에 앱에서 Firebase Crashlytics SDK가 탐지한 오류를 경험하지 않은 사용자의 비율입니다. |
예상 광고 수익 | 예상 광고 순익입니다. |
예상 총수익 | 구매 및 추정 광고 수익의 합산 값입니다. |
구매 수익 | 모든 purchase 및 in_app_purchase 이벤트의 합산 값입니다.
|
유지(1일) | 앱을 매일 다시 사용하는 사용자 수입니다. |
유지(2~3일) | 2~3일 이내에 앱을 다시 사용하는 사용자 수입니다. |
유지(4~7일) | 4~7일 이내에 앱을 다시 사용하는 사용자 수입니다. |
유지(8~14일) | 8~14일 이내에 앱을 다시 사용하는 사용자 수입니다. |
유지(15일 이상) | 앱을 마지막으로 사용하고 15일 이상 경과한 후에 앱을 다시 사용하는 사용자 수입니다. |
first_open | 사용자가 앱을 설치하거나 재설치한 후 처음으로 실행할 때 트리거되는 Analytics 이벤트입니다. 전환 유입경로의 일부로 사용됩니다. |
기타 측정항목
측정항목 | 설명 |
---|---|
notification_dismiss | 알림 작성기에서 보낸 알림을 닫을 때 트리거되는 Analytics 이벤트입니다(Android 전용). |
notification_receive | 알림 작성기에서 보낸 알림이 백그라운드 앱에 수신될 때 트리거되는 Analytics 이벤트입니다(Android 전용). |
os_update | 기기 운영체제가 새 버전으로 업데이트되는 시점을 추적하는 Analytics 이벤트입니다. 자세한 내용은 자동 수집 이벤트를 참조하세요. |
screen_view | 앱의 화면 조회를 추적하는 Analytics 이벤트입니다. 자세한 내용은 화면 조회수 추적을 참조하세요. |
session_start | 앱의 사용자 세션 수를 계산하는 Analytics 이벤트입니다. 자세한 내용은 자동으로 수집되는 이벤트를 참조하세요. |