Teste A/B em Mobile

Teste A/B em Apps Mobile: o Guia Completo (iOS + Android)

Teste a/b app mobile: client-side x server-side x ASO, o que testar, a estatística certa e as ferramentas, sem inventar o que a Donnu ainda não faz.

Ilustração de dois smartphones lado a lado, cada um mostrando um arranjo diferente de cartões na tela, representando duas variações de um teste A/B mobile

Teste A/B em app mobile é a mesma ideia central do teste A/B na web (dividir o público ao acaso entre duas versões e medir qual converte mais), mas a execução muda em pontos que decidem se o teste vai dar uma resposta confiável ou vai travar no meio do caminho. Não existe deploy instantâneo: toda mudança de UI ou fluxo passa por uma feature flag remota, porque publicar uma nova versão na loja para cada variação seria inviável e lento. A unidade de aleatorização normalmente é o dispositivo ou o usuário logado, não a sessão. E a base instalada nunca atualiza de uma vez, o que cria um jeito específico de poluir a amostra que quase nenhum guia genérico de teste A/B cobre.

Este guia é a matéria mãe do cluster de teste A/B em mobile deste blog: cobre o que muda de iOS e Android para a web, os três tipos de teste que às vezes se confundem (client-side, server-side e ASO na própria loja), o que testar em cada tela do app, a estatística aplicada com um exemplo trabalhado usando números reais, as ferramentas do mercado numa comparação neutra e os erros que mais derrubam testes mobile. Se você já conhece o básico de teste A/B, veja também o guia completo de teste A/B; se o seu foco é CRO de site, o guia de otimização de conversão (CRO) cobre o lado web em profundidade. Esta matéria vai ganhar posts filhos nas próximas semanas, cobrindo cada uma das telas do app em detalhe. O primeiro já está a caminho: veja o guia completo de teste A/B de onboarding mobile ->.

O que é teste A/B em app mobile, de forma direta

Um teste A/B em app mobile pega uma tela, um fluxo ou uma mensagem dentro do app (ou associada a ele, como um push notification) com um comportamento conhecido, e testa uma variação dela contra o que já existe, com usuários reais, ao mesmo tempo, exatamente como um teste A/B de site. A diferença não está no conceito estatístico, que é idêntico: está em como a variação chega até o usuário e em como você garante que a mesma pessoa sempre veja o mesmo lado, apesar de abrir o app dezenas de vezes ao longo de semanas em vez de carregar uma página uma vez.

Os termos específicos de mobile que você vai encontrar

Em que teste A/B mobile difere do teste A/B web

Quatro diferenças mudam como você desenha, roda e lê um teste dentro de um app, comparado com um site:

Ciclo de release: app de loja x deploy webNo deploy web, a mudança fica no ar em minutos e chega a 100% dos visitantes na próxima carga de página. No app de loja, a mudança passa por build, revisão da loja (horas a dias) e propagação de atualização orgânica que se estende por semanas, o que empurra times mobile a usar feature flag remota para testar sem depender desse ciclo.Deploy webcommitbuild + deploy100% em minutosApp de lojabuildrevisão da lojahoras a diasatualização orgânicasemanas100% só depois desemanas de propagaçãoFeature flag remota: o atalho que os dois times mobile usamA variação já existe no binário publicado; o servidor liga/desliga por usuário, sem dependerde revisão da loja nem de propagação de update para começar ou encerrar um teste
O deploy web chega a 100% do público em minutos; o app de loja depende de build, revisão e propagação orgânica de update, que se estende por semanas. É por isso que testar mobile de verdade exige um mecanismo de feature flag remota, e não apenas uma nova versão publicada para cada variação.

Três tipos de teste que se confundem: client-side, server-side e ASO

“Teste A/B mobile” na verdade cobre três mecanismos bem diferentes, e é comum confundir os três porque todos comparam duas versões de alguma coisa relacionada ao app:

