다음을 통해 공유


첫 번째 실험 만들기 및 실행

이 연습에서는 다음을 수행합니다.

  • 파트너 센터에서 앱 버튼의 텍스트 및 색을 나타내는 여러 원격 변수를 정의하는 실험 프로젝트를 만듭니다.
  • 원격 변수 값을 검색하고 이 데이터를 사용하여 버튼의 배경색을 변경하며 보기 및 변환 이벤트 데이터를 다시 파트너 센터에 기록하는 코드를 사용하여 앱을 만듭니다.
  • 프로젝트에서 실험을 만들어 앱 버튼의 배경색을 변경하면 버튼 클릭 수가 증가했는지 여부를 테스트합니다.
  • 앱을 실행하여 실험 데이터를 수집합니다.
  • 파트너 센터에서 실험 결과를 검토하고, 앱의 모든 사용자가 사용할 수 있도록 설정할 변형을 선택하고, 실험을 완료합니다.

파트너 센터를 사용하여 A/B 테스트의 개요를 보려면 A/B 테스트로 앱 실험 실행을 참조하세요.

필수 조건

이 연습을 수행하려면 파트너 센터 계정이 있어야 하며 A/B 테스트로 앱 실험 실행에서 설명한 대로 개발 컴퓨터를 구성해야 합니다.

파트너 센터에서 원격 변수로 프로젝트 만들기

  1. 파트너 센터에 로그인합니다.
  2. 파트너 센터에 실험을 만드는 데 사용할 앱이 이미 있는 경우 파트너 센터에서 앱을 선택합니다. 파트너 센터에 아직 앱이 없는 경우 이름을 예약하여 새 앱을 만든 다음 파트너 센터에서 해당 앱을 선택합니다.
  3. 탐색 창에서 서비스를 클릭한 다음 실험을 클릭합니다.
  4. 다음 페이지의 프로젝트 섹션에서 새 프로젝트 버튼을 클릭합니다.
  5. 새 프로젝트 페이지에서 새 프로젝트의 버튼 클릭 실험의 이름을 입력합니다.
  6. 원격 변수 섹션을 확장하고 변수 추가를 네 번 클릭합니다. 이제 4개의 빈 변수 행이 있어야 합니다.
  • 첫 번째 행에서 변수 이름에 buttonText를 입력하고 기본값 열에 회색 버튼을 입력합니다.
  • 두 번째 행에서 변수 이름에 r을 입력하고 기본값 열에 128을 입력합니다.
  • 세 번째 행에서 변수 이름에 g를 입력하고 기본값 열에 128을 입력합니다.
  • 네 번째 행에서 변수 이름에 b를 입력하고 기본값 열에 128을 입력합니다.
  1. 저장을 클릭하고 SDK 통합 섹션에 표시되는 프로젝트 ID 값을 기록해 둡니다. 다음 섹션에서는 앱 코드를 업데이트하고 코드에서 이 값을 참조합니다.

앱에서 실험 코딩하기

  1. Visual Studio에서 Visual C#을 사용하여 새 유니버설 Windows 플랫폼 프로젝트를 만듭니다. 프로젝트 이름을 SampleExperiment로 지정합니다.

  2. 솔루션 탐색기에서 프로젝트를 확장하고 참조를 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 클릭합니다.

  3. 참조 관리자에서 유니버설 Windows를 확장하고 확장을 클릭합니다.

  4. SDK 목록에서 Microsoft Engagement Framework 옆에 있는 검사 상자를 선택하고 확인을 클릭합니다.

  5. 솔루션 탐색기에서 MainPage.xaml을 두 번 클릭하여 앱의 기본 페이지에 대한 디자이너를 엽니다.

  6. 도구 상자에서 페이지로 버튼을 끌어 옵니다.

  7. 디자이너의 단추를 두 번 클릭하여 코드 파일을 열고 클릭 이벤트에 대한 이벤트 처리기를 추가합니다.

  8. 코드 파일의 전체 내용을 다음의 코드로 바꿉니다. 이전 섹션에서 파트너 센터를 통해 얻은 프로젝트 ID 값에 변수 projectId(을)를 할당합니다.

    using System;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Media;
    using System.Threading.Tasks;
    using Windows.UI;
    using Windows.UI.Core;
    
    // Namespace for A/B testing.
    using Microsoft.Services.Store.Engagement;
    
    namespace SampleExperiment
    {
        public sealed partial class MainPage : Page
        {
            private StoreServicesExperimentVariation variation;
            private StoreServicesCustomEventLogger logger;
    
            // Assign this variable to the project ID for your experiment from Dev Center.
            private string projectId = "";
    
            public MainPage()
            {
                this.InitializeComponent();
    
                // Because this call is not awaited, execution of the current method
                // continues before the call is completed.
    #pragma warning disable CS4014
                InitializeExperiment();
    #pragma warning restore CS4014
            }
    
            private async Task InitializeExperiment()
            {
                // Get the current cached variation assignment for the experiment.
                var result = await StoreServicesExperimentVariation.GetCachedVariationAsync(projectId);
                variation = result.ExperimentVariation;
    
                // Check whether the cached variation assignment needs to be refreshed.
                // If so, then refresh it.
                if (result.ErrorCode != StoreServicesEngagementErrorCode.None || result.ExperimentVariation.IsStale)
                {
                    result = await StoreServicesExperimentVariation.GetRefreshedVariationAsync(projectId);
    
                    // If the call succeeds, use the new result. Otherwise, use the cached value.
                    if (result.ErrorCode == StoreServicesEngagementErrorCode.None)
                    {
                        variation = result.ExperimentVariation;
                    }
                }
    
                // Get remote variables named "buttonText", "r", "g", and "b" from the variation
                // assignment. If no variation assignment is available, the variables default
                // to "Grey button" for the button text and grey RGB value for the button color.
                var buttonText = variation.GetString("buttonText", "Grey Button");
                var r = (byte)variation.GetInt32("r", 128);
                var g = (byte)variation.GetInt32("g", 128);
                var b = (byte)variation.GetInt32("b", 128);
    
                // Assign button text and color.
                await button.Dispatcher.RunAsync(
                    CoreDispatcherPriority.Normal,
                    () =>
                    {
                        button.Background = new SolidColorBrush(Color.FromArgb(255, r, g, b));
                        button.Content = buttonText;
                        button.Visibility = Visibility.Visible;
                    });
    
                // Log the view event named "userViewedButton" to Dev Center.
                if (logger == null)
                {
                    logger = StoreServicesCustomEventLogger.GetDefault();
                }
    
                logger.LogForVariation(variation, "userViewedButton");
            }
    
            private void button_Click(object sender, RoutedEventArgs e)
            {
                // Log the conversion event named "userClickedButton" to Dev Center.
                if (logger == null)
                {
                    logger = StoreServicesCustomEventLogger.GetDefault();
                }
    
                logger.LogForVariation(variation, "userClickedButton");
            }
        }
    }
    
  9. 코드 파일을 저장하고 프로젝트를 빌드합니다.

파트너 센터에서 실험 만들기

  1. 파트너 센터의 버튼 클릭 실험 프로젝트 페이지로 돌아갑니다.
  2. 실험 섹션에서 새 실험 버튼을 클릭합니다.
  3. 실험 세부 정보 섹션의 실험 이름 필드에 최적화 버튼 클릭이라는 이름을 입력합니다.
  4. 보기 이벤트 섹션에서 보기 이벤트 이름 필드에 userViewedButton을 입력합니다. 이 이름은 이전 섹션에서 추가한 코드에 기록된 보기 이벤트 문자열과 일치합니다.
  5. 목표 및 변환 이벤트 섹션에서 다음의 값을 입력합니다.
  • 목표 이름 필드에 증가 버튼 클릭을 입력합니다.
  • 변환 이벤트 이름 필드에 userClickedButton이라는 이름을 입력합니다. 이 이름은 이전 섹션에서 추가한 코드에 기록된 변환 이벤트 문자열과 일치합니다.
  • 목표 필드에서 최대화를 선택합니다.
  1. 원격 변수 및 변형 섹션에서 변형이 앱에 균등하게 배포되도록 균등하게 배포 확인란이 선택되어 있는지 확인합니다.
  2. 실험에 다음의 변수를 추가합니다.
    1. 드롭다운 컨트롤을 클릭하고 buttonText를 선택한 다음, 변수 추가를 클릭합니다. 회색 버튼 문자열은 변형 A 열에 자동으로 표시됩니다(이 값은 프로젝트 설정에서 파생됨). 변형 B 열에 Blue Button을 입력합니다.
    2. 드롭다운 컨트롤을 다시 클릭하고 r을 선택한 다음, 변수 추가를 클릭합니다. 128 문자열은 변형 A 열에 자동으로 표시됩니다. 변형 B 열에 1을 입력합니다.
    3. 드롭다운 컨트롤을 다시 클릭하고 g를 선택한 다음, 변수 추가를 클릭합니다. 128 문자열은 변형 A 열에 자동으로 표시됩니다. 변형 B 열에 1을 입력합니다.
    4. 드롭다운 컨트롤을 다시 클릭하고 b를 선택한 다음, 변수 추가를 클릭합니다. 128 문자열은 변형 A 열에 자동으로 표시됩니다. 변형 B 열에 255을 입력합니다.
  3. 저장을 클릭한 후 활성화를 클릭합니다.

중요

실험을 만들 때 편집 가능한 실험 확인란을 클릭하지 않은 경우, 실험을 활성화한 뒤에는 실험 매개 변수를 더 이상 수정할 수 없습니다. 일반적으로 실험을 활성화하기 전에 앱에서 실험을 코딩하는 것이 좋습니다.

앱을 실행하여 실험 데이터를 수집하세요

  1. 이전에 만든 SampleExperiment 앱을 실행합니다.
  2. 회색 또는 파란색 버튼이 표시되는지 확인합니다. 버튼을 클릭한 다음 앱을 닫습니다.
  3. 동일한 컴퓨터에서 위의 단계를 여러 번 반복하여 앱에 동일한 버튼 색이 표시되는지 확인합니다.

결과를 검토하고 실험을 완료합니다.

이전 섹션을 완료한 후 몇 시간 이상 기다린 뒤, 다음의 단계에 따라 실험 결과를 검토하고 실험을 완료합니다.

참고 항목

실험을 활성화하자마자 파트너 센터에서 즉시 실험에 대한 데이터를 기록하도록 계측되는 모든 앱에서 데이터를 수집하기 시작합니다. 그러나 실험 데이터를 파트너 센터에 표시하려면 몇 시간이 걸릴 수 있습니다.

  1. 파트너 센터에서 앱의 실험 페이지로 돌아갑니다.

  2. 활성 실험 섹션에서 최적화 버튼 클릭을 클릭하여 이 실험의 페이지로 이동합니다.

  3. 결과 요약결과 세부 정보 섹션에 표시된 결과가 예상과 일치하는지 확인합니다. 이러한 섹션에 대한 자세한 내용은 파트너 센터에서 실험 관리를 참조하세요.

    참고 항목

    파트너 센터에서는 24시간 내의 각 사용자에 대한 첫 번째 전환 이벤트만 보고합니다. 사용자가 24시간 내에 앱에서 여러 변환 이벤트를 트리거하는 경우 첫 번째 변환 이벤트만 보고됩니다. 이는 많은 변환 이벤트가 있는 단일 사용자가 샘플 사용자 그룹에 대한 실험 결과를 왜곡하지 않도록 하기 위한 것입니다.

  4. 이제 실험을 종료할 준비가 되었습니다. 결과 요약 섹션의 변형 B 열에서 스위치를 클릭합니다. 이 스위치로 앱의 모든 사용자가 파란색 버튼으로 전환됩니다.

  5. 확인을 클릭하여 실험 종료를 확인합니다.

  6. 이전 섹션에서 만든 SampleExperiment 앱을 실행합니다.

  7. 파란색 버튼이 표시되는지 확인합니다. 앱이 업데이트된 변형 할당을 받는 데 최대 2분이 걸릴 수 있습니다.