Concrete Logo
Hamburger button

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

  • Blog
  • 25 de Abril de 2018
Share

Estive estudando um pouco sobre como rodar testes em paralelo e a minha maior curiosidade era como poderia executá-los em diferentes tipos de plataforma, mas para isso, tive que entender e estudar o funcionamento de algumas ferramentas antes. Então nesta série quero compartilhar minha experiência com vocês, fazendo um tutorial um pouco mais mastigado para que não tenham tantos problemas quanto eu. Mas fique sabendo desde agora que testar em paralelo não é um bicho de sete cabeças.

Ferramentas para a configuração inicial dos testes

Let’s go!

Configuração Inicial

Vamos, primeiramente, criar o nosso projeto de testes, então abra a 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 o mais simples possível.

Perfeito. Agora vamos no nosso arquivo pom.xml para adicionar todas as dependências e plugins que vamos usar em nosso projeto.

  • Java-Client Appium

  • Surefire Maven Plugin

Lembrando que neste projeto já vem setado o Junit, logo temos que alterar somente a versão dele para 4.7.

  • Junit 4

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

File > New > Folder > [folder-name]

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

Faça o download deles e jogue na pasta que você acabou de criar.

Criação das Classes

Ufa… depois de todas essas configurações podemos começar a criar nossas classes. A ideia é utilizar o padrão Page Object em nossos testes e vamos testar também aplicações semelhantes nas quais 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 criada junto com a nossa estrutura (pode excluir ela!).

Agora vamos criar um outro pacote que vai abrigar todas as nossas screens.

File > New > Package > [package-name]

E dentro desse 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: o PageFactory, responsável por buscar todos os meus elementos em tela, mas para isso precisamos de uma instância do nosso driver e do contexto da page. Criamos o PageFactory no meu construtor porque sempre que criarmos uma instância da CalculatorScreen, ele vai buscar todos os seus 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, mas posso ajudar com links, já que existem diversas ferramentas para isso).

Configurando Emuladores

Inspetores de tela

Depois de pegar os elementos podemos atualizar a nossa page. Agora temos esse resultado:

Reparem nas annotations. Dentro delas especificamos qual vai ser o nosso locator, apesar de termos locators separados tanto do Android quanto 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 a 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 com cada um.

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, que temos que rodar dentro do diretório AndroidAndIosTesteParaleloComAppium/, executando o comando:

$ mvn clean test

Tcharannn!

Foi executado um teste de cada vez. 😉

No próximo post vou focar em como fazer a nossa estrutura atual rodar em paralelo no Selenium Grid. Obrigado! <3

Refrências

No capítulo de QA da Concrete nós nos importamos com o que criamos. Somos parte fundamental dos times de desenvolvimento, pois garantimos a qualidade de engenharia do produto final. Nosso papel é desenvolver e automatizar a suíte de testes de comportamento, criando e mantendo testes de aceitação, regressão e integração. Para isso, utilizamos tecnologias como Cucumber, Calabash e Ruby. Nosso DNA tem palavras como Agile Testing, Especificação por Exemplo e Automação de Testes. Trabalhe com os melhores! Acesse: concrete.com.br/vagas