Introdução ao Maestro

Matherson Antonio
Kobe
Published in
6 min readJan 23, 2023

Como realizar o seu primeiro Teste de UI Automatizado em um ambiente mobile.

mobile.dev

Nos tempos atuais, é imprescindível uma organização que trabalhe com o desenvolvimento de software possuir boa parte dos seus testes de forma automatizada.

No entanto, quem trabalha com testes em ambiente mobile, sabe das diversas barreiras para criação dos mesmos. Dentre elas, a que mais se destaca é a falta de ferramentas robustas e efetivas, principalmente ao analisarmos as aplicações em Flutter.

O Appium domina o mercado, mas nem sempre é a melhor opção possível. Por exemplo, em aplicações Flutter, geralmente há diversos problemas no reconhecimento das Widgets, o que inviabiliza diversos cenários de testes mapeados. Pensando nisso, resolvi escrever um pouco sobre o Maestro e mostrar como pode resolver alguns desses problemas de forma simples.

Introdução

Segundo os próprios desenvolvedores:

“Maestro é a estrutura de teste de interface do usuário móvel mais simples e eficaz.”

A ferramenta foi criada pensando em melhorias a serem feitas em seus antecessores, como Appium, Espresso, UIAutomator, XCTest. A ideia é criar uma forma simples, prática e rápida de escrever testes automatizados em UI.

Ele possui suporte para as seguintes plataformas: iOS, Android, ReactNative e Flutter. Ou seja, é possível executar os testes criados de forma igual em todas a plataformas citadas, sem a necessidade de nenhuma ação ou configuração adicional.

Configuração inicial

Vamos fazer a configuração em um Mac.

Para instalar o Maestro, é bem simples. Acesse o terminal e digite o seguinte comando:

curl -Ls "https://get.maestro.mobile.dev" | bash

Ao final da instalação, a seguinte mensagem será visível: “Welcome to Maestro!”

Para verificarmos se a instalação teve êxito, digitaremos o seguinte comando:

maestro --version

Deverá trazer como retorno a versão do maestro instalado no ambiente. Por exemplo, no meu foi exibido “1.19.2”, que é a minha versão atual.

Pronto! Apenas esses passos são necessários para configurar o Maestro.

Observação: É necessário ter o Java(Jre) instalado para fazer a instalação.

Criação do fluxo de testes

Neste artigo, utilizaremos a aplicação contato (contacts), que é nativa do android, para executarmos os testes automatizados.

A ideia do fluxo é mostrar como o Maestro pode automatizar o processo de cadastrar um novo contato no App.

Integração com o Device

Antes de iniciarmos a criação do fluxo de testes, é necessário a validação da integração com o Device (Físico ou Virtual).
Para testar, vamos começar criando um novo arquivo de texto (utilizando qualquer IDE de preferência) do tipo .yaml, passando o appID e o launchApp.

O appId é o campo que fará referência ao PackageId do App que queremos executar os comandos. Já o launchApp, é o comando para executar o app.

O bloco abaixo mostra a estrutura que deve ser utilizada para a escrita dos testes.

appId: com.android.contacts
---
- launchApp

Salve o documento com o nome contacts.yaml.

Agora, execute um Device Virtual (Também pode ser utilizado um Físico, desde que esteja com o Android Studio em execução) que será utilizado no momento dos testes.

Com tudo isso pronto, agora podemos verificar se a integração está funcional. Acesse novamente o terminal, vá até a pasta do seu arquivo .yaml criado acima e digite o seguinte comando:

maestro test contacts.yaml

No terminal, será possível visualizar o Device que ele está utilizando pra realizar o teste. No Device, o app contacts deve ser executado.

Com a execução realizada, podemos concluir que a integração foi realizada com sucesso.

Análise do fluxo de teste

O próximo passo é analisarmos o passo à passo necessário no app para a criação de um novo contato.

  1. Assim que acessarmos o app, precisaremos clicar no botão “Create new contact”.
  2. Após o clique, um modal contendo um formulário para cadastro será exibido.
  3. Percebemos que será necessário clicar e inserir texto nos campos “First name”, “Last Name”, “Phone” e “Email”.
  4. Por fim, deverá clicar no botão “Save”.

Contendo essas informações, é possível percebe que as interações necessárias utilizando o Maestro serão:

  • Clique nos elementos: ‘tapOn
  • Inserir dados aletórios aos campos do cadastro: ‘inputRandomPersonName’, ‘inputRandomNumber’ e ‘inputRandomEmail’.
  • Fechar o teclado, para seja possível visualizar o campo de email: ‘back’

Escrita do fluxo de teste

Para a escrita do fluxo do teste completo, voltaremos ao arquivo contacts.yaml.

Agora, adicionaremos os seguintes passos necessários para execução do fluxo completo analisado no tópico anterior:

appId: com.android.contacts
---
- launchApp
- tapOn: "Create new contact" #Clique no botão "Create new contact"
- tapOn: "First name" #Clique no campo "First name"
- inputRandomPersonName #Inserção de um nome alatório ao campo
- tapOn: "Last name" #Clique no campo "Last name"
- inputRandomPersonName #Inserção de um nome alatório ao campo
- back #Volta e faz o teclado ser minimizado
- tapOn: "Phone" #Clique no campo "Phone"
- inputRandomNumber: #Inserção de 10 números aleatórios
length: 10
- back #Volta e faz o teclado ser minimizado
- tapOn: "Email" #Clique no campo "Email"
- inputRandomEmail #Inserção email aleatório
- tapOn: "Save" #Clique no campo "Save"Salve o documento.

Pronto, temos nosso primeiro fluxo automatizado com o Maestro!
Chegou a hora de executarmos.

Execução dos testes

Para executar os testes de forma básica, basta abrir o terminar, navegar até do arquivo contacts.yaml e executar o mesmo comando que utilizamos para testar a integração

maestro test contacts.yaml

Todos os passos descritos no código serão exibidos, mostrando os status (Passed ou Falied).

Por fim, mostrarei outros tipos de execução que podem ser realizadas com o Maestro

Continuous Mode

Esse comando permite que você execute novamente os teste sem a necessidade de digitar novamente os comandos no terminal. Basta utilizar a com tecla “Enter”.
Para executar essa ação, vamos utilizar o mesmo comando anterior, porém, adicionaremos o ‘-c’, que faz referencia ao Continuous.

maestro test -c contacts.yaml

Generating reports

Nesse caso, ao terminar a execução dos testes, será gerado um arquivo xml contendo algumas informações como quantidade de testes, número de falhas e o motivo de cada uma das falhas.

Para executar, o comando é muito parecido com os comandos anteriores, basta adicionar ‘- format junit’, conforme mostrado abaixo.

maestro test - format junit contacts.yamlO 

Observação: Para testar um cenário de Failed, altere um dos textos do nosso fluxo de teste para um inválido (Por exemplo: “email” para “e-mail”), de forma que gere um erro e possa ser apresentado no report.

Recording Your Flow

Ao executar o teste por esse fluxo, é gerado link para um vídeo mostrando todo o fluxo executado, de forma que possa ser utilizada como um artefato. Lembrando que o tempo máximo de execução atual é de 2 minutos.

Para executar, usaremos mais o ‘test”, já que o mesmo está incluído no novo comando ‘record’.

maestro record contacts.yaml

Considerações finais sobre o Maestro

  • O Maestro é muito recomendado pra quem busca velocidade e facilidade nos testes. Então é perfeito pra quem faz testes repetitivos no dia a dia e que podem ser automatizados.
  • Um dos pontos de melhoria para o Maestro que podemos refletir seria a formato que gerado do documento de report. Ele não possui tudo o que é necessário para ser utilizado como evidência da execução dos testes, por exemplo. E qual a solução? Adicionar mais dados? Talvez um Dashboard?
  • A ferramenta muito nova, em constante evolução e certamente veio para ficar

Um resumo do que aprendemos no artigo

  • Configurar o Maestro
  • Testar a integração do Maestro com um Emulador
  • Uma forma de análise prévia para entender os recursos necessário para utilizar o Maestro
  • Formas de execução do Maestro

Leia mais em mobile.dev

--

--