Automação de testes com Appium – parte 1

Introdução

Olá pessoal!

Esta é uma série de posts sobre como iniciar o seu aprendizado com a ferramenta Appium usando Java como linguagem de programação. Neste primeiro post aprenderemos um pouco da teoria necessária antes de iniciar o desenvolvimento de scripts. É muito recomendado que você leia e, caso tenha alguma dúvida, enviar um comentário.

Pegue um café, desligue as notificações do celular, feche as abas de redes sociais e curta a leitura!

O que é Appium?

Appium é uma ferramenta Open Souce e multi-plataforma para automação de aplicações nativas, híbridas e sites mobile para as principais plataformas do mercado: Android, iOS. Também automatiza aplicações Windows baseadas no Windows 10.

WebSite Oficial: http://appium.io
Repositório GitHub: https://github.com/appium/

 

Tipos de aplicações

  • Nativa: são aquelas desenvolvidas especificamente com os SDK’s do Android e iOS, sendo este aplicativo específico para cada plataforma
  • Híbrida: é uma aplicação mobile que é encapsulada em um componente da plataforma para ser exibida. A aplicação em si é instalada para a plataforma (Android ou iOS), mas o conteúdo de ambas é igual. A aplicação é desenvolvida em HTML5, CSS3 e Javascript
  • Site Mobile: são aquelas que acessamos via um browser web através de uma URL

Filosofia do Appium

O Appium foi construido para seguir quatro princípios para automação de teste mobile:

  1. Você não precisa recompilar sua app ou modifica-la para poder automatiza-la
  2. Você não precisa depender de uma única linguagem de programação ou framework para escrever e executar seus testes
  3. Um framework de automação de teste não precisa reinventar a roda quando se trata de uma API de automação
  4. Um framework de automação mobile deve ser de código aberto (open source) em espírito e prática, assim como no nome

Design

O Appium foi criado para seguir os quatro itens da filosofia. A primeira delas é não precisar recompilar ou modificar a app sempre que seja necessário automatiza-la. Para isso o Appium utiliza, por debaixo dos panos, os frameworks de teste UI de cada plataforma. Sim, cada plataforma já possui um framework de testes para a interface gráfica. O que o Appium faz é prover comandos mais facilmente entendíveis e que irão executar independente da versão.

O Appium se encarrega das diferentes versões dos frameworks. São eles:

Para não depender de uma única linguagem de programação o Appium é, na verdade, uma API que expõem comandos que serão executados na plataforma. Isso quer dizer que:

  • O Appium pode ser estendido para diversas linguagens de programação, basta alguém implementar as chamadas da API
  • O Appium não é um framework de teste, ele é uma biblioteca de automação

O terceiro princípio é implementado usando a API do Selenium WebDriver como padrão, uma vez que ela já é um padrão de automação para browsers web e um Working Draft do W3C.

O último princípio é implementado pelo fato do Appium ser de código aberto e disponível no GitHub.

Conceitos

A parte mais importante antes de começar a desenvolver scripts para Android, iOS ou FirefoxOS.

São cinco partes essenciais para o entendimento e utilização do Appium.

Arquitetura Cliente/Servidor

Appium é um servidor web que expõe uma API REST. Ele recebe conexões de um cliente (comandos de uma linguagem de programação), interpreta os comandos recebidos e executa estes comandos no aplicativo móvel (ou site mobile). Ao final uma resposta HTTP é recebida representando o resultado da execução do comando.

Essa arquitetura cliente/servidor nos possibilita:

  • Escrever um script de teste em qualquer linguagem suportada
  • Ter uma máquina com o servidor separada da máquina de execução dos testes
  • Executar os scripts de teste em dispositivos na nuvem

Capacidades (Desired Capabilities)

São um conjunto de chave/valor que são enviados ao Appium Server para informar qual tipo de sessão desejamos iniciar. Ex: uma execução Android em um app nativo com versão 5.0.1 (Lollipop).

Existe uma gama de capacidades. Alguma podemos dizer que efetuam “filtros” (como plataforma, versão da plataforma, etc…) outros de configuração (localidade, orientação, etc…).

É através do Desired Capabilities que informamos em qual dispositivo queremos executar, e quais as configurações iniciais.

Appium Server (servidor)

É o servidor que faz a ligação entre o Appium Client e o dispositivo móvel. Ele é escrito em Node.js, mas tem aplicativos nativos para Windows e Mac. Sempre que desejamos executar testes precisamos iniciar o servidor, diretamente pelo NodeJs por linha de comando ou pelos aplicativos nativos de cada sistema operacional.

$ npm install -g appium
$ appium

Acima o exemplo de instalação do servidor do Appium de forma global (necessário), e a inicialização do servidor (apenas escrevendo appium no terminal).

A outra forma de ter o servidor executando, e também poder inspecionar apps nas plataformas iOS e Android é através do Appium Desktop.

Appium Client (cliente)

São as linguagens de programação suportadas pelo Appium (e são muitas). A lista completa de linguagens (bem como suas bibliotecas) podem ser visualizadas neste link.

Sessão

Como o Appuim é um servidor toda a comunicação com o dispositivo é realizada através de uma sessão. O cliente inicializa uma sessão com o servidor via POST / session com um objeto JSON chamado Desired Capabilities. Quando a sessão é criada um ID é atribuido a ela para realizar o envio dos comandos para o dispositivo apropriado.

Considerações finais

Este post visa apresentar os conceitos básicos do Appium, extremamente importantes antes de iniciar qualquer script de automação com ele. Em breve teremos outros pontos para configurar antes de começar a utiliza-lo.

Leave a Reply

Your email address will not be published. Required fields are marked *