Quanto é Appium para as pessoas

Neste artigo, veremos a ferramenta Appium. Este artigo é uma introdução à introdução do teste automatizado de aplicativos móveis. Ele mostrará quais dificuldades você pode enfrentar ao usar esta ferramenta.

Considere uma pequena tarefa usando o exemplo de uma “calculadora”, tente escrever testes automatizados para testá-lo e ... Vamos começar desde o início :)

Conteúdo


  • O que é Appium?
  • Mínimo necessário.
  • Declaração e solução do problema.
  • Confluenced :)

O que é Appium?


Algumas palavras sobre testes móveis. Você não pode ter um computador, laptop em casa, mas não percebemos nossa vida sem dispositivos móveis. Testar aplicativos móveis ocupa um grande nicho em ... testar ... Mmmm ... manteiga é manteiga, mas é. Este nicho é bastante complicado.

Existem tantos dispositivos com seus sistemas operacionais, com suas próprias interfaces gráficas, resoluções de tela etc. Eu acho que essa lista é interminável. Portanto, devido à enorme variedade de dispositivos móveis, seria bom ter testes automatizados para nossos aplicativos, a fim de reduzir o sofrimento dos testadores e não transformar o teste de uma funcionalidade em centenas de dispositivos no “inferno real” (veja a imagem abaixo).

imagem

Existem muitas ferramentas para escrever autotestes para dispositivos móveis. Para resolver as tarefas definidas antes de mim, escolhi o Appium, pois é simultaneamente adequado para Android e iOS e você pode escrever autotestes usando Java "favorito de todos".

O Appium é uma ferramenta gratuita, de código aberto e de plataforma cruzada que ajuda a automatizar aplicativos para Android e iOS. O Appium segue a mesma abordagem que o Selenium WebDriver, que recebe solicitações HTTP no formato JSON dos clientes e as converte dependendo da plataforma em que trabalha.

imagem

Mínimo requerido


Então, o que precisamos para trabalhar com o Appium?

Para criar testes para o Android, são apresentados os seguintes requisitos:

  • Java (versão> = 7)
  • API do SDK do Android (versão> = 17)
  • Dispositivo virtual Android (AVD) / dispositivo real
  • Gerenciador de execução acelerada por hardware da Intel

Para que o emulador de dispositivo Android funcione a uma velocidade próxima à velocidade do dispositivo real, é necessário instalar o Intel Hardware Accelerated Execution Manager. Isso ajudará a reduzir o tempo necessário para iniciar e depurar o aplicativo.

Para iOS:

  • Mac OS X (versão> = 10.7)
  • Xcode (versão> = 5.1)
  • Java (versão> = 7)
  • Homebrew
  • NodeJS
  • npm

Também recomendo instalar o appium-doctor para diagnosticar possíveis problemas ao instalar e configurar os componentes necessários em ambas as plataformas.

imagem

Declaração e solução do problema


Então, vamos imaginar que precisamos escrever testes automatizados para um aplicativo de calculadora para dispositivos Android. Para fazer isso, precisamos baixar o Appium do site oficial e instalá-lo em nossa “máquina”.

imagem

Inicie o Appium.

imagem

Por padrão, o Appium está pronto para ouvir o host local com a porta 4723. Aqui vamos deixar tudo inalterado e iniciar o servidor.

imagem

Agora o Appium está pronto para processar nossos pedidos.

Nosso futuro autoteste deve ser executado no emulador ou em um dispositivo real. Para a versatilidade deste artigo, considere o trabalho do teste no emulador. Para isso, precisamos do Android Studio. Baixe e instale você mesmo. Em seguida, abra e vá para Ferramentas - AVD Manager.

imagem

imagem

imagem

imagem

imagem

imagem

Agora abra o terminal e execute o comando adb devices. Ela mostrará a lista de dispositivos conectados.

imagem

Vemos que a lista de dispositivos está vazia, porque nenhum emulador está sendo executado, nenhum dispositivo real está conectado à nossa “máquina”.

Execute todos os emuladores que temos. No meu caso, esses são dois emuladores. Execute o comando adb devices novamente.

imagem

Agora, temos uma lista não vazia que contém o ID dos nossos dispositivos conectados - emuladores e dispositivos, se houver.

Com o emulador resolvido, vamos começar a escrever o código. Como descrito acima, em meus testes eu uso Java.

Primeiro, crie uma instância do AndroidDriver. O construtor desta classe espera que dois parâmetros sejam inseridos:

imagem

Recursos desejados - objeto JSON (um conjunto de pares de valores-chave) enviado pelo cliente ao servidor.

Os recursos desejados descrevem os recursos da sessão criada (nome do dispositivo / emulador, sistema operacional (SO), versão do SO, aplicativo iniciado etc.).

Exemplo de

imagem

recursos : descrevemos nossos recursos e criamos o AndroidDriver.

imagem

deviceName é um parâmetro obrigatório, mas para o Android não está marcado. Se falamos sobre iOS, ao especificar o nome, você deve usar um dos nomes reservados (um exemplo desses nomes é dado nos comentários no código). A descrição de outros parâmetros é fornecida no código (veja a imagem acima), mas vamos nos concentrar em alguns deles.

O udid é um identificador exclusivo para o dispositivo. Podemos obter esse identificador de dispositivo com o comando adb devices.

imagem

appPackage é o nome do pacote Java do aplicativo Android que queremos executar.

appActivities é o nome das atividades que abrimos.

O appPackage e o appActivities podem ser obtidos de várias maneiras, mas a mais simples delas é instalar o aplicativo "APK Info" do Google Play.

Após abrir este programa, você verá uma lista de todos os aplicativos instalados. Estamos interessados ​​em calculadora. Selecione-o na lista.

imagem

E aqui está toda a informação que precisamos.

imagem

imagem

Enchi-os. Em seguida, crie uma instância do AndroidDriver: registre a URL do Appium e passe o objeto de recursos como o segundo parâmetro.

imagem

Esse código executará apenas a calculadora no emulador. Precisamos aprender a gerenciar de alguma forma os elementos da calculadora para que possamos escrever um teste simples. O princípio é semelhante aqui, como no Selenium Web Driver. Precisamos acessar os elementos através de qualquer localizador. O Appium Inspector nos ajudará a obtê-los. Abra o Appium.

imagem

imagem

Agora, todos os nossos recursos descritos no código devem ser transferidos para o Inspetor, na guia Recursos Desejados.

imagem

Iniciando Sessão.

imagem

O inspetor traduz o que é exibido no dispositivo.Um pouco à direita é uma árvore de todos os elementos da atividade atual. Para obter os atributos de um elemento, basta selecionar o elemento que precisamos.

imagem

Após a seleção, todos os atributos disponíveis para esse elemento são exibidos.Nesse caso, não é tão importante para nós como acessar o elemento: por ID ou xPath. Porém, em aplicativos grandes e complexos, é melhor usar IDs, pois o xPath atrasa bastante a passagem dos testes. Além disso, ao testar aplicativos híbridos, o ID será um para Android e iOS e o xPath será diferente. Aprendemos como obter os atributos necessários. Agora, por analogia com o Selenium Web Driver, obtemos os elementos necessários no código.

imagem

Para obter o item, eu uso o método findElementById. Você pode criar uma instância da classe MobileElement e trabalhar com ela, ou pode, sem criar uma. Aqui, definimos os elementos dos números 2, + e 3. No final, espero que o resultado seja 5. No final, o resultado é o seguinte:

imagem

Eu testei e trabalhei na criação da sessão em métodos separados. Agora vou tentar demonstrar o que fizemos.


Confluenced :)


imagem

Neste artigo, mostrei como começar rapidamente com o Appium e o que é necessário para isso. Como você deve ter notado, começar a escrever testes simples não é tão difícil. Em seguida, você pode anexar o relatório ao projeto, por exemplo, Allure. Mas esta é uma história completamente diferente :)

Talvez você tenha problemas individuais ao instalar várias ferramentas necessárias para trabalhar com o Appium. Mas todos esses problemas são facilmente resolvidos pela pesquisa do Google :)

O tópico de teste para iOS não foi divulgado, mas quero "dizer", ou melhor, escrever algumas palavras sobre ele.

Para executar o aplicativo por meio do Appium no iOS, gastei muito tempo configurando o ambiente (xCode, Appium, certificados de desenvolvedor etc.). Era necessário abrir o projeto Appium por meio do xCode, especificar os certificados de desenvolvedor e outras configurações, montar o projeto e, somente então, acabou por executar os comandos por meio do Appium em dispositivos iOS. Após cada atualização do Appium, você deve executar este procedimento. Talvez tudo se torne muito mais fácil para você, você deve acreditar nisso. Até agora, não encontrei outra solução, talvez seja, mas até agora me convém.

Quero observar mais uma vez que é melhor usar IDs ao acessar elementos do que o xPath. Mesmo que o elemento não contenha um ID, peça / force o desenvolvedor a especificar o ID. Isso facilitará sua vida e aumentará sua velocidade de execução de teste.

E, no entanto, quanto mais dispositivos reais você tiver, maior a probabilidade de encontrar um bug antes que os usuários finais o encontrem. Em princípio, você pode criar sua própria fábrica de dispositivos. Mas me parece mais aconselhável procurar soluções em nuvem, por exemplo, BrowserStack, SauceLabs e outros.

Era tudo o que eu queria dizer! Projeto

PS no GitHub

PPS Um pouco do meu grupo

Agora é tudo!

All Articles