Executar um script Robo (Android)

Neste documento, descrevemos como usar o recurso scripts Robo na automatização de tarefas manuais de controle de qualidade de apps para dispositivos móveis. Eles permitem estratégias de teste de integração contínua (CI) e de pré-lançamento. Por exemplo, é possível usar scripts Robo para testar uma jornada do usuário comum ou fornecer uma entrada de interface do usuário (IU) específica, como um nome de usuário e uma senha. Os scripts Robo são um recurso do teste Robo.

Com os scripts Robo, é possível gravar a si mesmo durante um fluxo de trabalho no seu app e fazer upload dessa gravação para o Console do Firebase e realizar testes Robo. Ao executar um teste Robo com um script anexado, primeiro o Robo lê suas ações em script e depois analisa o app normalmente.

Os scripts Robo usam o teste Robo como o mecanismo de teste. Na forma mais básica, um script Robo é uma sequência de ações de IU, como digite o texto em "Nome do usuário" e, em seguida, toque no botão "OK". Os scripts Robo também podem incluir ações, como aguardar a exibição de um elemento, tocar em um ponto específico de um elemento e executar comandos de shell do Android Debug Bridge (adb).

Os scripts Robo usam o teste Robo como o mecanismo de teste. Na forma mais básica, um script Robo é uma sequência de ações de IU, como digite o texto em "Nome do usuário" e, em seguida, toque no botão "OK". Os scripts Robo também podem incluir ações, como aguardar a exibição de um elemento, tocar em um ponto específico de um elemento e executar comandos de shell do Android Debug Bridge (adb).

Os scripts Robo têm as seguintes vantagens em relação aos frameworks de teste tradicionais:

Capacidade Descrição
Altamente robusto Os scripts Robo toleram diferenças estruturais e comportamentais significativas entre as versões e a inconsistência do app.
Resposta aberta Após a conclusão de um script Robo, o teste Robo básico pode assumir o controle e continuar testando o app. Essa abordagem de teste contínuo permite vários casos de uso importantes. Por exemplo, use um script Robo para levar um app a um estado específico executando um fluxo de login personalizado.
Pode ser gravado Você não precisa codificar os scripts Robo manualmente. Eles podem ser gravados usando o Gravador de script Robo no Android Studio. A criação ou modificação de scripts Robo normalmente não requer nenhum conhecimento sobre desenvolvimento para dispositivos móveis.
Flexível Os scripts Robo podem interagir com elementos da IU não nativos que são comuns em jogos.

Os scripts Robo são acionados condicionalmente durante um teste Robo, permitindo que os usuários aprimorem o comportamento do Robo, geralmente para ter uma cobertura maior ou para uma funcionalidade específica. Ao contrário dos frameworks de teste tradicionais, os scripts Robo oferecem suporte a:

  • Várias condições de acionamento, por exemplo, o nome de um pacote de app em particular estar ativo (ou não) ou um elemento específico ser mostrado na tela (ou não).
  • Controles de execução, por exemplo, um número máximo de execuções, prioridade e estágio de rastreamento relevante.
  • Tipos de ação não convencionais (condicionais, que ignoram elementos ou que fecham telas).

Recomendamos que você use scripts Robo sempre que possível, porque eles podem ser mantidos facilmente. Por exemplo, use um script Robo e:

  • Navegue por fluxos de trabalho significativos para realizar a funcionalidade principal de um app. Por exemplo, você pode fazer login, configurar o estado de um app após a primeira inicialização e registrar um novo usuário.
  • Mantenha o foco do Robo em uma parte específica de um app para aproveitar ao máximo o tempo do Teste Robo. O script Robo orienta o teste Robo para alcançar a parte relevante de um app, em que o teste Robo retoma um rastreamento totalmente automatizado.
  • Leve um app para um estado ou uma tela específicos para analisar, por exemplo, uma mensagem, uma Política de Privacidade ou um nível específico de um jogo.
  • Realize um teste de instrumentação completo, com ou sem a retomada pelo teste Robo de um rastreamento totalmente automatizado após a conclusão do script Robo.

