Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Criar experimentos do Configuração remota do Firebase com testes A/B

Ao atualizar seu aplicativo e usar o Configuração remota do Firebase para torná-lo um aplicativo com uma base de usuários ativa, certifique-se de que todas as informações estejam corretas. Os seguintes tópicos podem gerar dúvidas:

  • A melhor maneira de implementar o recurso para otimizar a experiência do usuário. Muitas vezes, os desenvolvedores de app só ficam sabendo da insatisfação dos usuários com relação a um novo recurso ou a uma experiência do usuário atualizada quando a classificação do app na loja de aplicativos começa a cair. O teste A/B pode ajudar a avaliar se seus usuários gostam das novas variações dos recursos ou se preferem o app como está. Além disso, manter grande parte dos usuários em um grupo de controle garante que a maior parte da sua base de usuários continue a usar o app sem observar nenhuma mudança no comportamento ou na aparência dele até a conclusão do experimento.
  • A melhor maneira de otimizar a experiência do usuário para um objetivo comercial. Às vezes você está implementando mudanças no produto para maximizar uma métrica, como receita ou retenção. Com o teste A/B, você define seu objetivo comercial, e o Firebase faz a análise estatística para determinar se uma variante está apresentando desempenho melhor que o grupo de controle para o objetivo selecionado.

Para as variantes de recurso do teste A/B com um grupo de controle, siga estas etapas:

  1. Crie um experimento.
  2. Valide o experimento em um dispositivo de teste.
  3. Gerencie o experimento.

Criar um experimento

Com um experimento do Configuração remota, você pode avaliar múltiplas variantes em um ou mais parâmetros do Configuração remota.

  1. Faça login no Firebase, atualize as Configurações de compartilhamento de dados e verifique se essa opção está ativada. Sem o compartilhamento de dados, seu experimento não terá acesso aos dados de análise.
  2. Na seção Engajamento da barra de navegação do Console do Firebase, clique em Teste A/B.
  3. Clique em Criar experimento e, em seguida, selecione Configuração remota na opção para selecionar o serviço para fazer experimentos.
  4. Digite um nome e uma descrição opcional para seu experimento e clique em Avançar.
  5. Preencha os campos de Segmentação, escolhendo primeiro o app que usa seu experimento. Também é possível segmentar um subconjunto dos usuários para participar do experimento. Basta escolher opções que incluem o seguinte:

    • Versão: uma ou mais versões do seu app.
    • Público a que o usuário pertence: públicos do Analytics utilizados para segmentar usuários que podem ser incluídos no experimento.
    • Propriedade do usuário: uma ou mais propriedades do Analytics para selecionar usuários que podem ser incluídos no experimento.
    • Previsão: grupos de usuários previstos pelo machine learning para realizar um comportamento específico.
    • País/região: um ou mais países ou regiões para selecionar usuários que podem ser incluídos no experimento.
    • Idioma do dispositivo: um ou mais idiomas e locais usados para selecionar usuários que podem ser incluídos no experimento.
  6. Porcentagem de usuários-alvo: insira a porcentagem da base de usuários do seu app correspondente aos critérios definidos em Usuários-alvo que você quer dividir igualmente entre o grupo de controle e uma ou mais variantes no experimento. Pode ser qualquer porcentagem entre 0,01% e 100%. Os usuários são atribuídos a cada experimento de forma aleatória, incluindo experimentos duplicados.

  7. Se quiser, defina um evento de ativação para garantir que apenas os usuários que acionaram alguns eventos do Analytics sejam contados no seu experimento. Para garantir um experimento válido, verifique se o evento escolhido ocorre após o app ativar valores de configuração buscados. Eventos como first_open ou session_start podem ocorrer antes de activateFetched(), gerando resultados inesperados.

  8. Para as Metas do experimento, selecione a métrica principal a ser monitorada e insira as adicionais na lista suspensa. Elas incluem objetivos integrados (envolvimento, compras, receita, retenção etc.), Eventos de conversão e outros eventos do Google Analytics. Quando terminar a seleção, clique em Avançar.

  9. Na seção Variantes, você escolhe um grupo de controle e pelo menos uma variante para o experimento. Use a lista Escolher ou criar novo para adicionar um ou mais parâmetros para usar no experimento. É possível criar um parâmetro que ainda não tenha sido usado no Console do Firebase, mas ele precisa existir no seu app para ter efeito. Repita essa etapa para adicionar múltiplos parâmetros ao seu experimento.

  10. (Opcional) Para adicionar mais de uma variante ao seu experimento, clique em Adicionar variante.

  11. Mude um ou mais parâmetros para variantes específicas. Todos os parâmetros inalterados são iguais aos parâmetros para usuários não incluídos no experimento.

  12. Clique em Revisar para salvar o experimento.

