Esta página fornece ajuda para solução de problemas e respostas a perguntas frequentes sobre a execução de testes com Firebase Test Lab. Os problemas conhecidos também estão documentados. Caso você não encontre o que procura ou precise de ajuda, entre no canal #test-lab do Slack para o Firebase ou entre em contato com o suporte da plataforma.
Solução de problemas
Por que meu teste está demorando tanto para ser executado?
Quando você seleciona um dispositivo com um nível alto de capacidade no catálogo de Test Lab, os testes podem começar mais rapidamente. Quando um dispositivo tem baixa capacidade, os testes podem levar mais tempo para serem executados. Se o número de testes invocados for muito maior do que a capacidade dos dispositivos selecionados, os testes poderão levar mais tempo para serem concluídos.
Os testes executados em qualquer nível de capacidade do dispositivo podem demorar mais por causa dos fatores a seguir:
- Tráfego, que afeta a disponibilidade do dispositivo e a velocidade de teste.
- Falhas no dispositivo ou na infraestrutura, que podem acontecer a qualquer momento. Para verificar se há uma infraestrutura relatada para Test Lab, consulte Painel de status do Firebase.
Para saber mais sobre a capacidade de dispositivos em Test Lab, consulte a capacidade do dispositivo para Android e iOS.
Por que os resultados do teste foram inconclusivos?
Os resultados inconclusivos geralmente acontecem devido a erros de infraestrutura ou testes cancelados.
Os erros de infraestrutura são causados por problemas internos do Test Lab, como erros de rede ou comportamentos inesperados em dispositivos. O Test Lab desativa internamente os testes que produzem erros de infraestrutura várias vezes antes de relatar um resultado inconclusivo. No entanto, é possível desativar essas tentativas usando a opção failFast.
Para determinar a causa do erro, faça o seguinte:
- Procure por falhas conhecidas no Painel de status do Firebase.
Repita o teste em Test Lab para verificar se é possível reproduzir.
Faça o teste em outro tipo de dispositivo, se aplicável.
Se o problema persistir, entre em contato com a equipe do Test Lab no canal #test-lab no Slack do Firebase.
Por que a fragmentação deixou meus testes mais demorados?
A fragmentação pode fazer com que os testes sejam executados por mais tempo quando o número de fragmentos especificado exceder o número de dispositivos disponíveis para uso no Test Lab. Para evitar essa situação, tente usar outro dispositivo. Para mais informações sobre como escolher um dispositivo diferente, consulte Capacidade do dispositivo.
Por que está demorando muito para o início do meu teste?
Quando solicitação de teste é enviada, o app é validado, assinado novamente etc. para se preparar para executar testes em um dispositivo. Normalmente, esse processo é concluído em menos de alguns segundos, mas pode ser afetado por fatores como o tamanho do app.
Depois que o app estiver preparado, as execuções de teste são programadas e permanecem em uma fila até que um dispositivo esteja pronto para a execução. Até que todas as execuções de teste terminem, o status da matriz será "Pendente", independentemente de estarem na fila ou sendo ativamente executadas.
Por que meu teste está demorando muito?
Após a conclusão da execução do teste, é feito o download dos artefatos de teste no dispositivo, processado e enviado para Cloud Storage. A duração desta etapa pode ser afetada pela quantidade e pelo tamanho dos artefatos.
O app não retorna dados e não consegue localizar as capturas de tela
Os artefatos de execução do teste (como capturas de tela e arquivos de registro) são armazenados em Google Cloud Storage e renderizados diretamente no console do Firebase. Se a execução do teste foi feita nos últimos 90 dias, verifique se você atribuiu papéis no nível do projeto (proprietário, editor ou visualizador do projeto). Além disso, confira se o Cloud Audit Logging não está ativado para seu projeto ou organização.
Se a execução foi feita há mais de 90 dias, é provável que os artefatos de teste tenham sido excluídos automaticamente. Confira a configuração do bucket de resultados, clicando na guia Resultados do teste no painel do Test Lab. O bucket de resultados padrão é configurado para reter objetos por 90 dias.
Para manter seus artefatos de teste por mais tempo, execute o comando
gcloud firebase test android run
com a flag --results-bucket
e transmita o
nome do bucket de resultados. Para mais informações, consulte
a documentação de referência do comando gcloud firebase test android run
.
Por que estou recebendo resultados parciais ou ausentes do caso de teste de instrumentação?
Ao executar testes de instrumentação, você pode conferir erros de teste que indicam resultados parciais com mensagens como Test run failed to complete. Expected
x tests, received y
(em que y
é menor que x
). Isso significa que o Test Lab pode não analisar o logcat para acessar os marcadores de início
ou fim do caso de teste que normalmente são gerados pelo
AndroidJUnitRunner.
Algumas causas comuns desse problema são as seguintes:
Descrição do problema | Possível solução |
---|---|
O caso de teste não foi executado devido a um tempo limite. Se a duração total dos testes for maior que o tempo limite especificado ou por mais do que um tempo limite máximo, o Test Lab vai cancelar o restante dos casos de teste. |
|
O caso de teste não foi concluído porque foi interrompido prematuramente ou teve problemas. O caso de teste pode ser encerrado prematuramente devido a uma exceção não identificada ou a um erro de declaração. Os casos de teste podem ficar travados em um loop infinito ou não continuar, por exemplo, se o app não mostrar a visualização correta e o caso de teste não puder realizar a ação na interface. |
Verifique o vídeo e o logcat para investigar onde o teste
foi interrompido.
|
Um executor de testes personalizados, incluindo a extensão de AndroidJUnitRunner, falhou
de forma inesperada ou escreveu em logcat marcadores inesperados de início ou fim dos casos de teste.
|
Verifique o código do executor de testes. |
Registros em excesso gravados em logcat , que sobrecarregaram o buffer ou travaram
o processo logcat .
|
Reduza as gravações para logcat .
|
O app em teste sofreu uma falha. | Depurar o app. |
Perguntas frequentes
Quais são as cotas sem custos financeiros para Test Lab? O que devo fazer se minha cota acabar?
O Firebase Test Lab oferece cotas sem custos financeiros para testes em dispositivos e para uso em APIs do Cloud. A cota de teste usa o plano de preços padrão do Firebase, ao contrário das cotas da API do Cloud.
Cota de teste
As cotas de testes são determinadas pelo número de dispositivos usados para executar testes. O plano Spark do Firebase tem uma cota de testes fixa sem custo para os usuários. No plano Blaze, suas cotas poderão aumentar se o uso do Google Cloud crescer com o tempo. Se você alcançar o limite da sua cota de testes, aguarde até o próximo dia ou faça upgrade para o plano Blaze se estiver no plano Spark. Você poderá solicitar um aumento de cota caso já esteja no plano Blaze. Para mais informações, consulte Cota de teste.
É possível monitorar o uso da cota de testes no console do Google Cloud.
Cota da API Cloud Testing
A API Cloud Testing vem com dois limites de cota: solicitações diárias e a cada 100 segundos, ambas por projeto. Você pode monitorar o uso no console do Google Cloud.
Cota da API Cloud Tool Results
A API Cloud Tool Results tem dois limites de cota: consultas diárias e a cada 100 segundos, ambas por projeto. Você pode monitorar o uso no console do Google Cloud.
Consulte Cotas da API Cloud para Test Lab para mais informações sobre os limites da API. Se você tiver alcançado o limite de uma cota de API:
Envie uma solicitação de aumento. Para fazer isso, edite suas cotas diretamente no console do Google Cloud. A maioria dos limites está definida como o máximo por padrão;
ou solicite mais cota de API preenchendo um formulário no Console do Google Cloud ou entrando em contato com o suporte do Firebase.
Como faço para descobrir se o tráfego que chega ao back-end é proveniente de Test Lab?
No seu back-end, é possível determinar se o tráfego vem de dispositivos de teste hospedados pelo Firebase ao verificar o endereço IP de origem em nossos intervalos de IP.
O Test Lab funciona com VPC-SC?
O Test Lab não funciona com o VPC SC, que bloqueia a atividade de cópia de apps e outros artefatos de teste entre o armazenamento interno do Test Lab e os buckets de resultados dos usuários.
Como detectar testes instáveis no Test Lab?
Para detectar comportamentos instáveis nos testes, recomendamos o uso de --num-flaky-test-attempts . As novas execuções de flakes são faturadas ou contadas em relação à cota diária da mesma forma que as execuções de teste normais.
Lembre-se:
- Toda a execução do teste é executada novamente quando uma falha é detectada. Não há suporte para repetir apenas casos de teste com falha.
- As execuções de nova tentativa de despacho são programadas para serem executadas ao mesmo tempo, mas não há garantia de que serão executadas em paralelo, por exemplo, quando o tráfego exceder o número de dispositivos disponíveis.
O Test Lab é compatível com dispositivos wearable?
Sim. O Test Lab é compatível com o Google Pixel Watch. Agora você pode executar testes no app para Wear independente nos dispositivos Google Pixel Watch. Para saber mais sobre os dispositivos Test Lab, consulte Testar em dispositivos disponíveis.
O Test Lab oferece suporte aos dispositivos Google mais recentes?
Sim. O Test Lab é compatível com o Google Pixel Tablet e o Google Pixel Fold. É possível executar testes em dispositivos físicos independentes. Para saber mais sobre os dispositivos Test Lab, consulte Testar em dispositivos disponíveis.
Como detectar um teste em execução no Test Lab?
Se você está testando seu app no Firebase ou executando testes para um
relatório de pré-lançamento
no Play Console, é possível detectar se um teste está sendo
executado em um dispositivo hospedado pelo Firebase ao verificar a propriedade do sistema
firebase.test.lab
no arquivo MainActivity
. É possível executar mais instruções
com base no valor booleano de testLabSetting
. Para mais
informações, consulte
Comportamentos de teste modificados.
O Test Lab é compatível com Appium, Flutter/FlutterDriver, ReactNative/Jest ou Cucumber?
Embora alguns desses itens estejam em nossos planos, não podemos garantir compromisso de suporte com essas plataformas de testes e desenvolvimento de apps. No entanto, se você criou seu app com um framework que tem suporte ao Espresso, como o Flutter, é possível programar um teste de instrumentação usando o Espresso e depois executar o experimento no Test Lab.
O Test Lab oferece suporte a testes de apps ofuscados, por exemplo, com o ProGuard ou o R8?
O Test Lab não oferece suporte explícito à ofuscação ou desofuscação. Embora o app provavelmente seja executado, todos os dados ofuscados, como stack traces, vão aparecer como ofuscados nos registros.
Posso usar meu dispositivo dobrável em diferentes estados e posições dobráveis ao testar em Test Lab?
Sim. É possível testar seu dispositivo dobrável em estados e posturas dobráveis.
Os dispositivos dobráveis podem estar em vários estados dobráveis, como FLAT
(totalmente aberto) ou HALF_OPENED
(entre totalmente abertos e completamente fechados).
Por outro lado, as posições consistem em orientação específica do dispositivo e estado
dobrável. Por exemplo, a posição de mesa, que é um estado HALF_OPENED
na orientação horizontal, ou a posição de livro, que é um estado HALF_OPENED
na orientação vertical.
Se você estiver executando testes de instrumentação, use a biblioteca Jetpack WindowManager e siga a documentação Como testar seu app em dispositivos dobráveis para testar diferentes estados e posturas.
Como alternativa, os estados disponíveis são específicos do dispositivo e podem ser usados para interagir com o adb
shell command cmd device_state
.
- Para listar o estado atual, execute
adb shell cmd device_state state
. - Para definir ou substituir o estado atual, execute
adb shell cmd device_state state <IDENTIFIER>
. - Para redefinir o estado, execute
adb shell cmd device_state state reset
. - Para verificar os estados disponíveis, execute o comando
adb shell cmd device_state print-states
no dispositivo dobrável.
$ adb shell cmd device_state print-states Supported states: [ DeviceState{identifier=0, name='CLOSED', app_accessible=true}, DeviceState{identifier=1, name='HALF_OPENED', app_accessible=true}, DeviceState{identifier=2, name='OPENED', app_accessible=true}, DeviceState{identifier=3, name='REAR_DISPLAY_STATE', app_accessible=true}, ]
$ adb shell cmd device_state print-states Supported states: [ DeviceState{identifier=0, name='CLOSE', app_accessible=true}, DeviceState{identifier=1, name='TENT', app_accessible=true}, DeviceState{identifier=2, name='HALF_FOLDED', app_accessible=true}, DeviceState{identifier=3, name='OPEN', app_accessible=true}, ]
Posso testar o Test Lab se eu não tiver um app?
Ao contrário de outros produtos do Firebase, não é necessário adicionar um SDK do Firebase para usar o Test Lab. Se você ainda não tiver um app, faça o download de um APK ou crie um aplicativo e um APK de teste usando uma das amostras no repositório do AndroidX no GitHub. Você só precisa do arquivo APK do seu app para executar um teste Robo. Já um teste de instrumentação requer um APK de teste e um app criados usando o código-fonte. Para mais informações, leia sobre Testes de instrumentação.
Para saber mais sobre os recursos do Test Lab, consulte Começar a testar para Android com o Firebase Test Lab.
Quais são os melhores dispositivos para testes de diferença entre capturas de tela?
Os testes de diferença entre capturas de tela têm base nas comparações de imagens
de tela coletadas ao executar um teste com golden images que representam o comportamento
esperado. Esses testes podem ser mais frágeis em alguns tipos de dispositivos do que em outros. Recomendamos segmentar
dispositivos com um emulador de ARM (*.arm
) para esses tipos de teste. Os dispositivos com um emulador de ARM usam
imagens muito semelhantes ou idênticas aos emuladores "genéricos" do Android Studio.
Também recomendamos que você investigue as bibliotecas de teste que podem ajudar a tornar os testes de captura de tela mais robustos para lidar com mudanças esperadas.
O Test Lab atualiza dispositivos virtuais?
Sim. Os dispositivos virtuais são atualizados quando as seguintes mudanças são feitas:
- Atualizações para imagens atuais
- Descontinuação de níveis anteriores de API
- Novos níveis da API do Android foram adicionados
Como faço para ativar os relatórios de cobertura?
Para ativar os relatórios de cobertura, adicione coverage=true
ao
campo environmentVariables
.
Se você estiver usando o Android Test Orchestrator, vai precisar fornecer um diretório para
armazenar os resultados de cobertura:
--environment-variables coverage=true,coverageFilePath=/sdcard/Download/
Se você não usa o Orchestrator, então pode especificar um caminho de arquivo:
--environment-variables coverage=true,coverageFile=/sdcard/Download/coverage.ec
Onde posso encontrar detalhes do dispositivo, como resolução, ABIs suportadas etc.?
As informações detalhadas do dispositivo estão disponíveis na API e podem ser acessadas no cliente gcloud usando o comando "describe":
gcloud firebase test android models describe MODEL
Problemas conhecidos
Captchas de login
O teste Robo não pode ignorar as telas de login que exigem ação adicional do usuário além da inserção de credenciais para fazer login (como a conclusão de um CAPTCHA.
Suporte à estrutura de interface
O teste Robo funciona melhor com apps que usam elementos de IU do framework de IU do Android (incluindo objetos View
, ViewGroup
e WebView
). Se ele for usado para testar apps que utilizam outras estruturas, incluindo o mecanismo de jogos Unity, ele provavelmente será encerrado sem passar da primeira tela.