Use os recursos mais avançados do script Robo para fazer o seguinte:

  • Realizar ações antes que o Robo comece a rastrear o app em teste ou após a conclusão do rastreamento, como limpar os dados do app em teste antes de um rastreamento ou alterar as configurações do dispositivo.
  • Alterar aspectos do comportamento Robo durante um rastreamento, especificamente:
    • Fazer o Robo ignorar alguns widgets de IU ou telas do app.
    • Fornecer uma ação personalizada para o Robo executar ao fazer o retorno a partir de uma tela específica.
    • Fazer com que o Robo execute ações específicas sempre que uma tela específica de um app for encontrada durante o rastreamento.
  • Personalizar totalmente a forma de rastreamento do Robo. Por exemplo, você pode usar uma combinação de ações condicionais e não condicionais para manter o app em teste no segundo plano durante o rastreamento, executando manipulações de dispositivo e descartando as caixas de diálogo pop-up que forem exibidas.

Nem todos os tipos de testes são substituídos pelos scripts Robo. Você ainda vai precisar executar os testes de unidade para capturar bugs lógicos de nível inferior no seu app. Esses testes normalmente não exigem um ambiente Android ou iOS. Recomendamos que você adicione os testes de script Robo aos testes de instrumentação segmentados que podem ter declarações específicas e detalhadas sobre a lógica de negócios e que são expressas de melhor forma no código.

Gravar um script Robo usando o Test Lab no Android Studio

O Gravador de script do Robo no Android Studio permite que você grave scripts Robo interagindo com o app diretamente no seu dispositivo. Siga estas instruções para começar a usar os scripts Robo com a ferramenta do Firebase no Android Studio:

  1. Abra o Android Studio e selecione Tools -> Firebase.

  2. No painel do Firebase, clique em Gravar script Robo e usá-lo para orientar o teste Robo.

  3. Clique em Gravar script Robo. A caixa de diálogo "Selecionar alvo da implantação" é exibida.

  4. Selecione o dispositivo em que você quer gravar o script Robo.

  5. Depois de gravar o script Robo no dispositivo, salve o arquivo como um arquivo JSON no local desejado.

  6. Abra a página do Test Lab no Console do Firebase e faça upload do arquivo de script JSON e do APK do aplicativo.

  7. Clique no botão Continuar. Você vai precisar selecionar o dispositivo e o nível da API. Depois que o script de teste é concluído, o Test Lab gera o relatório de teste.

  8. (Opcional) Para copiar ou fazer o download do logcat do relatório de teste e do vídeo, clique em Visualizar arquivos de origem.

Por padrão, os mecanismos de robustez de script Robo evitam que ele falhem antecipadamente. Se você escolher o modo de execução strict e um script Robo falhar em qualquer ponto, o Test Lab abandonará todas as outras etapas do script e retomará um rastreamento Robo comum. Na maioria das vezes, os scripts do Robo falham porque ele não consegue encontrar um elemento obrigatório na tela. Para evitar falhas, verifique se a navegação do seu app é previsível e se as telas são mostradas em uma ordem determinista.

Executar um script Robo no Test Lab

Siga as instruções a seguir para executar um script Robo no Test Lab:

  1. Abra a página do Test Lab no Console do Firebase.

  2. Faça upload do APK ou AAB do app no campo APK ou AAB do app.

  3. Faça upload do arquivo Robo gravado ou criado manualmente no campo Robo script (opcional).

Fornecer um script Robo para uma execução de teste Robo local

Use a opção a seguir para fornecer um script Robo a uma execução local de teste:

--robo-script-file <robo-script-path>

Substitua <robo-script-path> por um caminho para seu arquivo de script Robo no sistema de arquivos local. Siga as instruções para uma execução de teste Robo local.

Especificar um script Robo em uma invocação de teste da CLI gcloud

Use a sinalização da CLI gcloud a seguir para especificar um script Robo em uma invocação de teste da CLI gcloud:

--robo-script = <robo-script-path>

Substitua <robo-script-path> por um caminho para seu arquivo de script Robo no sistema de arquivos local ou no Cloud Storage usando a notação gs://. Exemplo:

gcloud firebase test android run --app = <path_to_app_apk_file> --robo-script = <robo-script-path>

Próximas etapas