Testes em dispositivos móveis com Appium

Introdução aos testes em dispositivos móveis com Appium

Appium é uma solução baseada em serviços projetada para simplificar o processo de testes de aplicativos de escalonamento para uma ampla variedade de dispositivos e ambientes, em um esforço para manter software seguroO Appium funciona como um servidor virtual que envia comandos para frameworks nativos do dispositivo, permitindo que ações e scripts de teste sejam executados de forma autônoma e em grande escala.

O Appium não só coordena testes em milhares (ou dezenas de milhares) de dispositivos reais ou virtualizados, como também envia dados de volta para o repositório desejado. O mais desejável é que o Appium é de código aberto! Isso significa que ele não só é 100% gratuito, como também pode ser personalizado ou integrado para se adequar ao caso de uso desejado.

Digital.ai Continuous Testing A plataforma utiliza o Appium, entre outras tecnologias, para testar rapidamente aplicativos em uma ampla variedade de dispositivos. O framework Appium é um componente essencial para a escalabilidade. teste de aplicativo móvel Para ser executado de forma autônoma e contínua. Saiba mais sobre como. Digital.ai permite que as empresas usem o Appium e pode ser encontrado em Estúdio Appium.

Visão geral do Appium

O Appium é uma estrutura de automação de testes móveis de código aberto, multiplataforma e multitecnologia. Com o Appium, desenvolvedores e testadores evitam o processo de criação manual de ferramentas de teste para cada dispositivo. Em vez disso, um servidor Appium pode ser criado para transmitir as instruções diretamente para o dispositivo a partir de um script de teste genérico.

Nos últimos anos, a Appium tem causado impacto no setor. testes de automação móvel O Appium rapidamente se popularizou por ser independente de plataforma, o que significa que você pode usar o mesmo script de teste para testar aplicativos iOS e Android com alterações mínimas. O Appium oferece suporte a... teste automatizado de aplicativos web e aplicativos nativos, bem como aplicativos híbridos.

O fato de o Appium suportar várias linguagens de programação para escrever código de teste — como Python, Ruby, Java, JavaScript e PHP — é outra grande vantagem. Além disso, o Appium permite testar dispositivos reais, emuladores e simuladores.

O desempenho robusto do Appium pode ser atribuído ao protocolo JSON Wire, que os clientes Appium usam para interagir com dispositivos móveis por meio do servidor Appium. Embora haja uma curva de aprendizado, vale a pena o tempo investido, pois facilita e torna mais eficaz o teste automatizado depois que você se familiariza com ele.

Inicialmente desenvolvido como uma ferramenta de linha de comando (CLI), o Appium se transformou em um aplicativo de desktop com interface gráfica (GUI) poderosa e dinâmica, que pode ser executado em distribuições Windows, Mac e Linux.

A importância dos testes em dispositivos móveis no desenvolvimento de aplicativos.

Testando nos dias que antecederam o Appium

Com a disseminação do software digital para praticamente todos os lares e bolsos do mundo, os criadores de produtos digitais se viram diante da tarefa de encontrar novas maneiras de testar suas tecnologias em uma ampla gama de dispositivos.

Teste manual Em determinado momento, esse foi o principal método. Envolve a execução das ações necessárias para testar o desempenho, descobrir erros e garantir a segurança, a conformidade e a governança (SCaG). Uma sessão de teste manual consistiria em uma pessoa sentada em frente a uma estação de trabalho, atuando como usuário do software, usando o mouse e o teclado para interagir com o programa e testar vários aspectos de seu desempenho e integridade.

As equipes de software conseguiram superar os testes manuais lentos e trabalhosos usando scripts de teste. A programação de aplicativos de teste para executar uma série de ações destinadas a verificar a integridade de um produto ajudou as equipes de desenvolvimento e controle de qualidade a escalar seus testes além do que os testadores humanos conseguem realizar.

