Rodando testes em paralelo com Appium, Selenium Grid e Java: Parte 1

Leonardo Menezes
assert(QA)
Published in
4 min readMar 9, 2018
Estrutura Selenium Grid / Imagem : Kalyne Ramon

Estive estudando um pouco sobre como rodar testes em paralelo e a minha maior curiosidade era como poderia executar testes em paralelo para diferentes tipos de plataforma. Para isso tive que entender e estudar o funcionamento de algumas ferramentas antes. Nesta série quero compartilhar minha experiência com vocês de como eu fiz isso, e fazer um tutorial um pouco mais mastigado pra vocês, para que não tenham tantos problemas quanto eu e veja que testar em paralelo não é um bicho de sete cabeças!

Ferramentas necessárias para configuração inicial dos testes.

Let’s Go!

Configuração Inicial

Vamos primeiramente criar o nosso projeto de testes, abra sua IDE, e crie um projeto maven (no meu caso vou usar o eclipse):

File > New > Maven > Maven Project (Eclipse)

Escolha maven-archetype-quickstart 1.1, para gerar um projeto mais simples possível.

Perfeito, agora vamos no nosso arquivo pom.xml e vamos adicionar todas as dependências e plugins que vamos usar no nosso projeto.

  • Java-Client Appium
  • Surefire Maven Plugin

Lembrando que no nosso projeto já vem setado o Junit, vamos somente alterar a versão dele para 4.7.

  • Junit 4

Depois da configuração do pom.xml, vamos criar um diretório que vamos colocar os nossos apps.

File > New > Folder > [folder-name]

Vou colocar aqui também os arquivos dos app para download:

Faço o download deles e jogue na pasta que vc acabou de criar!

Criação das Classes

Ufa, depois de todas essas configurações podemos começar a criar nossas classes, a idéia seria utilizar o padrão Page Object, nos nossos testes. Vamos também testar aplicações semelhantes onde a aplicação IOS tem as mesmas funcionalidades que a aplicação android! Dentro da nossa estrutura src/test/java/meu-pacote-de-tests já existe uma classe de teste que foi criado junto com nossa estrutura. (pode excluir ela!)

Vamos criar um outro pacote que ficará todas as nossas screens.

File > New > Package > [package-name]

E dentro deste pacote vamos criar a classe screen que vai contemplar todos elementos da tela da nossa aplicação.

Esse é o início da nossa classe e a parte mais importante rsrsrs, o PageFactory responsável por buscar todos os meus elementos em tela, para isso precisamos de uma instância do nosso driver e do contexto da page. Criamos o PageFactory no meu construtor porque sempre criar uma instância da minha CalculatorScreen ele vai buscar todos os seu elementos com o driver específico que recebermos no construtor. Agora vamos pegar os elementos da tela, não vou mostrar como fazer isso aqui e nem como configurar os emuladores mais posso ajudar com os links, existem diversas ferramentas para isso!

Cofigurando Emuladores

Inspetores de tela

E depois de pegar os elementos podemos atualizar nossa page, e agora temos esse resultado :

Reparem nas annotations, dentro delas especificamos qual será o nosso locator, temos os locators separados tanto do android como o do ios em apenas uma variável! Visivelmente não temos aquele findElement(By())… Consegue visualizar a abstração da nossa page? Agora vamos finalizar nossa classe criando os métodos com as ações da page.

Beleza! Vamos criar as duas classes de teste para android e ios, dentro do pacote src/test/java/meu-pacote-de-tests

  • Classe de Teste Android
  • Classe de Teste IOS

Os casos de teste são bem simples, estão apenas verificando se a aplicação está realizando corretamente o fluxo da soma. Especifiquei também o capabilities de cada dispositivo, e vou deixar um link aqui explicando o que faz cada capability.

Show, agora já podemos rodar os testes. Inicie seu emulador android (não precisa iniciar o simulador ios) e inicie o appium como de costume com o comando :

$ appium

Prontinho agora só rodar os testes, para isso vamos aproveitar e usar o maven! Dentro do diretório AndroidAndIosTesteParaleloComAppium/ execute o comando :

$ mvn clean test

Tcharannn!!

Foi executado um teste de cada vez com a mesma page, próximo post vou focar no selenium grid e como vamos fazer nossa estrutura atual rodar em paralelo no selenium grid.

Obrigado ❤

Links

--

--