Appium: Automação para apps Mobile
Parte II
Continuando a nossa série sobre automação mobile utilizando o Appium, hoje iremos mostrar a estrutura de um projeto de automação com cucumber + ruby + appium.
Se você já veio do nosso último post (algo que recomendo a leitura), onde explicamos o que é, como surgiu, pré-requisitos para a sua utilização e os primeiros passos com o Appium, então não perca este post sobre a estrutura de um projeto de automação mobile.
Caso você ainda não tenha conferido a primeira parte, acesse o link abaixo:
Vamos iniciar de onde?
Presumo que você já tenha todo o ambiente configurado, então vamos colocar a mão na massa. O primeiro passo é saber qual é o app que será testado, provavelmente você já testa/testou o seu app manualmente e agora está buscando mais uma forma para aumentar a cobertura dos seus testes com a automação (o que na verdade a automação irá te ajudar é ter minimamente cenários automatizados para a sua regressão, deixando mais tempo para testar as funcionalidades mais complexa, fluxos alternativos e realizando testes exploratórios). Neste passo a passo irei utilizar o app da calculadora que já vem no próprio Android Oreo.
Mas como pego um app que já está instalado no meu smartphone?
Esse comando mostra todos os pacotes de apps instalados no seu celular.
Copie o package do seu app (depois dos :)
Digite o comando adb shell pm path e cole o pacote do seu app:
Copie o path do seu app e execute o comando adb pull <diretório copiado> <diretório de destino>.
Para baixar o app no seu diretório atual é necessário dar o espaço e colocar o ponto(No meu caso o app vai para a pasta Desktop).
Criando o projeto
Caso ainda não possua a gem do cucumber instale com o comando:
gem install cucumber
Criando o diretório/pasta do seu projeto:
Agora que você já criou o diretório do seu projeto, acesse ele com pelo seu editor de texto favorito(o meu é o VSCode).
Vamos colocar o nosso app dentro da pasta /features/support do nosso projeto:
Agora vamos abrir o arquivo env.rb e iniciar a nossa configuração de ambiente:
Acima carregamos na memória as gems do appium e do cucumber, definimos as capabilities do nosso app, iniciamos e finalizamos o driver do appium a cada execução.
No primeiro post explicamos o que são capabilities, o que significa cada argumento e como conseguir os dados para preenchê-los.
Escrevendo os Cenários:
Como estamos testando um app de calculadora, nada mais justo do que começar escrevendo o cenário de uma das quatros principais operações de uma calculadora.
Crie o arquivo dentro da pasta features com a extensão .feature e escreva o cenário utilizando o BDD:
Inicie o servidor do appium clicando em Start Server:
Acesse o seu projeto pelo terminal e execute o comando cucumber:
Neste momento o cucumber gera os steps definitions, mas como os steps estão indefinidos o appium não executará nenhuma ação.
Crie o arquivo “multiplicar_steps.rb” dentro da pasta step_definitions.
Copie e cole os snippets gerados do seu terminal, no arquivo criado.
Na sessão aberta, preencha os campos conforme os capabilities que estão no seu env.rb:
Clique em Start Session e aguarde o Appium subir o app no seu device:
O nosso primeiro step valida se o app foi aberto corretamente. Uma das formas de verificar isso é identificando um elemento do app na tela inicial e validar se ele foi aberto corretamente:
Como nosso app tem um id para identificar a tela principal, podemos utilizá-lo e validar dentro do nosso step:
Agora precisamos multiplicar 3 por 9, de acordo com a nossa especificação do BDD:
Precisamos mapear os elementos da tela que são as teclas 3, 9, operação de multiplicação e o “=”. Faremos isso neste step:
Acima, mudei as variáveis “int” e “int1” para “a” e “b”, em seguida, mapeei os elementos citados.
Dentro do elemento “digit_3” e “digit_9”, realizei uma interpolação com as variáveis “a” e “b” que contém os valores 3 e 9 que estão nos steps do nosso cenário, ou seja, quando você mudar os valores do seu BDD, automaticamente esses valores serão passados para as variáveis.
Por fim, faremos o nosso querido assert dentro do Então. Para começar, precisamos pegar o valor do resultado da multiplicação, como faremos isso?
É só mapear o resultado, verificar se ele possui id (que é o nosso caso) e pegar o texto deste elemento:
O id do elemento é “result”, com o método “.text” pegamos o valor que contém no atributo texto do elemento.
Sabendo disso utilizamos uma condição dentro do nosso teste para caso o valor seja diferente de 27 o nosso Então falhe:
Lendo a nossa condição dá para entender: Falhe “Texto que será apresentado no console” a não ser que o texto do elemento seja igual ao nosso resultado.
Execute o nosso teste pelo terminal com o comando “cucumber” e veja os seguintes resultados:
Outro passo importante é criar o arquivo Gemfile, fora da estrutura da pasta features com as gems que serão utilizadas no nosso projeto:
Essa é a estrutura final do nosso projeto de automação mobile:
Dúvidas que podem surgir ao final do post
Bruno e Thialison, você faz desta forma a automação mobile? Sim e não, esse post mostra uma base de projeto para a sua automação e você pode começar com ele!!!
E o ScreenObjects? Ele fará parte do nosso próximo post, se você faz PageObject no seu projeto Web, já pode tentar neste projeto mobile.
Tentei multiplicar dezenas, quebrou o meu teste e agora? Quanto mais você souber da linguagem que está trabalhando, mais claro ficará para resolver esse problema, a melhor forma seria criando um método que te ajudará a resolver esse inconveniente. Vamos escrever sobre isso nos próximos posts também.
É isso por enquanto pessoal, tentei mostrar de uma forma simples como é a estrutura de um projeto mobile com Appium em poucos passos.
Tem bastante conteúdo sobre isso pela internet, então divirta-se!!!
Aguarde o nosso próximo post que será sobre ScreenObjects.
Você pode conferir este projeto no GitHub do Thialisson que também é autor do artigo:
Autores do artigo: