Usuário Convidado e Teste A/B no app Empiricus Android

Abrindo possibilidades de experimentação

Bruna Esteves
#EmpiricusTech
6 min readJan 27, 2021

--

Olá! :)

Esse post é sobre uma história bem sucedida, e quem não gosta dessas histórias, não é mesmo? 😃

Ela começa com uma oportunidade identificada pela nossa área mobile: ter um aumento de tráfego no app e gerar uma experimentação do produto mais atrativa para o usuário.

Essa alternativa proveria a possibilidade de entrar no app como convidado, sem necessariamente passar pelo processo de assistente virtual, definição de perfil de investidor ou login/cadastro.

Mas como colocar essa ideia em prática? 🤔

Primeiramente, vale destacar que discussões sobre como atender melhor os nossos usuários dos apps (Android e iOS) são recorrentes no nosso meio. Estas conversas contribuem muito no desenvolvimento de um dos diferenciais do nosso time: ouvir o nosso cliente. E foi assim que começamos a tentar entender qual seria a melhor forma de simplificar o fluxo de entrada no app.

Este processo inicou com uma análise do primeiro contato do usuário, buscando entender como melhorá-lo. Uma proposta surgiu como uma hipótese a ser testada, e se configurou como a criação de um novo tipo de persona: o usuário convidado (guest user). Deste modo, seria possível abrir o app para experimentação sem a necessidade de login ou cadastro, e neste ponto, a jornada de melhoria já estava em desenvolvimento.

Mas como testar? 👀

Em engenharia de software é bem comum utilizarmos testes A/B neste tipo de solução, e é sobre eles que falaremos a seguir.

O que é um Teste A/B?

Cenários A e B como ferramentas de análise de melhorias

É um método de testes baseado numa pesquisa de experiência do usuário, e pode ser entendido como um experimento que testa uma hipótese com duas amostras (A/B), onde cada uma delas recebe um valor de forma aleatória.

O Fluxo e a Oportunidade

Para que fosse possível entrar no app e visualizar todas as funcionalidades, o usuário precisava voltar para a tela inicial para logar/cadastrar ou seguir até a etapa final de seleção de perfil de investidor.

A oportunidade: O fluxo limita as ações do usuário e não dá espaço para que ele conheça o app mais a fundo.

Com isso, e olhando para um Teste A/B, foi possível pensar na ramificação de dois cenários:

Cenário A — Ao clicar no botão "Começar", o usuário já inicia sua jornada como convidado, indo direto para a Home do app:

Cenário A — Usuário convidado acessa diretamente pelo botão Começar, sem onboarding

Cenário B — Continuar com o fluxo padrão, que habilita o usuário a fazer a pesquisa de perfil de investidor. Essa é chamada de baseline.

Cenário B — Usuário acessa o onboarding ao clicar em começar e define seu Perfil de Investidor

Com a hipótese já estruturada e os cenários definidos, foi possível partir para o próximo passo: escolha e configuração da ferramenta de testes.

Como configurar o Teste A/B no Firebase

Segundo a documentação:

Com a tecnologia do Google Optimize, o Teste A/B do Firebase ajuda você a otimizar a experiência do app, facilitando a execução, a análise e o dimensionamento de experimentos de produtos e marketing. Além disso, é possível testar campanhas de engajamento ou alterações nos recursos da IU do app para ver se elas estão funcionando conforme o esperado em relação às suas métricas principais (como receita e retenção) antes que elas sejam implementadas completamente.

O uso do Teste A/B do Firebase é bem difundido no meio de desenvolvimento. Com esse mecanismo é possível criar experimentos para diferentes soluções e customizar cenários de acordo com a usabilidade de cada produto.

Criação do experimento no Firebase

Tendo em mãos as definições de hipótese, cenário A e cenário B, foi necessário seguir os passos abaixo no console do Firebase:

1 — Dentro do console, na área Engajamento, é possível ver a opção A/B Testing. Ao selecionar este item, você conseguirá ver e clicar no botão Criar Experimento

2 — Ao visualizar a lista de opções de tipos de experimento, selecione Remote Config

Aqui, é necessário entender mais sobre Remote Config. Ele é bastante usado em diferentes momentos do desenvolvimento de apps. Sua função, segundo a documentação, é:

[…] definir parâmetros no seu app e atualizar os valores na nuvem, sendo possível modificar a aparência e o comportamento do app sem a necessidade de distribuir uma atualização.

A opção previamente selecionada utilizará o conjunto de configurações remotas como parâmetro para resposta A ou B.

A etapa final de criação será algo parecido com:

As variantes cadastradas nesse momento (variáveis de configuração remota com valores pré-definidos) deverão ser informadas para os desenvolvedores para a integração com o app.

Integrando o Teste A/B no Android

Para começar a integração, é necessária a inclusão da dependência do Firebase no projeto. Esta configuração proverá o acesso às configurações remotas definidas no Firebase Console.

Etapas de desenvolvimento

1 — Adicionar o Firebase Remote Config no arquivo build.gradle a nível de projeto:

dependencies {
// Import the BoM for the Firebase platform
implementation platform(‘com.google.firebase:firebase-bom:26.1.1’)
// Declare the dependencies for the Remote Config
// When using the BoM, you don’t specify versions in Firebase library dependencies
implementation ‘com.google.firebase:firebase-config-ktx’
}

2 — Configurar as propriedades

remoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)
MainActivity.kt

3 — Configurar valores padrão de cada variável de configuração remota

remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

se atente: remote_config_defaults deve incuir o valor e chave inseridos no momento da criação do experimento. Ex.:androidLoginGuestStartDirectLinkEnabled

<entry>
<key>androidLoginGuestStartDirectLinkEnabled</key>
<value>false</value>
</entry>

4 — Receber o valor da variável para configurar cada comportamento no app

const val KEY_START_GUEST_BUTTON ="androidLoginGuestStartDirectLinkEnabled"var remoteConfig = Firebase.remoteConfig
val isStartGuestEnabled = remoteConfig.getBoolean(KEY_EXIT_BUTTON)
// Verify the remote config to set the behaviour
// Por exemplo, o botão Começar deverá levar para a home do app de acordo com o valor de isStartGuestEnabled
btnStart.setOnClickListener {
if
(isStartGuestEnabled){
navController().navigate(Uri.parse(DEEPLINK_GUEST))
}
}

Com os passos acima, é possível conectar o experimento feito no console do Firebase com a variável de configuração consultada no app para mudar o destino do usuário.

Dessa forma, ao executar o app com a solução desenvolvida, o usuário entrará como convidado ou verá a assistente virtual, de acordo com o valor aleatório recebido e sua respectiva porcentagem distribuída entre as variáveis.

OBS: Como foram duas variáveis configuradas (A/B), o destino será home ou assistente virtual, com a probabilidade de 50% cada.

E assimo experimento foi criado e configurado, e foi para produção. 🚀

Resultados

O processo de desenvolvimento descrito foi realizado e os resultados foram animadores!

Como é possível ver acima, uma melhoria foi encontrada, ou seja, a variante configurada no Teste A/B se mostrou eficaz. O console do Firebase mostra alguns dados muito importantes para análise do experimento e tomada de decisão.

Um ponto a ser levado em consideração é sobre como agir pós coleta de dados, e avaliar como o teste responde às perguntas corretas.

Na imagem é visível a coluna com as informações session_start >> showcase_payment_confirmation e essa é uma das perguntas que o experimento responde.

Isso quer dizer que, além do aumento de tráfego no app, melhorias de usabilidade e possibilidade de experimentação, o app aumentou 4% em vendas, medidas pelo evento do Firebase showcase_payment_confirmation.

E o engajamento? 🤔
As sessões também aumentaram em 20% e os cadastros 45%.

Esse experimento poderia ter sido medido com base em diferentes questões referentes a outras melhorias, e essa é a grande possibilidade de tudo o que foi desenvolvido.

Sempre vale a pena testar hipóteses! A nossa foi validada e implementada como o novo fluxo principal. Agora, os usuários do app Android estão SUPER convidados! 😃

Foi um sucesso! 💃

A utilização da ferramenta descrita é bem aceita e traz resultados tangíveis, como foi provado.

Espero que esse artigo abra oportunidades para refletir sobre melhorias e acima de tudo, fazer um produto melhor.

Até mais 😃

--

--