É permitido ter até 300 experimentos por projeto, que podem consistir em até 24 experimentos em execução, com o restante como rascunho ou concluído.

Validar seu experimento em um dispositivo de teste

Para cada instalação do Firebase, é possível recuperar o token de autenticação de instalação associado a ele. Use esse token para testar variantes específicas do experimento em um dispositivo de teste com seu app instalado. Para validar seu experimento em um dispositivo de teste, siga as etapas a seguir:

  1. Acesse o token de autenticação de instalação da seguinte forma:

    Swift

    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

    FirebaseInstallations.getInstance().getToken(/* forceRefresh */ true)
        .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());
          }
        });
    

    Unity

    Firebase.Installations.FirebaseInstallations.DefaultInstance.GetTokenAsync().ContinueWith(
      task => {
        if (!(task.IsCanceled || task.IsFaulted) && task.IsCompleted) {
          UnityEngine.Debug.Log(System.String.Format("Installations token {0}", task.Result));
        }
      });
    
  2. Na barra de navegação do Console do Firebase, clique em Teste A/B.
  3. Clique em Rascunho (e/ou Em execução para experimentos do Configuração remota), passe o cursor sobre seu experimento e clique no menu de contexto (). Depois, selecione Gerenciar dispositivos de teste.
  4. Insira o token de autenticação de instalação para um dispositivo de teste e escolha a variante do experimento a ser enviada a esse dispositivo.
  5. Execute o aplicativo e confirme se a variante selecionada está sendo recebida no dispositivo de teste.

Para saber mais sobre as instalações do Firebase, consulte Gerenciar instalações do Firebase.

Gerenciar seu experimento

Ao criar um experimento com o Configuração remota, o Editor do Notificações ou o Mensagens no app do Firebase, você poderá validar e iniciar seu experimento, monitorá-lo durante a execução e aumentar o número de usuários incluídos nele.

Quando seu experimento estiver concluído, você poderá anotar as configurações usadas pela variante vencedora e implementar essas configurações para todos os usuários. Também é possível executar outro experimento.

Iniciar um experimento

  1. Na seção Engajamento da barra de navegação do Console do Firebase, clique em Teste A/B.
  2. Clique em Rascunho e, em seguida, no título do seu experimento.
  3. Para validar que seu app tem usuários que seriam incluídos no experimento, amplie os detalhes do rascunho e verifique se há um número maior que 0% na seção Segmentação e distribuição, como 1% dos usuários que correspondam aos critérios.
  4. Para alterar o experimento, clique em Editar.
  5. Para iniciar o experimento, clique em Iniciar experimento. Você pode executar até 24 experimentos por projeto de cada vez.

Monitorar um experimento

É possível verificar o progresso de um experimento que já está sendo executado há um tempo e ver quais são os resultados para os usuários que participaram dele.

  1. Na seção Engajamento da barra de navegação do Console do Firebase, clique em Teste A/B.
  2. Clique em Executar e, em seguida, no título do seu experimento. Nessa página, você pode ver várias estatísticas observadas e estimadas do seu experimento em execução, incluindo as seguintes:

    • Porcentagem de diferença do valor de referência: uma medida da melhoria de uma métrica para determinada variante em comparação com o valor de referência (ou o grupo de controle). É calculada por meio da comparação entre o intervalo de valores da variante e o intervalo do valor de referência.
    • Probabilidade de superar o valor de referência: a probabilidade estimada de que uma determinada variante supere o valor de referência para a métrica selecionada.
    • observed_metric por usuário: baseado nos resultados do experimento, é o intervalo previsto em que o valor da métrica se enquadrará ao longo do tempo.
    • observed_metric total: o valor cumulativo observado para a variante ou o grupo de controle. O valor é usado para avaliar o desempenho de cada variante do experimento e calcular a Melhoria, o Intervalo de valores, a Probabilidade de superar a linha de base e a Probabilidade de ser a melhor variante. Dependendo da métrica avaliada, o nome dessa coluna pode ser "Duração por usuário", "Receita por usuário", "Taxa de retenção" ou "Taxa de conversão".
  3. Depois que o experimento for executado por um tempo (pelo menos 7 dias para o FCM e o Mensagens no app ou 14 dias para o Configuração remota), os dados nesta página indicarão qual variante é a "líder", se houver. Algumas medidas são acompanhadas por um gráfico de barras que apresenta os dados em um formato visual.

Implantar um experimento para todos os usuários

Após o experimento ser executado por tempo suficiente para que você tenha uma variante "líder" ou vencedora para sua métrica de objetivo, será possível implantar o experimento para 100% dos usuários. Isso permite selecionar uma variante para publicar para todos os usuários. Mesmo que seu experimento não tenha criado um vencedor claro, ainda é possível implantar uma variante para todos os usuários.

  1. Na seção Engajamento da barra de navegação do Console do Firebase, clique em Teste A/B.
  2. Clique em Concluído ou Em execução, selecione um experimento que você quer implantar para todos os usuários, clique no menu de contexto () e depois em Implantar variante.
  3. Implante o experimento para todos os usuários com um dos seguintes procedimentos:

    • Para um experimento que usa o Editor do Notificações, use a caixa de diálogo Implantar mensagem para enviar a mensagem aos usuários segmentados restantes que não fizeram parte do experimento.
    • Para um experimento do Configuração remota, selecione uma variante para determinar quais valores de parâmetros do Configuração remota serão atualizados. Os critérios de segmentação definidos ao criar o experimento serão adicionados como uma nova condição no seu modelo para garantir que o lançamento afete somente os usuários segmentados pelo experimento. Depois de clicar em Revisar no Configuração remota para verificar as alterações, clique em Publicar alterações para concluir o lançamento.
    • Para um experimento do Mensagens no app, use a caixa de diálogo para determinar quais variantes precisam ser implantadas como uma campanha independente do Mensagens no app. Depois de selecionadas, você será redirecionado para a tela de edição do FIAM para fazer quaisquer alterações (se necessário) antes da publicação.

Expandir um experimento

Se você achar que um experimento não alcança usuários suficientes no teste A/B para declarar um líder, aumente a distribuição do seu experimento para que ele alcance uma porcentagem maior da base de usuários do app.

  1. Na seção Engajamento da barra de navegação do Console do Firebase, clique em Teste A/B.
  2. Selecione o experimento em execução que você quer editar.
  3. Na Visão geral do experimento, clique no menu de contexto () e depois em Editar experimento em execução.
  4. A caixa de diálogo Segmentação exibe uma opção para aumentar a porcentagem de usuários que estão no experimento em execução. Selecione um número maior que a porcentagem atual e clique em Publicar. O experimento será enviado para a porcentagem de usuários que você especificou.

Duplicar ou interromper um experimento

  1. Na seção Engajamento da barra de navegação do Console do Firebase, clique em Teste A/B.
  2. Clique em Concluído ou Em execução, passe o cursor sobre seu experimento, clique no menu de contexto () e depois em Duplicar experimento ou Interromper experimento.

Segmentação de usuários

Você pode segmentar os usuários para incluí-los no seu experimento usando os critérios mostrados a seguir.

Critério de segmentação Operadores Valores Observação
Versão contém,
não contém,
corresponde exatamente,
contém regex
Digite um valor para uma ou mais versões do aplicativo que você quer incluir no experimento.

Ao usar qualquer um dos operadores contém, não contém ou corresponde exatamente, é possível fornecer uma lista de valores separados por vírgulas.

Ao usar o operador contém regex, é possível criar expressões regulares no formato RE2 (em inglês). A expressão regular precisa corresponder à toda a string de versão de destino ou parte dela. Use as âncoras ^ e $ para corresponder ao começo, ao final ou a toda uma string de destino.

Públicos-alvo inclui todos os itens de,
inclui pelo menos um item de,
não inclui todos os itens de,
não inclui pelo menos um item de
Selecione um ou mais públicos do Analytics para segmentar usuários que podem ser incluídos no experimento.  
Propriedade do usuário Para texto:
contém,
não contém,
corresponde exatamente,
contém regex

Para números:
<, ≤, =, ≥, >
Uma propriedade de usuário do Analytics é usada para selecionar usuários que podem ser incluídos em um experimento, com um intervalo de opções para seleção de valores de propriedade do usuário.

No cliente, é possível definir apenas valores de string para as propriedades do usuário. Para condições que usam operadores numéricos, o serviço do Configuração remota converte o valor da propriedade de usuário correspondente em um inteiro/float.
Ao usar o operador contém regex, é possível criar expressões regulares no formato RE2 (em inglês). A expressão regular precisa corresponder à toda a string de versão de destino ou parte dela. Use as âncoras ^ e $ para corresponder ao começo, ao final ou a toda uma string de destino.
Previsão N/A Grupos de destino de usuários definidos pelo Firebase Previsões. Por exemplo, aqueles que provavelmente deixarão de usar seu aplicativo ou usuários que podem fazer uma compra no aplicativo. Selecione um dos valores definidos pela ferramenta Firebase Previsões. Se uma opção não estiver disponível, talvez seja necessário ativar o Firebase Previsões visitando a seção "Previsões" do Console do Firebase.  
País do dispositivo N/A Um ou mais países ou regiões utilizados para selecionar usuários que podem ser incluídos no experimento.  
Idioma do dispositivo N/A Um ou mais idiomas e locais usados para selecionar usuários que podem ser incluídos no experimento. Esse critério de segmentação só está disponível para Configuração remota.
Primeiro acesso superior a
inferior a
entre
Segmente usuários com base na primeira vez que eles acessaram seu aplicativo, especificado em dias. Esse critério de segmentação está disponível apenas para o recurso de Mensagens no app do Firebase.
Último engajamento no app superior a
inferior a
entre
Segmente usuários com base no último engajamento deles com seu app, especificado em dias. Esse critério de segmentação está disponível apenas para o recurso de Mensagens no app do Firebase.

Métricas do Teste A/B

Ao criar seu experimento, você escolhe uma métrica usada para comparar as variantes. Você também pode escolher outras métricas de acompanhamento para entender melhor cada variante do experimento e detectar algum efeito colateral significativo (como falhas do app). As tabelas a seguir fornecem detalhes sobre como as métricas da meta e outras métricas são calculadas:

Métricas da meta