Client-side, server-side e ASO: onde cada decisão aconteceClient-side decide dentro do app já instalado; server-side decide no backend e o app só renderiza; ASO decide antes da instalação, dentro da própria loja, sobre ícone, screenshots e texto da ficha.Client-sideapp jáinstaladoflag lidapelo próprio appUI, texto, fluxoServer-sidebackenddecideapp sórenderizapreço, regra de negócioASO na lojaantes dainstalaçãoa própria lojadecide e medeícone, prints, texto
Os três resolvem perguntas diferentes: client-side e server-side testam o que acontece depois que o app já está instalado; ASO testa o que faz alguém instalar.

Comparando os três lado a lado

Critério Client-side Server-side ASO na loja
Onde a decisão nasce Dentro do app, lendo uma flag remota No backend, o app só renderiza Dentro da própria loja (Google Play / App Store)
O que testa tipicamente UI, texto, ordem de telas, pequenos fluxos Preço, elegibilidade, regra de negócio, recomendação Ícone, screenshots e vídeo de preview (Google e Apple); texto da ficha só no Google Play
Consistência entre canais Só dentro do app Alta (a mesma decisão pode alimentar app, site e e-mail) Não se aplica, é só a ficha da loja
Quem opera a ferramenta Time de produto/mobile, SDK de feature flag Time de backend/growth Google Play Console / App Store Connect (a própria plataforma)
Métrica típica Conversão dentro do app (ativação, upgrade) Conversão de negócio (receita, retenção) Taxa de visualização da ficha em instalação
Depende de review de loja Não, roda sobre um binário já aprovado Não Não é bem “review”, roda dentro do fluxo próprio da plataforma

O que testar em cada tela do app

Nem toda tela do app merece o mesmo esforço de teste. As que mais concentram ganho, em ordem típica de impacto:

Tela / momento O que costuma se testar Cuidado específico
Onboarding / tutorial Número de telas, pular ou não pular, pedir permissão antes ou depois de mostrar valor É a maior alavanca de ativação; abandono aqui nunca mais volta a aparecer no funil
Paywall / upgrade Posição do preço, âncora de plano, gatilho de exibição (por tempo, por feature, por uso) Rege receita direto; sensível a versão do app e a app store rules sobre pagamento
Push notification Horário de envio, copy, segmentação por comportamento Cuidado com fuso horário de base global; teste closer ao envio, não ao clique isolado
Navegação / IA Tab bar x menu lateral, ordem de itens, nomeação de seções Mudança estrutural, difícil de reverter sem confundir usuário recorrente
Precificação Planos, período de trial, desconto de entrada Mesma cautela de qualquer teste de preço: efeito de longo prazo (LTV) nem sempre aparece rápido
Checkout in-app Fluxo de pagamento, número de etapas, métodos aceitos Compra dentro do app segue regras da Apple e do Google sobre comissão e sistema de pagamento próprio da loja, que mudam com frequência por decisão regulatória e de plataforma; confirme a regra vigente antes de desenhar o teste, em vez de assumir o que valia há um ano

Sobre o último ponto: as políticas de compra dentro do app (in-app purchase) da Apple e do Google já passaram por mudanças relevantes de comissão e de obrigatoriedade de sistema de pagamento próprio em diferentes mercados e períodos, por decisão das próprias plataformas ou por pressão regulatória. Trate isso como algo que muda, não como uma regra fixa: confira a documentação oficial vigente da App Store Connect e do Google Play Console antes de desenhar qualquer teste de checkout in-app, em vez de replicar o que valia numa época anterior.

Push notification tem uma relação próxima com e-mail marketing (o mesmo raciocínio de teste de assunto e horário de envio se aplica), mas o foco deste guia é o comportamento dentro do app; se seu programa de mensagens cobre e-mail também, trate os dois canais com a mesma disciplina estatística, cada um com sua própria amostra.

Como escrever uma hipótese de teste mobile

A mesma disciplina de hipótese que vale para qualquer teste A/B vale aqui, só que a “observação” que origina a hipótese costuma vir de analytics de produto (evento instrumentado no app), não de heatmap de site. O formato continua o mesmo: porque observei [dado do produto], acredito que [mudança na tela/flag] vai gerar [efeito], medido por [métrica de produto].

Um exemplo concreto de mobile: “porque 38% dos usuários abandonam o onboarding na tela de pedido de permissão de notificação (dado do funil de ativação instrumentado no app), acredito que mover esse pedido para depois do usuário completar a primeira ação de valor vai reduzir o abandono, medido pela taxa de conclusão do onboarding em D1”. Repare que essa frase já entrega a métrica primária (conclusão do onboarding em D1), a direção esperada (subir) e a origem (um evento de produto real, não um palpite de time). Hipóteses fracas em mobile costumam soar como “e se a gente deixasse o app mais bonito”, sem métrica nem direção; descarte esse formato antes de gastar um ciclo de desenvolvimento nele.

Métrica primária e guardrails específicos de mobile

Toda a lógica de métrica primária, secundária e de guarda do teste A/B clássico se aplica sem alteração, mas mobile adiciona guardrails que praticamente não existem (ou importam muito menos) num teste de site:

Guardrail Por que monitorar em mobile Sinal de alerta
Taxa de crash Uma variação pode converter melhor e ainda assim derrubar o app com mais frequência num dispositivo ou versão de sistema operacional específica Crash rate sobe de forma isolada numa das variações
Nota e sentimento na loja Uma mudança agressiva de fluxo (paywall cedo demais, permissão insistente) pode melhorar uma métrica de curto prazo e piorar a avaliação pública do app Queda na nota média ou aumento de reviews negativas mencionando a mudança testada
Taxa de desinstalação Ganho de conversão que vem à custa de fricção percebida tende a aparecer primeiro aqui, antes de aparecer em churn de assinatura Desinstalação sobe na variação “vencedora”
Tempo de carregamento / cold start Qualquer SDK de feature flag ou remote config adiciona uma chamada de rede; se mal implementado, atrasa a primeira tela Tempo até a primeira tela interativa piora na variação com a flag

Ignorar esses guardrails é como comemorar um teste A/B de site que melhorou conversão mas também disparou o cancelamento: o número que decide o teste subiu, mas o negócio, no agregado, piorou.

A estatística aplicada a mobile: por que a amostra demora mais

A matemática por trás de um teste A/B mobile é exatamente a mesma de um teste A/B web (a mesma aproximação normal de duas proporções), mas três fatores tornam a conta mais dura na prática:

  1. Tráfego elegível menor. Um site de marketing pode ter dezenas de milhares de visitantes por semana numa página só. Um app costuma ter um volume de instalações novas ou de usuários ativos numa tela profunda do funil (paywall, checkout) que é uma fração disso, porque o público já passou por um filtro de instalação antes de chegar ali.
  2. Ciclos de atualização do app. Se o teste depende de uma versão nova do binário, uma parte do seu público-alvo simplesmente não está elegível ainda, porque não atualizou. O denominador “todo mundo que deveria entrar no teste” cresce devagar, ao ritmo da atualização orgânica.
  3. Contaminação por versão antiga. Usuários numa versão antiga do app, que não têm o código da variação nem da flag, continuam gerando eventos de produto (aberturas, conversões) que podem acabar entrando numa métrica agregada se o pipeline de análise não filtrar por versão mínima elegível, distorcendo a leitura sem que ninguém perceba a tempo.

Calcule a amostra do seu teste mobile

Ajuste a taxa de conversão da tela, o efeito mínimo que você quer detectar e o volume semanal real do seu app (não o tráfego do site, o volume de usuários elegíveis daquela tela específica):

Calculadora de tamanho de amostra
-Visitantes por variação
-Total (2 variações)
-Duração estimada

Cálculo por aproximação normal de duas proporções, 2 variações (50/50). Mexa nos campos e veja o impacto ao vivo.

Um exemplo trabalhado com números reais

Vamos usar um cenário comum de app mobile: uma tela de ativação (o usuário completa a ação central nos primeiros 7 dias, o “D7”) com taxa base de 22%, testando uma mudança no onboarding que a equipe espera melhorar em +15% relativo (de 22% para cerca de 25,3%). Com 95% de confiança e 80% de poder (os mesmos padrões usados em toda calculadora deste blog), a fórmula de tamanho de amostra devolve 2.602 usuários por variação.

Se o app tem 2.500 novas instalações elegíveis por semana (um volume realista para um app de porte médio, bem abaixo do tráfego de uma landing page de marketing), a duração do teste fica em 15 dias para fechar as duas variações, cerca de duas semanas de espera, mesmo com um efeito relativamente generoso de +15%. É exatamente esse tipo de conta que explica por que testes mobile em telas profundas do funil demoram mais que testes de landing page: não é falta de rigor, é volume elegível menor por padrão.

Agora repare no que acontece se a equipe fica ansiosa e decide olhar o resultado com só 900 usuários por variação (um terço do necessário), com a mesma proporção observada de conversão (22% no controle contra 25,7% na variação, a mesma melhora de +16,7% relativo que apareceria no teste completo):

Amostra completa (2.602 por variação) Amostra parcial (900 por variação)
Taxa A (controle) 22,0% 22,0%
Taxa B (variação) 25,6% 25,7%
Melhora relativa observada +16,6% +16,7%
Valor-p 0,00199 0,0679
Intervalo de confiança da diferença +1,3 a +6,0 pontos −0,3 a +7,6 pontos
Veredito Significativo, B vence Inconclusivo

A melhora observada é quase a mesma nos dois casos (a variação realmente parece ~16% melhor), mas o veredito muda por completo: com a amostra completa, o valor-p fica em 0,00199 e o intervalo de confiança da diferença não cruza zero (fica entre +1,3 e +6,0 pontos), um resultado sólido. Com um terço da amostra, o mesmo efeito real produz um valor-p de 0,068, acima do limiar de 0,05, e o intervalo de confiança cruza zero (vai de −0,3 a +7,6 pontos), ou seja, ainda é plausível que não haja diferença nenhuma. Isso não quer dizer que o teste parcial “deu errado”: quer dizer que faltou amostra para o mesmo efeito real virar evidência estatística, exatamente o motivo de calcular o N antes de rodar, e não decidir “de olho no painel” no meio do caminho.

Mesmo efeito real, amostra diferente, veredito diferenteCom 2.602 usuarios por variacao, o intervalo de confianca da diferenca vai de 1,3 a 6,0 pontos percentuais e nao cruza zero: significativo. Com 900 por variacao, o intervalo vai de -0,3 a 7,6 pontos e cruza zero: inconclusivo, mesmo com a mesma melhora relativa observada de cerca de 16 por cento.zero (sem diferenca)n = 2.602 / variacaosignificativo, B vencen = 900 / variacaoinconclusivo (cruza zero)
As duas faixas partem de quase a mesma melhora observada. A faixa de baixo cruza a linha de zero porque a amostra e menor; a de cima nao cruza porque a amostra e a calculada. E a mesma licao do teste A/B web, so que mais facil de ignorar em mobile porque o volume elegivel some rapido.

SRM em mobile: a versão antiga do app como suspeita principal

O SRM (Sample Ratio Mismatch, divergência na proporção de amostra) acontece quando o split observado entre variações se afasta do configurado por um problema de coleta, não por acaso. Em mobile, duas causas dominam a lista de suspeitos:

Um exemplo com números reais: um teste configurado para 50/50 registra, ao final, 7.150 usuários na variação A contra 4.850 na B, de um total de 12.000. O checador de qui-quadrado de aderência (a mesma matemática usada na calculadora de SRM deste blog) devolve um valor-p praticamente zero para essa divergência, bem abaixo do limiar de alerta de 1%, ou seja, uma divisão dessa magnitude é estatisticamente impossível de acontecer por acaso num split configurado 50/50. Qualquer resultado de conversão medido nesse teste é suspeito até a causa da divergência ser encontrada e corrigida, mesmo que a diferença entre A e B pareça favorável e “limpa” à primeira vista.

