BIGtheme.net http://bigtheme.net/ecommerce/opencart OpenCart Templates
20/11/2017 - 7:08 PM

AUTOMAÇÃO DE TESTES MOBILE COM APPIUM – PARTE 3

Neste post aprenderemos, de forma básica e direta, a como interagir com os alguns componentes Android, efetuando ações como digitação e cliques.

Introdução

O Appium é utilizado para automatizar aplicações Android, onde iremos remover a necessidade de executar sempre o mesmo caso de teste manualmente. Aprenderemos a como localizar os componentes na tela, interagir e garantir que os resultados esperados estejam presentes na aplicação mobile.

Mão na massa…

Este post possui muito código. É recomendado despreender um tempo maior que nos outros posts para que você possa executar todos os passos e automatizar a aplicação mobile. Também é necessário ter conhecimento dos outros dois posts sobre Appium.

Neste post utilizaremos apenas a forma de localização por ID, ou seja, utilizaremos os dados da propriedade resource-id dos componentes na tela

Escrevendo a base de código para localização dos componentes

Tudo referente a localização com o Appium inicia com o objeto AndroidDriver. Como, nos posts anteriores, colocamos o nome desse objeto como driver, utilizaremos este nome para acessar diversos métodos pertencentes a ele.

Um método é especialmente importante e utilizado sempre para a localização de elementos: findElement()

O método findElement() recebe por parâmetro um objeto chamado By. Este objeto possui diversos métodos que são as formas de localização, entre elas o id().

Cada forma de localização recebe um parâmetro que é a base da localização. Por exemplo: se estamos localizando por id() é necessário colocar o conteúdo do resource-id como parâmetro, entre aspas duplas (isso serve para qualquer método do objeto By).

O comando completo fica como o abaixo:

driver.findElement(By.id("<resource-id aqui>");

Se efetuarmos uma tradução do comando é possível entender a lógica de localização (em português de forma simples onde os itens em parênteses são os comandos):

Android (driver), encontre o elemento (findElement) pelo (By) id (id) "resource-id aqui"

Simples, não?

Caso de Teste para automatizar

Iremos efetuar as seguintes ações no aplicativo TrianguloApp:

  1. Digitar o valor 3 no campo Lado 1
  2. Digitar o valor 3 no campo Lado 2
  3. Digitar o valor 3 no campo Lado 3
  4. Clicar no botão Calcular
  5. Validar a mensagem “O triângulo é Equilátero”

O TrianguloApp pode sr obtido através do post Automação de Testes Mobile com Appium – Parte 2

Execute estes passos na aplicação par podermos, na sequência, obter os IDs para automatizar este caso de teste.

Obtendo os IDs para o script

Com o caso de teste executado, abra o UIAutomatorViewer e inspecione todos os elementos, obtendo e anotando a propriedade resource-id de cada componente como na imagem abaixo:

Agora é só escrever os comandos de localização para cada elemento, como primeiro passo de nosso script de teste. Nos próximos passos iremos alterar o script.

driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_lado1"));
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_lado2"));
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_lado3"));
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/btn_Calcular"));
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_triangulo"));

Ações básicas dos componentes

Depois de ter localizado cada componente na tela está na hora de executar as ações. O nosso caso de teste temos três ações distintas:

  • Digitar o valor 3 nos três campos
  • Clicar no botão calcular
  • Pegar o texto da mensagem para futura validação

Nesta ordem, temos os seguintes comandos:

  • sendKeys(“”); = preenche o componente com um determinado
  • click(); = clica em um componente
  • getText(); = pega o texto do componente

Colocamos estas ações ao final de cada comando, antes do ponto e virgula (;), onde temos o seguinte código resultante:

driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_lado1")).sendKeys("3");
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_lado2")).sendKeys("3");
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_lado3")).sendKeys("3");
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/btn_Calcular")).click();
driver.findElement(By.id("com.eliasnogueira.trianguloapp:id/txt_triangulo")).getText();<br>

Note que no comando sendKeys sempre devemos passar o valor entre aspas duplas, independente se ele for um número ou caractere.

Executando o script

A execução inicial é simples: basta clicar no botão Run ou ir no menu Run/Run no Eclipse.

No script com imagem abaixo, para termos uma base que ele executou com sucesso foi adicionado uma saída no console com o texto “Terminou a execução com sucesso!”

Note no canto direito que os campos serão preenchidos, o botão Calcular será clicado e a mensagem “O triângulo é Equilátero” será apresentada.

Adicionando uma asserção

Este script de teste ainda não é um script de teste… mas porque isso?

Porque se o resultado sair diferente de “O triângulo é Equilátero” não teremos nenhum tipo de mecanismo automático para nos informar da mudança. É ai que entra uma ferramenta de teste unitário para dar suporte ao teste.

Primeiro vamos adicionar a biblioteca do JUnit ao Eclipse. Para isso siga os passos abaixo (também sendo exibido na imagem)

  1. Clique bom o botão direito sobre o nome do projeto e selecione o item Build Path -> Configure Build Path
  2. Clique sobre a aba Libraries
  3. Clique no botão Add Library
  4. Selecione o item JUnit e clique em Next >
  5. A seleção na combo apresentará JUnit 4. Clique em Finish
  6. Clique no botão OK da tela de propriedades

Agora alteraremos o método main para um método público, adicionando a anotação @Test do JUnit para indicar que o método é um teste. Para isso siga os passos a seguir (também apresentado na imagem abaixo):

  1. Altere o nome do método public static void main (String[] args) para public void testeTriangulo()
  2. Adicione o texto @Test acima do método public void testTriangulo(). Pressione CTRL + Espaço para apresentar a lista de opções de auto-complete. Selecione o primeiro item@Test – org.junit

Agora iremos alterar o script para colocar uma asserção, que é uma garantia de um determinado resultado.

Siga os passos abaixo para adicionar a asserção (também disponível na imagem abaixo):

  1. Acima da ultima linha de localização escreva Assert e pressionar CTRL + Espaço selecionando o item Assert – org.junit
  2. Ao final da palavra Assert pressione ponto e selecione qualquer método com nome assertEquals
  3. Apague o texto “expected” e substitua por “O triângulo é Equilátero”  (com as aspas duplas)
  4. Apague o texto “actual”. Copie a ultima linha (de localização), mas sem o ponto e virgula. Agora cole no lugar do texto.

Agora o script é um script de teste, pois tem uma forma de validação (assert) atrelada a ele.

Executando novamente o script

Agora que executarmos o script, a janela do JUnit será apresentada controlando a execução do teste.

Como a execução será com sucesso, a janela do JUnit apresentará uma faixa verde, indicando o sucesso na execução.

Basta clicar no botão Run ou selecionar o menu Run/Run no Eclipse.

Considerações finais

Neste post aprendemos a como localizar e interagir com componentes em uma aplicação Android, bem como transformar nosso script em um scrip de teste.

Estas ações serão executadas no dia-a-dia de qualquer testador que deseja automatizar uma aplicação mobile para Android com Appium.

 

Autor: Elias Nogueira (elias.nogueira@qualister.com.br)

Possui MBA em Teste de Software e a certificação internacional de teste de software CSTE – Certified Software Tester, oferecida pela QAI Brasil. Trabalhou em projetos de engenharia de teste de qualidade de dados (Data Mining, Data Cleasing, Data Profiling, Noisy text analysis) e Georeferenciamento (Marketing de Precisão). É especialista em automação de testes em ferramentas open source e soluções da HP (QTP, LoadRunner, Quality Center). Tem larga experiência em testes em metodologias ágeis e testes manuais e automatizados em aplicativos mobile (Android e iOS). Na Qualister é responsável pela execução de consultoria e treinamentos.

Sobre Luiz Lohn

Luiz Lohn
Mobile QA Engineer, trabalha há mais de 4 anos com qualidade e teste de software. Atualmente na SocialBase trabalha com automação e testes manuais de Aplicativos Móveis. Fundador do site QUATEST e coordenador do GUTS-SC

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *