Udostępnij za pośrednictwem


Samouczek: uruchamianie eksperymentów z flagami funkcji wariantu (wersja zapoznawcza)

Uruchamianie eksperymentów w aplikacji może pomóc w podejmowaniu świadomych decyzji w celu poprawy wydajności aplikacji i środowiska użytkownika. Z tego przewodnika dowiesz się, jak skonfigurować i wykonać eksperymenty w magazynie usługi App Configuration. Dowiesz się, jak zbierać i mierzyć dane, korzystając z możliwości usługi App Configuration, application Szczegółowe informacje (wersja zapoznawcza) i Split Experimentation Workspace (wersja zapoznawcza).

Dzięki temu można podejmować decyzje oparte na danych, aby ulepszyć aplikację.

Uwaga

Szybkim sposobem rozpoczęcia eksperymentacji jest uruchomienie przykładu Oferty dnia AZD. To repozytorium zawiera kompleksowy przykład z aprowizacją zasobów platformy Azure i pierwszym eksperymentem na temat sposobu integrowania aplikacja systemu Azure Configuration z aplikacjami platformy .NET w celu uruchamiania eksperymentów.

W tym samouczku zostały wykonane następujące czynności:

  • Tworzenie flagi funkcji wariantu
  • Dodawanie zasobu aplikacji Szczegółowe informacje do magazynu
  • Dodawanie podzielonego obszaru roboczego eksperymentowania do sklepu
  • Konfigurowanie aplikacji do uruchamiania eksperymentu
  • Włączanie telemetrii i tworzenie eksperymentu w flagi funkcji wariantu
  • Tworzenie metryk dla eksperymentu
  • Pobieranie wyników eksperymentów

Wymagania wstępne

Tworzenie flagi funkcji wariantu (wersja zapoznawcza)

Utwórz flagę funkcji wariantu o nazwie Greeting with two variant (Powitanie z dwoma wariantami), Off and On (Wł.) zgodnie z opisem w przewodniku Szybki start flagi funkcji.

Połączenie zasób usługi Application Szczegółowe informacje (wersja zapoznawcza) do magazynu konfiguracji

Aby uruchomić eksperyment, najpierw należy połączyć zasób aplikacji Szczegółowe informacje obszaru roboczego z magazynem usługi App Configuration. Połączenie tego zasobu do magazynu App Configuration ustawia magazyn konfiguracji ze źródłem telemetrii na potrzeby eksperymentowania.

  1. W magazynie App Configuration wybierz pozycję Aplikacja telemetrii > Szczegółowe informacje (wersja zapoznawcza).

    Zrzut ekranu witryny Azure Portal z dodawaniem Szczegółowe informacje aplikacji do sklepu.

  2. Wybierz zasób Application Szczegółowe informacje, którego chcesz użyć jako dostawcy telemetrii dla flag funkcji wariantu i aplikacji, a następnie wybierz pozycję Zapisz. Jeśli nie masz zasobu Application Szczegółowe informacje, utwórz go, wybierając pozycję Utwórz nową. Aby uzyskać więcej informacji na temat sposobu kontynuowania, przejdź do tematu Tworzenie zasobu opartego na worskpace. Następnie ponownie w obszarze Aplikacja Szczegółowe informacje (wersja zapoznawcza) załaduj ponownie listę dostępnych zasobów usługi Application Szczegółowe informacje i wybierz nowy zasób usługi Application Szczegółowe informacje.

  3. Powiadomienie wskazuje, że zasób aplikacji Szczegółowe informacje został pomyślnie zaktualizowany dla magazynu App Configuration.

Połączenie podzielony obszar roboczy eksperymentowania (wersja zapoznawcza) do sklepu

Aby uruchomić eksperymenty w konfiguracji aplikacja systemu Azure, użyjesz obszaru roboczego Podziel eksperymentowanie. Wykonaj poniższe kroki, aby połączyć obszar roboczy Split Experimentation (Podział eksperymentowania) z twoim sklepem.

  1. W magazynie App Configuration wybierz pozycję Experimentation Split Experimentation>Workspace (wersja zapoznawcza) z menu po lewej stronie.

    Zrzut ekranu witryny Azure Portal z dodawaniem obszaru roboczego Split Experimentation (Podział eksperymentowania) do magazynu App Configuration Store.

  2. Wybierz obszar roboczy Split Experimentation (Podział eksperymentowania), a następnie pozycję Zapisz. Jeśli nie masz obszaru roboczego Podzielone eksperymentowanie, postępuj zgodnie z przewodnikiem Szybki start Split Experimentation Workspace (Podział obszaru roboczego eksperymentowania), aby go utworzyć.

    Uwaga

    Źródło danych wybrane w obszarze roboczym Split Experimentation (Podział eksperymentowania) musi być tym samym zasobem Aplikacji Szczegółowe informacje, co wybrano w poprzednim kroku.

  3. Powiadomienie wskazuje, że operacja zakończyła się pomyślnie.

Konfigurowanie aplikacji do uruchamiania eksperymentu

Po połączeniu zasobu application Szczegółowe informacje (wersja zapoznawcza) ze sklepem App Configuration skonfiguruj aplikację do uruchomienia eksperymentu (wersja zapoznawcza).

W tym przykładzie utworzysz aplikację internetową ASP.NET o nazwie Cytat dnia. Po załadowaniu aplikacji zostanie wyświetlony cudzysłów. Użytkownicy mogą nacisnąć przycisk serca, aby go polubić. Aby zwiększyć zaangażowanie użytkowników, chcesz sprawdzić, czy spersonalizowany komunikat powitania zwiększy liczbę użytkowników, którzy lubią ofertę. Flaga funkcji Powitanie jest tworzona w aplikacja systemu Azure Konfiguracja z dwoma wariantami: Wyłączone i Włączone. Użytkownicy, którzy otrzymują wariant Wyłączone , zobaczą standardowy tytuł. Użytkownicy, którzy otrzymają wariant Włączone , otrzymają wiadomość powitalną. Zbierasz i zapisujesz dane telemetryczne interakcji użytkownika w aplikacji Szczegółowe informacje. W obszarze roboczym Split Experimentation (Podział eksperymentów) możesz przeanalizować skuteczność eksperymentu.

Tworzenie aplikacji i dodawanie wpisów tajnych użytkownika

  1. Otwórz wiersz polecenia i uruchom następujący kod. Spowoduje to utworzenie nowej aplikacji Razor Pages w usłudze ASP.NET Core przy użyciu uwierzytelniania indywidualnego konta i umieszczenie jej w folderze wyjściowym o nazwie QuoteOfTheDay.

    dotnet new razor --auth Individual -o QuoteOfTheDay
    
  2. W wierszu polecenia przejdź do folderu QuoteOfTheDay i uruchom następujące polecenie, aby utworzyć wpis tajny użytkownika dla aplikacji. Ten wpis tajny zawiera parametry połączenia dla usługi App Configuration.

    dotnet user-secrets set ConnectionStrings:AppConfiguration "<App Configuration Connection string>"
    
  3. Utwórz inny wpis tajny użytkownika, który przechowuje parametry połączenia for Application Szczegółowe informacje.

    dotnet user-secrets set ConnectionStrings:AppInsights "<Application Insights Connection string>"
    

Aktualizowanie kodu aplikacji

  1. W pliku QuoteOfTheDay.csproj dodaj najnowsze wersje zapoznawcza zestawów SDK zarządzania funkcjami i konfiguracji aplikacji zgodnie z wymaganymi pakietami.

    <PackageReference Include="Microsoft.Azure.AppConfiguration.AspNetCore" Version="8.0.0-preview.2" />
    <PackageReference Include="Microsoft.FeatureManagement.Telemetry.ApplicationInsights" Version="4.0.0-preview3" />
    <PackageReference Include="Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore" Version="4.0.0-preview3" />
    <PackageReference Include="Microsoft.FeatureManagement.AspNetCore" Version="4.0.0-preview3" />
    
  2. W Program.cs w wierszu var builder = WebApplication.CreateBuilder(args);dodaj dostawcę usługi App Configuration, który ściąga konfigurację z platformy Azure po uruchomieniu aplikacji. Domyślnie metoda UseFeatureFlags zawiera wszystkie flagi funkcji bez etykiety i ustawia czas wygaśnięcia pamięci podręcznej 30 sekund.

    builder.Configuration
        .AddAzureAppConfiguration(o =>
        {
            o.Connect(builder.Configuration.GetConnectionString("AppConfiguration"));
    
            o.UseFeatureFlags();
        });
    
  3. W Program.cs dodaj następujące instrukcje using:

    using Microsoft.ApplicationInsights.AspNetCore.Extensions;
    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.FeatureManagement.Telemetry.ApplicationInsights.AspNetCore;
    
  4. W obszarze, gdzie builder.Configuration.AddAzureAppConfiguration jest wywoływana, dodaj:

    // Add Application Insights telemetry.
    builder.Services.AddApplicationInsightsTelemetry(
        new ApplicationInsightsServiceOptions
        {
            ConnectionString = builder.Configuration.GetConnectionString("AppInsights"),
            EnableAdaptiveSampling = false
        })
        .AddSingleton<ITelemetryInitializer, TargetingTelemetryInitializer>();
    

    Ten fragment kodu wykonuje następujące akcje.

    • Dodaje do aplikacji klienta telemetrii Szczegółowe informacje aplikacji.
    • Dodaje inicjator telemetrii, który dołącza informacje docelowe do wychodzących danych telemetrycznych.
    • Wyłącza próbkowanie adaptacyjne. Aby uzyskać więcej informacji na temat wyłączania próbkowania adaptacyjnego, zobacz Rozwiązywanie problemów.
  5. W folderze głównym QuoteOfTheDay utwórz nowy plik o nazwie ExampleTargetingContextAccessor.cs. Spowoduje to utworzenie nowej klasy o nazwie ExampleTargetingContextAccessor. Wklej poniższą zawartość do pliku.

    using Microsoft.FeatureManagement.FeatureFilters;
    
    namespace QuoteOfTheDay
    {
        public class ExampleTargetingContextAccessor : ITargetingContextAccessor
        {
            private const string TargetingContextLookup = "ExampleTargetingContextAccessor.TargetingContext";
            private readonly IHttpContextAccessor _httpContextAccessor;
    
            public ExampleTargetingContextAccessor(IHttpContextAccessor httpContextAccessor)
            {
                _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor));
            }
    
            public ValueTask<TargetingContext> GetContextAsync()
            {
                HttpContext httpContext = _httpContextAccessor.HttpContext;
                if (httpContext.Items.TryGetValue(TargetingContextLookup, out object value))
                {
                    return new ValueTask<TargetingContext>((TargetingContext)value);
                }
                List<string> groups = new List<string>();
                if (httpContext.User.Identity.Name != null)
                {
                    groups.Add(httpContext.User.Identity.Name.Split("@", StringSplitOptions.None)[1]);
                }
                TargetingContext targetingContext = new TargetingContext
                {
                    UserId = httpContext.User.Identity.Name ?? "guest",
                    Groups = groups
                };
                httpContext.Items[TargetingContextLookup] = targetingContext;
                return new ValueTask<TargetingContext>(targetingContext);
            }
        }
    }
    

    Ta klasa deklaruje sposób określania wartości docelowej funkcjiManagement pobiera kontekst dla użytkownika. W takim przypadku odczytuje httpContext.User.Identity.Name element UserId i traktuje domenę adresu e-mail jako Group.

  6. Wróć do Program.cs i dodaj następujące instrukcje using.

    using Microsoft.FeatureManagement.Telemetry;
    using Microsoft.FeatureManagement;
    using QuoteOfTheDay;
    
  7. W obszarze, w którym AddApplicationInsightsTelemetry została wywołana, dodaj usługi do obsługi odświeżania konfiguracji aplikacji, skonfiguruj zarządzanie funkcjami, skonfiguruj określanie elementów docelowych zarządzania funkcjami i włącz zarządzanie funkcjami w celu publikowania zdarzeń telemetrii.

    builder.Services.AddHttpContextAccessor();
    
    // Add Azure App Configuration and feature management services to the container.
    builder.Services.AddAzureAppConfiguration()
        .AddFeatureManagement()
        .WithTargeting<ExampleTargetingContextAccessor>()
        .AddTelemetryPublisher<ApplicationInsightsTelemetryPublisher>();
    
  8. W wierszu var app = builder.Build();dodaj oprogramowanie pośredniczące, które w razie potrzeby wyzwala odświeżanie usługi App Configuration.

    // Use Azure App Configuration middleware for dynamic configuration refresh.
    app.UseAzureAppConfiguration();
    
  9. W tym celu dodaj następujący kod, aby umożliwić usłudze TargetingTelemetryInitializer uzyskiwanie dostępu do informacji docelowych przez zapisanie go w obiekcie HttpContext.

    // Add TargetingId to HttpContext for telemetry
    app.UseMiddleware<TargetingHttpContextMiddleware>();
    
  10. W pliku QuoteOfTheDay>Pages>Shared_Layout.cshtml w obszarze, gdzie QuoteOfTheDay.styles.css jest dodawany>, dodaj następujący wiersz, aby dodać arkusz css dla wersji 5.15.3 .font-awesome

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
    
  11. Otwórz stronę QuoteOfTheDay>Pages>Index.cshtml.cs i zastąp zawartość aplikacji oferty.

    using Microsoft.ApplicationInsights;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.RazorPages;
    using Microsoft.FeatureManagement;
    
    namespace QuoteOfTheDay.Pages;
    
    public class Quote
    {
        public string Message { get; set; }
    
        public string Author { get; set; }
    }
    
    public class IndexModel(IVariantFeatureManagerSnapshot featureManager, TelemetryClient telemetryClient) : PageModel
    {
        private readonly IVariantFeatureManagerSnapshot _featureManager = featureManager;
        private readonly TelemetryClient _telemetryClient = telemetryClient;
    
        private Quote[] _quotes = [
            new Quote()
            {
                Message = "You cannot change what you are, only what you do.",
                Author = "Philip Pullman"
            }];
    
        public Quote? Quote { get; set; }
    
        public bool ShowGreeting { get; set; }
    
        public async void OnGet()
        {
            Quote = _quotes[new Random().Next(_quotes.Length)];
    
            Variant variant = await _featureManager.GetVariantAsync("Greeting", HttpContext.RequestAborted);
    
            ShowGreeting = variant.Configuration.Get<bool>();
        }
    
        public IActionResult OnPostHeartQuoteAsync()
        {
            string? userId = User.Identity?.Name;
    
            if (!string.IsNullOrEmpty(userId))
            {
                // Send telemetry to Application Insights
                _telemetryClient.TrackEvent("Like");
    
                return new JsonResult(new { success = true });
            }
            else
            {
                return new JsonResult(new { success = false, error = "User not authenticated" });
            }
        }
    }
    

    Spowoduje to PageModel wybranie losowego cudzysłowu, użycie metody GetVariantAsync w celu pobrania wariantu dla bieżącego użytkownika i ustawienie zmiennej o nazwie "ShowGreeting" na wartość wariantu. Obiekt PageModel obsługuje również żądania Post, wywołując metodę _telemetryClient.TrackEvent("Like");, która wysyła zdarzenie do aplikacji Szczegółowe informacje o nazwie Lubię. To zdarzenie jest automatycznie powiązane z użytkownikiem i wariantem i może być śledzone przez metryki.

  12. Otwórz plik index.cshtml i zastąp zawartość aplikacji oferty.

    @page
    @model IndexModel
    @{
        ViewData["Title"] = "Home page";
        ViewData["Username"] = User.Identity.Name;
    }
    
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f4f4f4;
            color: #333;
        }
    
        .quote-container {
            background-color: #fff;
            margin: 2em auto;
            padding: 2em;
            border-radius: 8px;
            max-width: 750px;
            box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
            display: flex;
            justify-content: space-between;
            align-items: start;
            position: relative;
        }
    
        .vote-container {
            position: absolute;
            top: 10px;
            right: 10px;
            display: flex;
            gap: 0em;
        }
    
        .vote-container .btn {
            background-color: #ffffff; /* White background */
            border-color: #ffffff; /* Light blue border */
            color: #333
        }
    
        .vote-container .btn:focus {
            outline: none;
            box-shadow: none;
        }
    
        .vote-container .btn:hover {
            background-color: #F0F0F0; /* Light gray background */
        }
    
        .greeting-content {
            font-family: 'Georgia', serif; /* More artistic font */
        }
    
        .quote-content p.quote {
            font-size: 2em; /* Bigger font size */
            font-family: 'Georgia', serif; /* More artistic font */
            font-style: italic; /* Italic font */
            color: #4EC2F7; /* Medium-light blue color */
        }
    </style>
    
    <div class="quote-container">
        <div class="quote-content">
            @if (Model.ShowGreeting)
            {
                <h3 class="greeting-content">Hi <b>@User.Identity.Name</b>, hope this makes your day!</h3>
            }
            else
            {
                <h3 class="greeting-content">Quote of the day</h3>
            }
            <br />
            <p class="quote">“@Model.Quote.Message”</p>
            <p>- <b>@Model.Quote.Author</b></p>
        </div>
    
        <div class="vote-container">
            <button class="btn btn-primary" onclick="heartClicked(this)">
                <i class="far fa-heart"></i> <!-- Heart icon -->
            </button>
        </div>
    
        <form action="/" method="post">
            @Html.AntiForgeryToken()
        </form>
    </div>
    
    <script>
        function heartClicked(button) {
            var icon = button.querySelector('i');
            icon.classList.toggle('far');
            icon.classList.toggle('fas');
    
            // If the quote is hearted
            if (icon.classList.contains('fas')) {
                // Send a request to the server to save the vote
                fetch('/Index?handler=HeartQuote', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'RequestVerificationToken': document.querySelector('input[name="__RequestVerificationToken"]').value
                    }
                });
            }
        }
    </script>
    

    Ten kod odpowiada interfejsowi użytkownika, aby wyświetlić element QuoteOfTheDay i obsłużyć akcję serca w cudzysłowie. Używa wcześniej wymienionej Model.ShowGreeting wartości, aby pokazać różne elementy różnym użytkownikom w zależności od ich wariantu.