No entanto, a escalabilidade tem um limite, mesmo com ferramentas de teste automatizadas. Diferentes ambientes de dispositivos apresentam novas oportunidades para vulnerabilidades, bugs e problemas ainda não descobertos. Além disso, cada dispositivo possui sua própria estrutura exclusiva, que um programa de teste deve levar em consideração. No passado, superar essas barreiras significava desenvolver um kit de desenvolvimento de software (SDK) exclusivo ou compilar uma versão específica das ferramentas de teste para cada dispositivo. Agora, com o Appium, o acesso a cada dispositivo pode ser feito de forma automática, autônoma e remota.

O que é o protocolo JSON Wire e como ele funciona com o Appium?

O JSON Wire Protocol é um padrão popular que facilita a comunicação entre bibliotecas cliente e o servidor em um sistema heterogêneo. Sendo uma ferramenta independente de plataforma e linguagem, o Appium utiliza esse recurso do JSON Wire Protocol.

JSON é a abreviação de JavaScript Object Notation, uma linguagem que representa estruturas de dados complexas. O protocolo de rede é um mecanismo de transmissão de dados ponto a ponto.

Na arquitetura Appium, a comunicação entre o servidor Appium e as bibliotecas cliente é facilitada pelo WebDriver, que utiliza o protocolo JSON Wire por meio de uma requisição HTTP REST com entradas JSON. Essa configuração utiliza o método de serialização e desserialização para converter dados de objetos em formato JSON e vice-versa.

Por ser uma ferramenta multiplataforma, o servidor não precisa entender as linguagens de programação das bibliotecas do cliente, mas apenas identificar o protocolo para criar e gerenciar sessões de automação.

A arquitetura do protocolo JSON

  1. Extremidade local: É o lado do cliente do protocolo, normalmente bibliotecas de cliente escritas em uma linguagem de programação específica.
  2. Extremidade remota: É o lado do servidor do protocolo.
  3. Extremidade intermediária: Sistemas proxy que podem atuar tanto como extremidade remota quanto como extremidade local.
  4. Nó de ponto final: É a extremidade remota final da estrutura de nós.

A extremidade remota é o servidor que lê as solicitações dos clientes locais e envia as respostas por meio de um socket TCP.

Por exemplo, você pode usar o comando Nova Sessão para criar uma nova sessão do WebDriver para realizar operações de teste no nó do endpoint ou usar o comando Encontrar Elemento para recuperar elementos específicos.

Instalando o Appium

O Appium está disponível em duas versões:

  1. Servidor Appium baseado em CLI
  2. Appium Desktop com interface gráfica (Adiciona uma camada de interface gráfica ao servidor Appium e oferece o Appium Inspector)

Instalação do servidor Appium baseada em CLI
O Appium oferece um aplicativo desktop com interface gráfica dinâmica que permite gerenciar facilmente as operações de automação de testes. No entanto, ao integrar os testes ao seu projeto, você pode precisar de mais recursos. CI Para usar os pipelines, você precisa iniciar o servidor Appium usando os scripts. Portanto, a instalação do servidor Appium deve ser o primeiro passo.

Instalação do Appium

O Appium está disponível em duas versões.

  1. Servidor Appium baseado em CLI
  2. Appium Desktop com interface gráfica (Adiciona uma camada de interface gráfica ao servidor Appium e oferece o Appium Inspector)

Instalação do servidor Appium baseada em CLI

O Appium oferece um aplicativo desktop com interface gráfica dinâmica que permite gerenciar facilmente as operações de automação de testes. No entanto, ao integrar testes aos seus pipelines de CI, é necessário iniciar o servidor Appium usando scripts. Portanto, você deve instalar o servidor Appium.

Etapa 1: instalar o Node.js

Como o Appium é escrito em Node.js, você precisa instalar o Node.js primeiro para usá-lo. Visite o site do Node.js para baixar o software:

https://nodejs.org/en/download/current/

Após a conclusão do download, instale o pacote.

Aceite o contrato de licença e prossiga para a próxima tela.

Escolha o caminho do Node.js, que normalmente é C:\Program Files\nodejs

A próxima tela mostra os componentes sendo instalados. Além do Node.js, você precisa de um gerenciador de pacotes. O npm é o gerenciador de pacotes recomendado para o Node.js. Portanto, instale também as ferramentas do npm.

A próxima tela solicitará que você permita a instalação das ferramentas necessárias para compilar módulos nativos. Você pode selecionar essa opção ou instalá-las manualmente a partir do GitHub, quando necessário.

Clique em Avançar e conclua a instalação.

Após a instalação, verifique se a variável de ambiente contém o caminho do npm e do nodejs.

O caminho do sistema mostra o caminho do Node.js e a variável de usuário mostra o caminho do npm.

Clique com o botão direito do mouse em Iniciar -> Sistema -> Avançado -> Variáveis ​​de ambiente

Passo 2: Instale o Appium a partir da linha de comando

Abra o prompt de comando como administrador e digite o seguinte comando:

npm install -g Appium

O gerenciador de pacotes npm iniciará o procedimento de instalação.

Após uma instalação bem-sucedida, você poderá começar a usar o Appium.

Para abrir o Appium a partir da linha de comando, digite Appium seguido do endereço IP e do número da porta do servidor.

Appium -a 127.0.0.1 -p 4723

Agora o Appium está em execução e a API REST HTTP está escutando no endereço IP (no exemplo acima, localhost 127.0.0.1 e a porta do servidor 4723).

Instalação do Appium Desktop baseada em GUI

Baixe e instale o Appium Desktop.

Para baixar e instalar o Appium desktop, visite o Site da Appium.

Após a instalação bem-sucedida, abra a área de trabalho do Appium.

Na tela inicial, o Appium solicitará que você insira o endereço IP do host e o número da porta do servidor.

Como o Appium é apenas um servidor HTTP, ele não faz nada sozinho. Você precisa das bibliotecas de cliente para solicitar e executar operações nos dispositivos finais. Portanto, é importante configurar a porta do servidor ao iniciar o Appium. A porta do servidor é aquela à qual o cliente se conecta e se comunica com o Appium. A porta padrão do servidor é 4723. Ao se conectar às máquinas cliente, você deve especificar essa porta do servidor.

Para alterar a porta do servidor, clique na guia Avançado e você verá uma tela com as configurações do servidor. Insira os detalhes e inicie o servidor.

Se você quiser salvar essas configurações para a próxima vez, salve-as como predefinições e escolha as configurações da guia de predefinições quando abrir o Appium na próxima vez.

O Appium Desktop agora está pronto para uso.

Entendendo a arquitetura do Appium

O Appium utiliza uma arquitetura cliente-servidor. Aqui estão os principais componentes da arquitetura do Appium:

1) Servidor Appium: O Appium Server é o componente central da arquitetura Appium. Ele é escrito em Node.js e executado na máquina ou na nuvem. O Appium Server recebe solicitações das bibliotecas cliente do Appium por meio do protocolo JSON Wire e invoca o driver móvel (driver Android/driver iOS) para se conectar às estruturas de automação de testes nativas correspondentes e executar operações do cliente nos dispositivos. Os resultados dos testes são então recebidos e enviados aos clientes. O Appium Server pode criar várias sessões para executar testes em vários dispositivos.

2) Bibliotecas de cliente Appium: Os clientes Appium solicitam ao servidor que inicie uma sessão de automação de testes usando o comando `createSession()` através do protocolo JSON Wire, executam testes em múltiplos dispositivos móveis e recebem os resultados do servidor Appium. As bibliotecas de clientes Appium abrangem diversas linguagens, como PHP, Java, Ruby, JavaScript, C# e Python.

3) Protocolo JSON Wire: Na arquitetura cliente-servidor do Appium, os clientes Appium comunicam-se com o servidor Appium através do protocolo JSON Wire, desenvolvido pelas equipes de desenvolvimento do WebDriver. Ele permite que os desenvolvedores acessem endpoints padrão e predefinidos por meio de uma API RESTful. Usando o protocolo JSON Wire, é possível testar sites e aplicativos por meio de um navegador móvel, além de poder instalar ou desinstalar aplicativos no dispositivo durante a sessão de automação de testes.

4) Driver do Appium: O Appium é independente de plataforma e de tecnologia. Para gerenciar diferentes plataformas de forma eficaz, o Appium utiliza múltiplos drivers e converte a API em sessões de automação para as plataformas correspondentes.

  1. UiAutomator2: O driver Appium padrão para testes em dispositivos Android.
  2. UiAutomator1: Driver Appium para versões antigas do Android.
  3. XCUITest: Driver Appium para testes em dispositivos iOS
  4. WinAppDriver: Driver Appium para teste de dispositivos Windows
  5. Expresso: Novo driver Appium para testes em dispositivos Android

5) Estruturas de Teste Automatizadas: O Appium utiliza frameworks nativos de testes automatizados para executar operações do cliente nos dispositivos de teste. Ele se conecta ao bootstrap.js, que atua como um servidor TCP e executa comandos de teste nos dispositivos.

  1. Framework UiAutomator: Para testes em dispositivos Android
  2. Framework XCUITest: Para testar aplicativos iOS

Como funciona o Appium

O Appium Server é escrito em Node.js e utiliza a arquitetura cliente-servidor, na qual as máquinas cliente se comunicam com o servidor por meio de um protocolo.

Para iniciar uma sessão de teste automatizado, a máquina cliente envia uma solicitação ao Servidor Appium por meio do protocolo JSON Wire. O código de teste pode ser escrito em diversas linguagens de programação, como Java, Ruby, Python, PHP, C# e JavaScript. O Servidor Appium, então, cria uma nova sessão de teste automatizado e invoca o driver iOS/Android apropriado. Quando o Servidor Appium se conecta com as estruturas de teste nativas correspondentes, ele também começa a interagir com o serviço de inicialização (bootstrap.jar/bootstrap.js) que está sendo executado nos dispositivos móveis para realizar operações, assim como um usuário faria.

Uma das grandes vantagens do Appium é permitir que os desenvolvedores usem o mesmo código de teste para dispositivos iOS e Android. No entanto, o desafio reside em diferenciar as solicitações de automação de testes de dispositivos iOS e Android. O Appium faz isso analisando a opção de recursos desejados. Ao criar uma sessão de solicitação, é necessário especificar os pares de chave-valor, como deviceName, platformName, appPackage, appActivity etc. Com base nesses valores, o servidor Appium encaminha as solicitações do cliente de forma eficiente para as estruturas de teste correspondentes.

Plataformas suportadas

Android

  1. O computador cliente envia uma solicitação ao servidor Appium por meio do protocolo JSON Wire para criar uma nova sessão de automação de testes.
  2. Uma sessão de automação de testes é criada no servidor. O servidor também verifica as funcionalidades desejadas. Para testes na plataforma Android, o servidor contata o framework UiAutomator2, que é um framework nativo de automação de testes do Android.
  3. O UiAutomator2 se comunica com o arquivo bootstrap.jar em execução no dispositivo, atuando como um servidor TCP. Ele funciona em emuladores, simuladores e também em dispositivos reais.
  4. O arquivo JAR recebe os comandos e executa os testes em dispositivos Android. Ele passa os detalhes do registro de testes para o UiAutomator2, que envia essas informações para o servidor Appium. O Bootstrap.jar, então, passa essas informações para o cliente.

iOS

  1. O computador cliente envia uma solicitação ao servidor Appium por meio do protocolo JSON Wire para criar uma nova sessão de automação de testes.
  2. Uma sessão de automação de testes é criada no servidor. O servidor também verifica as funcionalidades desejadas. Para testes na plataforma iOS, o servidor contata o framework XCUITest, que é um framework nativo de automação de testes do iOS e faz parte do Apple Xcode.
  3. O framework XCUITest se comunica com o bootstrap.js em execução no dispositivo, atuando como um servidor TCP. Ele funciona em emuladores, simuladores e também em dispositivos reais.
  4. O JavaScript recebe os comandos e executa os testes em dispositivos iOS. Ele repassa os detalhes do log de testes para o XCUITest, que por sua vez envia essas informações para o servidor Appium. Essas informações são então comunicadas ao cliente.

Aproveitando o Appium para realizar tarefas Continuous Testing

O Appium oferece grandes vantagens, pois o Appium Server pode ser usado para retransmitir solicitações de teste e recuperar dados de teste de forma autônoma. Essa capacidade se integra perfeitamente a frameworks de teste contínuo.

Em testes contínuos, o aplicativo é testado regularmente ao longo de todo o ciclo de vida do produto. Isso inclui testar versões individuais antes da integração e também após a implantação. Ao executar testes continuamente, as equipes de produto automatizam muitas das tarefas envolvidas no agendamento e na criação manual de testes, enquanto, ao mesmo tempo, os produtos são testados com mais frequência e intensidade para identificar quaisquer problemas, bugs ou vulnerabilidades.

A plataforma SeeTest, parte de Digital.ai Continuous TestingO SeeTest é uma solução completa usada para testar dispositivos e navegadores na nuvem ou em uma rede remota. Ele é totalmente compatível com ferramentas como Appium, Selenium, XCUITest e outras.

A seção abaixo fornece um procedimento passo a passo para conectar o SeeTest Cloud ao Appium Desktop para Windows:

Conectando o Appium Desktop à plataforma SeeTest

A plataforma SeeTest é uma solução completa para testar dispositivos e navegadores na nuvem ou em uma rede remota. O SeeTest é totalmente compatível com ferramentas como Appium, Selenium, XCUITest e muito mais. A seção abaixo fornece um procedimento passo a passo para conectar o SeeTest Cloud ao Appium Desktop para Windows.

Você vai precisar de uma conta SeeTest Cloud válida.

Passo 1: Inicie o Appium Desktop e abra uma nova sessão.

Após iniciar o Appium Desktop, abra uma nova janela de sessão…

 

Passo 2: Obtendo a chave de acesso do SeeTest Cloud

Acesse a interface do usuário do SeeTest Cloud e clique no ícone que representa o usuário. Em seguida, clique em "Obtenha chave de acesso", conforme mostrado abaixo.

Copie a chave de acesso para a área de transferência a partir da caixa de diálogo "Abrir chave de acesso".

Nota: Neste caso, usamos Oferta pública inicial da SeeTest Cloud nas preferências de conexão.

Passo 3: Especifique as configurações de conexão e os recursos desejados do SeeTest Cloud. A etapa anterior abrirá uma caixa de diálogo para conectar-se a um servidor Appium. Nesta etapa, especificaremos as preferências de conexão do servidor Appium do SeeTest Cloud.

Selecione Experitest em 'Provedores de Nuvem'.

Forneça o URL da nuvem e a chave de acesso.

Defina a funcionalidade “platformName” para iOS ou Android, dependendo do dispositivo que você deseja usar.

Clique em Iniciar Sessão para conectar-se ao SeeTest Cloud. Esta etapa estabelecerá a conexão com o SeeTest Cloud.

Uma sessão contínua do Appium Desktop para a Nuvem SeeTest também está disponível na interface do usuário da Nuvem SeeTest. Isso proporciona ao usuário um melhor controle sobre o dispositivo.

Acesse a guia Execução na interface do usuário do SeeTest Cloud e clique em Depurar para usar a sessão do Appium Desktop em andamento.

Essa é uma funcionalidade muito conveniente, pois um usuário de teste pode aproveitar os recursos avançados do SeeTest e do Appium na mesma sessão. O principal benefício dessa sessão é que as operações de teste realizadas com o SeeTest são mais rápidas e fáceis de usar. O Appium Inspector pode ser usado para inspecionar qualquer elemento na sessão.

 

Appium é uma solução prática para automação. Continuous Testing em escala

Graças a todas as suas qualidades vantajosas e à fácil integração com outros conjuntos de ferramentas de teste, a popularidade do Appium não mostra sinais de diminuir com o passar do tempo. Nossas equipes sempre levam isso em consideração ao desenvolver e lançar as versões mais recentes do SeeTest.

Quanto às informações contidas na postagem do blog, recomendamos que você adicione esta página aos seus favoritos para ter sempre o tutorial à mão. E, claro, recomendamos que, caso ainda não tenha utilizado nossa integração com o Appium, faça o download e experimente você mesmo.

 

Se você busca automatizar seus projetos com Appium em poucos minutos, o Appium Studio pode ser a solução ideal. Clique aqui para saber mais.

Também recomendamos