Publicado: outubro 8, 2026
Tentativas repetidas não corrigem um localizador defeituoso.
Um teste de login é aprovado na segunda-feira, falha na terça-feira e é aprovado novamente na quarta-feira. Ninguém mexeu no fluxo de login. O que mudou foi um contêiner que a equipe de design adicionou ao redor do botão de login, o que moveu o botão um nível para trás na árvore de elementos da tela. O XPath que apontava para esse botão foi escrito com base no layout antigo. Dependendo da velocidade de renderização da tela, a consulta às vezes funcionava e às vezes não.
É assim que a instabilidade costuma se manifestar em um conjunto de testes Appium. Não é um mistério, mas sim um teste que depende de detalhes da interface do usuário que ele nunca deveria ter sido projetado para verificar.
A descamação pode ter mais de uma causa.
Um teste instável é aquele que passa e falha no mesmo código. Em grande escala, isso é caro. A Atlassian relata que testes instáveis representam aproximadamente 15% das falhas em seu repositório de backend do Jira, gerando reexecuções que desperdiçam mais de 150,000 horas de desenvolvimento por ano, e foram responsáveis por até 21% das falhas de compilação da branch principal no Jira Frontend (Atlassian, 2025).
As causas se dividem em duas categorias:
- Causas de propriedade do teste. Localizadores frAgile, tempos de espera fixos em vez de esperas reais, dados de teste compartilhados, dependências de ordem. Esses problemas estão presentes no seu código e você pode corrigi-los.
- Causas ambientais. Um dispositivo que se desconecta da rede, uma chamada lenta ao servidor, uma caixa de diálogo inesperada do sistema operacional. Esses problemas estão fora do seu código. Você pode minimizá-los, mas não eliminá-los completamente.
A distinção é importante porque as correções são diferentes. Tentar novamente um teste com um localizador quebrado apenas produz a mesma falha mais lentamente ou, pior, uma aprovação ocasional que mascara o problema. Comece com o que você possui. Em testes de interface de usuário para dispositivos móveis, os localizadores geralmente são o primeiro lugar a ser verificado.
Por que os localizadores param de funcionar quando o aplicativo não para?
Cada etapa do Appium começa com a localização de um elemento. O localizador é o endereço que o teste usa para encontrá-lo. Quando esse endereço descreve a estrutura da tela em vez da identidade do elemento, qualquer alteração no layout pode causar problemas.
Os pesquisadores chamam isso de fragilidade do localizador. Um estudo de 2026 analisou 359 repositórios de código aberto e reproduziu 449 quebras de localizador: casos em que uma mudança estrutural na interface do usuário fez com que um teste falhasse, mesmo que o aplicativo ainda se comportasse corretamente (ReproBreak, ASE 2026Essa pesquisa abordou frameworks de teste web, mas o mecanismo é o mesmo em dispositivos móveis. Renomeie um elemento, adicione um contêiner, reordene uma lista e um localizador baseado em estrutura apontará para outro lugar.
A mobilidade adiciona mais duas pressões:
- Diferenças entre plataformas. A mesma tela produz uma árvore de elementos diferente no iOS e no Android, portanto, um único XPath raramente funciona em ambos.
- Tempo de renderização. As telas de dispositivos móveis carregam de forma assíncrona. Um localizador correto ainda pode falhar se o teste verificar o elemento antes que ele exista, e é por isso que problemas com localizadores e esperas frequentemente aparecem juntos.
Testes gerados por IA aumentam a importância do processo.
O volume de testes está crescendo mais rápido do que as equipes conseguem revisá-lo. Estima-se que 40 a 50% do código corporativo agora seja gerado por IA (Digital.ai), e uma parcela crescente de código de teste também é gerada.
Recentemente, a equipe de engenharia do Slack executou testes do Playwright, gerados por IA, em fluxos de trabalho reais. Os testes gerados falharam em cerca de 8% das vezes em um fluxo simples e em cerca de 48% das vezes em um fluxo mais complexo. O Slack atribuiu as falhas principalmente à variabilidade no estado da interface do usuário e às abstrações existentes que interferiram na seleção precisa de elementos.Engenharia do Slack, 2026Isso era na web, não em dispositivos móveis, mas a lição permanece: os testes gerados herdam quaisquer hábitos de localização que lhes sejam atribuídos. Se ninguém revisar como os elementos são encontrados, um conjunto maior de testes significa buscas mais frAgile.
Uma ordem de localização prática para o Appium.
As próprias diretrizes do projeto Appium classificam as estratégias de localização nesta ordem e consideram o XPath como último recurso.:
- Primeiro, o ID de acessibilidade. É definido deliberadamente pela equipe do aplicativo, é rápido de consultar e usa a mesma estratégia no iOS e no Android.
- ID do recurso ou ID seguinte. Estáveis enquanto os desenvolvedores não os renomearem.
- Consultas nativas da plataforma quando nenhum ID existe. Cadeias de predicados e classes no iOS, ou UiAutomator no Android. Mais preciso que XPath, mas específico para cada plataforma.
- XPath último. As diretrizes do Appium o descrevem como lento e frágil. Quando precisar usá-lo, mantenha as expressões curtas e baseadas em atributos, em vez de índices.
Hábitos que mantêm os localizadores estáveis
- Inclua a testabilidade na definição de "concluído". Peça às equipes de desenvolvimento de aplicativos que adicionem identificadores de acessibilidade aos elementos interativos. Isso também melhora a acessibilidade para usuários reais.
- Centralizar localizadores. Mantenha-os em objetos de página ou classes de tela, para que uma alteração na interface do usuário signifique apenas uma edição, e não vinte.
- Aguarde as condições, não o tempo. Substitua os tempos de espera fixos por esperas explícitas para que um elemento esteja presente ou seja clicável.
- Analise os localizadores no processo de revisão de código, incluindo os testes gerados. Um XPath com três índices é um fracasso garantido.
- Monitore as falhas de pesquisa separadamente. Se os erros de elemento não encontrado se concentrarem em algumas telas, é aí que a limpeza do localizador se mostra vantajosa inicialmente.
Conserte o que é seu e depois administre o que não é.
Os localizadores estáveis eliminam uma grande classe de falhas que estão totalmente sob seu controle. Eles não eliminam aquelas que não estão. Dispositivos, redes e ambientes ainda produzem falhas intermitentes, e então a questão passa a ser a rapidez com que sua equipe consegue diferenciar essas falhas de defeitos reais sem executar testes manualmente novamente.
Essa é a segunda parte do problema da falta de comprometimento, e será o tema da nossa próxima publicação: Repetir o processo é fácil. Saber o que te disseram, não é..
Também recomendamos
Repetir o processo é fácil. Saber o que te disseram, não.
Se você executar um teste Appium, já poderá tentar novamente…
Tentativas repetidas não corrigem um localizador defeituoso.
Um teste de login é aprovado na segunda-feira, falha na terça-feira e…
Como uma equipe do setor público estendeu sua estratégia do UiPath para testes em dispositivos móveis.
Esta é uma história real de um cliente. Omitimos os dados pessoais do cliente…