Skompiluj i uruchom aplikację

  1. W wierszu polecenia w folderze QuoteOfTheDay uruchom polecenie: dotnet build.

  2. Uruchom polecenie: dotnet run --launch-profile https.

  3. Poszukaj komunikatu w formacie Now listening on: https://localhost:{port} w danych wyjściowych aplikacji. Przejdź do dołączonego linku w przeglądarce.

  4. Po wyświetleniu uruchomionej aplikacji wybierz pozycję Zarejestruj w prawym górnym rogu, aby zarejestrować nowego użytkownika.

    Zrzut ekranu przedstawiający aplikację Oferty dnia z wyświetloną pozycją Zarejestruj.

  5. Zarejestruj nowego użytkownika o nazwie user@contoso.com. Hasło musi zawierać co najmniej sześć znaków i zawierać liczbę oraz znak specjalny.

  6. Wybierz link Kliknij tutaj, aby zweryfikować wiadomość e-mail po wprowadzeniu informacji o użytkowniku.

  7. Zarejestruj drugiego użytkownika o nazwie userb@contoso.com, wprowadź inne hasło i zweryfikuj tę drugą wiadomość e-mail.

    Uwaga

    Ważne jest, aby w tym samouczku używać dokładnie tych nazw. O ile funkcja została skonfigurowana zgodnie z oczekiwaniami, obaj użytkownicy powinni zobaczyć różne warianty.

  8. Wybierz pozycję Zaloguj się w prawym górnym rogu, aby zalogować się jako użytkownik (userb@contoso.com).

    Zrzut ekranu przedstawiający aplikację Oferty dnia z wyświetlonym **Logowanie**.

  9. Po zalogowaniu powinien zostać wyświetlony userb@contoso.com specjalny komunikat podczas wyświetlania aplikacji.

    Zrzut ekranu przedstawiający aplikację Oferty dnia z komunikatem specjalnym dla użytkownika.

    userb@contoso.com jest jedynym użytkownikiem, który widzi specjalny komunikat.