Métrica Descrição
Retenção (1 dia) O número de usuários que retornam ao seu app diariamente.
Retenção (2 a 3 dias) O número de usuários que retornam ao seu app dentro de 2 a 3 dias.
Retenção (4 a 7 dias) O número de usuários que retornam ao seu app dentro de 4 a 7 dias.
Retenção (8 a 14 dias) O número de usuários que retornam ao seu app dentro de 8 a 14 dias.
Retenção (15 dias ou mais) O número de usuários que retornam ao seu aplicativo dentro de 15 dias ou mais após o último uso.
Abertura de notificações Monitora se um usuário abre a notificação enviada pelo Editor do Notificações.
Receita de compra Valor combinado para todos os eventos ecommerce_purchase e in_app_purchase.
Receita estimada da AdMob Ganhos estimados da AdMob.
Receita total estimada Valor combinado para compra e receitas estimadas da AdMob.
first_open Um evento do Analytics acionado quando um usuário abre um app pela primeira vez depois de instalá-lo ou reinstalá-lo. Usado como parte de um acompanhamento de conversão.
notification_open Um evento do Analytics acionado quando um usuário abre uma notificação enviada pelo Editor do Notificações. Usado como parte de um acompanhamento de conversão.

Outras métricas

Métrica Descrição
Usuários sem falhas A porcentagem de usuários que não encontraram os erros no seu app que foram detectados pelo SDK do Firebase Crashlytics durante o experimento.
notification_dismiss Um evento do Analytics acionado quando uma notificação enviada pelo Editor do Notificações é descartada (apenas Android).
notification_receive Um evento do Analytics acionado quando uma notificação enviada pelo Editor do Notificações é recebida enquanto o app está em segundo plano (apenas Android).
os_update Um evento do Analytics que rastreia quando o sistema operacional do dispositivo é atualizado para uma nova versão. Se você quiser saber mais, consulte Eventos coletados automaticamente.
screen_view Um evento do Analytics que rastreia as telas visualizadas no seu app. Para mais informações, consulte Acompanhar exibições de tela.
session_start Um evento do Analytics que conta as sessões dos usuários no seu app. Para mais informações, consulte Eventos coletados automaticamente.
user_engagement Um evento do Analytics acionado periodicamente enquanto seu app está em primeiro plano. Para saber mais, consulte Eventos coletados automaticamente.

Exportação de dados do BigQuery

É possível acessar todos os dados de análise relacionados aos seus testes A/B no BigQuery. Com isso, é possível fazer análises usando o BigQuery SQL, exportar os dados para outro provedor de nuvem ou usá-los nos seus modelos personalizados de ML. Para mais informações, consulte Vincular o BigQuery ao Firebase.

Para aproveitar ao máximo a exportação de dados do BigQuery, os projetos do Firebase devem adotar o plano de preços de pagamento por utilização "Blaze". O BigQuery cobra pelo armazenamento de dados, inserções de streaming e consulta de dados. O carregamento e a exportação de dados são gratuitos. Para mais informações, consulte Preços do BigQuery ou Sandbox do BigQuery.

Para começar, verifique se o projeto do Firebase está vinculado ao BigQuery. Selecione Configurações > Configurações do projeto na barra de navegação à esquerda e, em seguida, clique em Integrações > BigQuery > Vincular. Veja nessa página as opções para executar a exportação de dados de análise do BiqQuery para todos os aplicativos no projeto.

Para consultar dados de análise de um experimento:

  1. Na lista de experimentos ativos, selecione o experimento desejado para abrir a página de resultados.
  2. No menu de contexto no painel Visão geral do experimento, selecione Consultar dados do experimento. Essa opção não está disponível para projetos no nível gratuito.

    Em seguida, o editor de consultas do console do BigQuery é aberto com uma consulta de exemplo gerada automaticamente dos dados de experimento pré-carregados para sua análise. Nesta consulta, seu experimento é codificado como uma propriedade do usuário, com o nome do experimento na chave e sua variante no valor.

  3. No editor de consultas, selecione Executar consulta. Os resultados são exibidos no painel inferior.

Como os dados do Firebase no BigQuery são atualizados apenas uma vez por dia, os dados disponíveis na página do experimento podem estar mais atualizados do que os disponíveis no console do BigQuery.