SRM: 50/50 configurado vira 60/40 observadoDe 12.000 usuarios, o esperado era 6.000 e 6.000. O observado foi 7.150 na variacao A e 4.850 na B, uma divergencia com valor-p de qui-quadrado praticamente zero, sinal forte de bug de coleta, nao de acaso.Esperado (configurado 50/50)A · 6.000B · 6.000Observado (real, com bug de coleta)A · 7.150 (59,6%)B · 4.850 (40,4%)qui-quadrado de aderencia: valor-p menor que 0,001bem abaixo do limiar de alerta de 1%: a causa mais provavel e tecnica, nao estatistica
Um bug de atualização forçada ou um crash isolado numa variação costuma ser a causa real por trás de um SRM assim. Investigue a coleta antes de confiar em qualquer número de conversão desse teste.

Quanto tempo deixar um teste mobile rodando

A regra geral não muda: rode por pelo menos uma a duas semanas inteiras, mesmo que a amostra calculada seja atingida antes, para cobrir um ciclo completo de dias úteis e fim de semana. Em mobile, dois fatores adicionais alongam esse prazo na prática. O primeiro é a propagação da própria feature flag: se o teste depende de uma versão nova do app, o prazo real de “amostra elegível suficiente” só começa a contar depois que uma fatia relevante da base atualizou, não no dia em que você configurou o experimento no painel. O segundo é o comportamento cíclico específico de app: uso de fim de semana em apps de consumo (jogos, entretenimento, redes sociais) costuma diferir bastante do uso em dias úteis de apps de produtividade ou financeiros, e encerrar um teste mobile em três ou quatro dias captura uma fatia enviesada da sua base tanto quanto encerraria num site.

Se o teste envolve push notification, o cuidado de fuso horário já discutido antes também afeta a duração: um teste que “roda 14 dias” no relógio do servidor pode, na prática, expor uma parte da base a menos ciclos de envio completos, se o disparo é sempre no mesmo horário de servidor e uma fatia da audiência está em fusos onde esse horário cai de madrugada.

Checklist antes de ligar um teste mobile (ativo copiável)

Antes de virar a chave de um teste em produção, confirme cada item abaixo. É a versão mobile do teste A/A e dos cuidados de execução que qualquer teste A/B honesto exige, adaptada para os pontos que só existem em app:

Item Confirmar antes de ligar
Unidade de aleatorização Device ID ou user ID estável, nunca sessão de uso
Versão mínima elegível Usuários abaixo dela estão excluídos do denominador, não só da exposição
Feature flag testada em ambos os SOs A flag renderiza corretamente em iOS e Android antes do teste ir ao ar
SRM por plataforma configurado O checador de qui-quadrado roda separado para iOS e Android, além do agregado
Guardrails instrumentados Crash rate, desinstalação e (quando aplicável) nota da loja monitorados desde o dia 1
Amostra e duração calculadas antes N por variação e prazo definidos com a calculadora deste guia, não “vamos ver como vai”
Fuso horário tratado (se houver push) Envio e leitura de resultado segmentados por fuso do usuário, não por horário do servidor
Teste A/A prévio (se for a primeira vez na ferramenta) Duas variações idênticas não acusam diferença significativa nem SRM, confirmando que a coleta está limpa

Trate essa lista como um gate de qualidade, não como burocracia: cada linha existe porque alguma das causas de teste mobile invalidado (peeking à parte) já apareceu em algum programa de experimentação real.

Ferramentas de teste A/B mobile (visão neutra)

Não existe uma ferramenta certa para todo mundo. O critério que decide é sempre o mesmo: client-side ou server-side, custo por evento/usuário e integração com o analytics mobile que você já usa (Firebase Analytics, Amplitude, Mixpanel e afins).

Ferramenta Modelo Ponto forte Considere quando
Firebase A/B Testing + Remote Config Client-side Gratuito até um volume alto, integração nativa com Firebase Analytics e Cloud Messaging Seu app já usa o ecossistema Firebase e o teste é de UI/fluxo dentro do app
Optimizely Full Stack Client-side e server-side Maduro, suporta múltiplos SDKs (mobile, servidor, web) sob o mesmo experimento Você precisa do mesmo experimento coordenado entre mobile e backend
LaunchDarkly Client-side e server-side (feature flag primeiro) Foco forte em flag de release/rollout progressivo, com experimentação como camada adicional O objetivo principal é controle de release seguro, e o teste A/B é um bônus sobre isso
Statsig Client-side e server-side Estatística e feature flag integradas desde o início, bom suporte a métricas de produto Você quer experimentação e analytics de produto na mesma ferramenta
PostHog Client-side e server-side (open-source) Analytics de produto, feature flags e experimentos numa suíte só, com opção self-hosted Você já usa PostHog para analytics e quer unificar com experimentação
VWO Mobile Client-side Vem do mundo de CRO web, curva de uso familiar para quem já testa landing pages Seu time de marketing já usa VWO na web e quer o mesmo modelo mental no app
AB Tasty App Client-side Editor visual pensado para marketing, menos dependente de engenharia para variações simples O time que cria os testes é de marketing/produto, não só engenharia

Vale um critério final, além dos da tabela: custo cresce com volume de eventos ou de usuários únicos, não com número de testes rodando, na maioria dessas ferramentas. Um app com poucos milhões de eventos por mês costuma caber em planos gratuitos ou de entrada de Firebase, Statsig ou PostHog; volume alto de eventos é onde a conversa de custo muda de patamar entre as opções, e vale pedir cotação real antes de decidir, em vez de assumir pelo tier público do site.

A Donnu A/B hoje é uma ferramenta focada no lado web e client-side: snippet leve, sem travar a página, estatística bayesiana honesta. Ainda não cobre app mobile nativo (iOS/Android), e este guia não afirma o contrário. Se o seu produto é um app híbrido ou tem uma camada web relevante (onboarding via web view, checkout web, landing page que alimenta a instalação), a Donnu já resolve essa fatia com o mesmo rigor estatístico que este guia defende para o app inteiro.

Erros comuns específicos de mobile

Matriz de erros comuns em teste A/B mobileQuatro erros recorrentes organizados por onde nascem: na coleta (SRM por plataforma, versao desatualizada) ou na leitura (ignorar diferenca ios/android, ignorar fuso horario do push).Onde o erro nasceNa coletaNa leitura do resultadoSRM nao checado por plataformaios e android desbalanceadosescondidos no agregadoDiferenca ios/android ignoradaganho agregado pode esconderperda numa das duasVersao antiga do app como ruidousuarios sem a flag contaminama metrica agregadaFuso horario do push ignoradobase global misturada numso horario de servidor
Os dois erros da esquerda nascem na coleta de dados; os da direita nascem na hora de ler e generalizar o resultado. Os dois grupos exigem checagem específica, nenhum aparece sozinho na tela principal de resultado da maioria das ferramentas.

Quando NÃO vale a pena rodar um teste A/B mobile

Teste A/B mobile é a ferramenta errada em alguns cenários específicos, e forçar um teste que nunca vai fechar é pior do que não testar:

Cenário Por que não vale O que fazer em vez disso
App com poucas centenas de instalações novas por semana O cálculo de amostra facilmente pede meses para fechar numa tela de conversão rara Aplique heurísticas conhecidas de UX mobile e correções de atrito óbvio, sem exigir significância estatística; veja também o conceito de baixo tráfego no guia de CRO, que vale igual para app
Correção óbvia e sem risco Um crash, um botão que não responde, um texto errado: são bugs, não hipóteses Corrija direto, sem rodar teste para “confirmar” o óbvio
A pergunta é “por quê”, não “quanto” Teste A/B mede o efeito de uma mudança, não explica o motivo do comportamento atual Use pesquisa qualitativa (entrevista com usuário, gravação de sessão, teste de usabilidade)
A mudança depende de uma nova versão de binário que a maior parte da base ainda não tem Enquanto a atualização não se propaga, a amostra elegível fica pequena demais para qualquer leitura confiável Espere a propagação atingir um piso razoável da base, ou use feature flag para não depender de nova versão nesse teste específico

Faça isso automático na Donnu

Este guia mostrou o que muda de verdade quando o teste A/B sai do navegador e entra no app: unidade de aleatorização por dispositivo, feature flag remota no lugar de deploy instantâneo, amostra que demora mais para fechar e um SRM que costuma nascer de bug de atualização ou de versão antiga em campo. É o mesmo rigor estatístico que este blog defende em toda matéria, só que aplicado a um terreno com mais fricção operacional.