Włączanie telemetrii i tworzenie eksperymentu w flagi funkcji wariantu

Włącz telemetrię i utwórz eksperyment w flagi funkcji wariantu, wykonując poniższe kroki:

  1. W magazynie App Configuration przejdź do pozycji Operations>Feature Manager.

  2. Wybierz menu kontekstowe ... po prawej stronie flagi funkcji wariantu "Greeting", a następnie wybierz pozycję Edytuj.

    Zrzut ekranu witryny Azure Portal z edytowaniem flagi funkcji wariantu.

  3. Przejdź do karty Telemetria i zaznacz pole wyboru Włącz telemetrię.

  4. Przejdź do karty Eksperyment , zaznacz pole Wyboru Utwórz eksperyment i nadaj eksperymentowi nazwę.

  5. Wybierz pozycję Przejrzyj i zaktualizuj, a następnie pozycję Aktualizuj.

  6. Powiadomienie wskazuje, że operacja zakończyła się pomyślnie. W Menedżerze funkcji flaga funkcji wariantu powinna mieć słowo Aktywne w obszarze Eksperyment.

Tworzenie metryk dla eksperymentu

Metryka w obszarze roboczym Split Experimentation (Podział eksperymentowania) to ilościowa miara zdarzenia wysyłanego do usługi Application Szczegółowe informacje. Ta metryka pomaga ocenić wpływ flagi funkcji na zachowanie i wyniki użytkownika.

Podczas wcześniejszego aktualizowania aplikacji dodano _telemetryClient.TrackEvent("Like") cię do kodu aplikacji. Like to zdarzenie telemetryczne reprezentujące akcję użytkownika, w tym przypadku zaznaczenie przycisku Serce. To zdarzenie jest wysyłane do zasobu Application Szczegółowe informacje, który zostanie połączony z metryki, którą chcesz utworzyć. Utworzona aplikacja określa tylko jedno zdarzenie, ale możesz mieć wiele zdarzeń, a następnie wiele metryk. Wiele metryk może być również opartych na pojedynczym zdarzeniu usługi Application Insights.

  1. Przejdź do zasobu Split Experimentation Workspace (Podział obszaru roboczego eksperymentowania). W obszarze Metryki eksperymentowania konfiguracji>wybierz pozycję Utwórz.

  2. Wybierz lub wprowadź następujące informacje w obszarze Tworzenie metryki eksperymentowania i zapisz je za pomocą polecenia Utwórz.

    Zrzut ekranu witryny Azure Portal przedstawiający tworzenie nowej metryki eksperymentowania.

    Ustawienie Przykładowa wartość opis
    Nazwa/nazwisko Głos serca Nazwa metryki eksperymentowania.
    Opis Zlicz liczbę osób, które wybierają przycisk serca, gdy widzą specjalny komunikat, a kiedy nie. Opcjonalny opis metryki.
    Nazwa zdarzenia Szczegółowe informacje aplikacji Jak Nazwa zdarzenia application Szczegółowe informacje. Ta nazwa jest uwzględniana w wielkości liter i jest nazwą określoną w kodzie za pomocą polecenia _telemetryClient.TrackEvent("<Event-Name>").
    Miara jako Licznik Dostępne są następujące opcje:
    • Liczba: zlicza liczbę przypadków wyzwolenia zdarzenia przez użytkowników.
    • Średnia: określa średnią wartość zdarzenia dla użytkowników.
    • Suma: sumuje wartości zdarzenia dla użytkowników. Pokazuje średnią sumowaną wartość.
    • Procent: oblicza procent użytkowników, którzy wyzwolili zdarzenie.
    Żądany wpływ Zwiększyć To ustawienie reprezentuje ostateczny cel lub cel pomiaru utworzonej metryki.

    W tym samouczku nasza hipoteza polega na tym, że więcej użytkowników klika przycisk przypominający serce, gdy obok cytatu dnia znajduje się specjalny komunikat. Kod aplikacji śledzi to kliknięcie jako zdarzenie o nazwie Lubię. Aplikacja wysyła zdarzenie Like jako dane telemetryczne do aplikacji Szczegółowe informacje, a żądany wpływ na ten eksperyment polega na wyświetleniu zwiększenia liczby kliknięć użytkownika (mierzonych jako liczba) w głosowaniu serca, aby móc zweryfikować daną hipotezę. Jeśli istnieje spadek liczby kliknięć na przycisku pomimo specjalnego komunikatu wyświetlanego przydzielonym odbiorcom, hipoteza jest unieważniona dla tego eksperymentu.

  3. Po utworzeniu nowa metryka zostanie wyświetlona w portalu. Możesz go edytować lub usunąć, wybierając menu kontekstowe (...) po prawej stronie ekranu.

    Zrzut ekranu witryny Azure Portal przedstawiający metryki eksperymentowania.

Pobieranie wyników eksperymentów

Aby umieścić nowo skonfigurowany eksperyment do testu i wygenerować wyniki do analizy, symuluj pewien ruch do aplikacji i poczekaj od 10 do 15 minut.

Aby wyświetlić wyniki eksperymentu, przejdź do Menedżera funkcji i na liście flag funkcji wariantu kliknij pozycję ...>Eksperymentuj lub wybierz link Aktywny w kolumnie Eksperyment. Ta kolumna nie jest domyślnie wyświetlana. Aby go wyświetlić, w Menedżerze funkcji wybierz pozycję Zarządzaj widokiem>Edytuj kolumny>Dodaj eksperyment kolumn>i Zastosuj.

Na stronie wyników domyślnie wybierana jest wersja eksperymentu, punkt odniesienia do porównywania wyników, a wariant porównania jest domyślnie wybierany. W razie potrzeby zmień wartości domyślne zgodnie z potrzebami, a następnie wybierz pozycję Zastosuj , aby wyświetlić wynik eksperymentu.

Zrzut ekranu witryny Azure Portal przedstawiający wynik eksperymentowania.

Powyższy zrzut ekranu pokazuje, że eksperyment miał żądany wynik, z wariantem On dla Heart Vote , co spowodowało 560,62% więcej głosów serca niż wariant Off .

Każda edycja flagi funkcji wariantu generuje nową wersję eksperymentowania, którą można wybrać, aby wyświetlić jego wyniki.

Uwaga

Aby uzyskać wyniki eksperymentowania, potrzebujesz co najmniej 30 zdarzeń na wariant, ale sugerujemy, że masz więcej niż minimalny rozmiar próbkowania, aby upewnić się, że eksperymentowanie generuje wiarygodne wyniki.

Uwaga

Próbkowanie Szczegółowe informacje aplikacji jest domyślnie włączone i może mieć wpływ na wyniki eksperymentowania. W tym samouczku zaleca się wyłączenie próbkowania w aplikacji Szczegółowe informacje. Dowiedz się więcej o próbkowaniu w Szczegółowe informacje aplikacji.

Następny krok

Eksperymenty