BIGtheme.net http://bigtheme.net/ecommerce/opencart OpenCart Templates

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

Avatar
Luiz Lohn trabalha como QA Engineer em uma multinacional, além de realizar palestras e consultorias em empresas. Atua como um dos coordenadores do GUTS-SC (Grupo de usuário de teste de software), membro ativo na comunidade de qualidade e teste de software, ministra palestras e cursos. Especializando-se em segurança web e mobile.

Deixe uma resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Page Reader Press Enter to Read Page Content Out Loud Press Enter to Pause or Restart Reading Page Content Out Loud Press Enter to Stop Reading Page Content Out Loud Screen Reader Support