A Donnu hoje resolve a parte web e client-side dessa disciplina: snippet leve que nunca trava a página, dimensionamento de amostra automático e estatística bayesiana honesta, sem achismo. Se o seu produto já mistura app e web (uma landing page que alimenta instalação, um checkout ou onboarding em web view, uma área logada acessada tanto pelo navegador quanto pelo app), o próximo passo natural é levar essa mesma disciplina estatística para o seu site com um teste grátis de 14 dias, enquanto o cluster de mobile deste blog cresce com os posts filhos que cobrem cada tela do app em detalhe, começando pelo guia de teste A/B de onboarding mobile.

Referências

Perguntas frequentes

Teste A/B em app mobile funciona igual a teste A/B em site?
O princípio é o mesmo (dividir o público ao acaso e comparar conversão), mas a execução muda em pontos importantes: a unidade de aleatorização costuma ser o dispositivo ou o usuário logado, não a sessão do navegador; não existe deploy instantâneo, o app precisa de um mecanismo de feature flag remoto pra trocar a variação sem passar por review de loja; e a base instalada nunca atualiza de uma vez, então versões antigas do app ficam em campo por semanas contaminando a amostra se a randomização não isolar isso.
Client-side ou server-side, qual escolher pra testar no app?
Depende de onde a decisão da variação precisa nascer. Client-side (feature flag remota lida pelo próprio app) é mais rápido de configurar e funciona bem pra UI e fluxo dentro do app; server-side (o backend decide e o app só renderiza o resultado) é mais robusto pra regras de negócio, precificação e qualquer coisa que também precise ser consistente entre app, web e e-mail. Times maduros usam os dois: client-side pra UI, server-side pra decisões que atravessam canais.
Preciso de quantos usuários pra rodar um teste A/B mobile?
Depende da taxa de conversão da tela testada, do efeito mínimo que você quer detectar e do tráfego semanal disponível, exatamente como na web. A diferença prática é que apps costumam ter menos tráfego elegível por tela profunda do funil (paywall, checkout) do que um site de marketing, então o mesmo cálculo estatístico tende a devolver prazos mais longos. Use a calculadora de tamanho de amostra deste guia com os números reais do seu app.
Posso testar o ícone e os prints da loja como um teste A/B?
Sim, mas é um tipo de teste diferente do A/B dentro do app: chama-se teste de ASO (App Store Optimization) e roda dentro da própria loja, não no seu código. A Google oferece o Store listing experiments no Google Play Console; a Apple oferece o Product Page Optimization no App Store Connect. Os dois testam ícone, screenshots e vídeo de preview com tráfego real da busca e da navegação da loja; testar o texto da ficha (descrição curta e longa) só é possível no Google Play, o Product Page Optimization da Apple fica restrito aos elementos visuais. Cada um segue as regras e o cronograma da própria plataforma, não os seus.
O que é SRM em teste mobile e como eu percebo?
SRM (Sample Ratio Mismatch) é quando a divisão de tráfego observada entre as variações se afasta da divisão configurada (por exemplo, 50/50 configurado virando 60/40 observado) por um problema de coleta, não por acaso. Em mobile, as duas causas mais comuns são um bug de atualização forçada que empurra uma fatia de usuários só pra uma variação, e um crash que acontece só numa variação, derrubando o app antes de registrar o evento de exposição. Um checador de qui-quadrado (como o deste guia) sinaliza SRM quando o p-valor do teste fica abaixo de 1%.
Vale a pena rodar teste A/B se meu app tem pouco tráfego?
Nem sempre. Se o app tem poucas centenas de instalações novas por semana, um teste com significância estatística pode levar meses pra fechar, o mesmo problema que já vale pra sites de baixo tráfego. Nesse cenário, mudanças de alta confiança sem teste formal (heurísticas conhecidas de UX mobile, correção de atrito óbvio no onboarding) costumam valer mais a pena do que insistir num teste que nunca vai acumular amostra suficiente.