Usuário Convidado e Teste A/B no app Empiricus Android
Abrindo possibilidades de experimentação
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?
É 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 B — Continuar com o fluxo padrão, que habilita o usuário a fazer a pesquisa de perfil de investidor. Essa é chamada de baseline.
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 isStartGuestEnabledbtnStart.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 😃