Guia completo para testes Selenium em dispositivos móveis

Última atualização: 06 de abril de 2020 — Continuous Testing Expert
Continuous Testing

 

Nos dias de hoje DevOps Na era do desenvolvimento contínuo e da implantação contínua, o principal objetivo dos ambientes de desenvolvimento de software é o código ser continuamente desenvolvido e implantado. testado continuamente Além disso, as ferramentas de teste automatizado são essenciais para a implantação contínua de aplicações. O Selenium é uma ferramenta popular de automação de testes que auxilia desenvolvedores Selenium a integrar testes contínuos ao desenvolvimento. Ele oferece suporte a diversos navegadores, plataformas e sistemas operacionais.

No entanto, a proliferação de smartphones trouxe ao mercado uma ampla gama de dispositivos, plataformas e sistemas operacionais. Anteriormente, as telas dos celulares eram pequenas e o design não era intuitivo. Isso mudou com as telas atuais. Aplicativos com foco em dispositivos móveis são a nova tendência. Isso exige que as empresas realinhem suas estratégias de teste para se adaptarem. soluções de aplicativos móveis.

Os aplicativos móveis são fáceis de usar e mais acessíveis. Hoje, mais pessoas usam dispositivos móveis para fazer compras online ou assinar serviços. Atualmente, 60% dos recursos empresariais são acessados ​​por dispositivos móveis. No entanto, a maioria dos testadores utiliza o Selenium para testes em dispositivos móveis, em vez do Appium, como solução de automação de testes.

O Selenium oferece suporte a testes de aplicativos móveis? Embora não ofereça suporte direto a testes em dispositivos móveis, ele disponibiliza frameworks para essa finalidade. O Selendriod é um framework de testes móveis baseado em Selenium que permite às empresas executar testes automatizados em dispositivos Android. No entanto, as opções são limitadas. É aí que o Appium entra em cena para auxiliar os desenvolvedores de testes móveis com Selenium. O Appium é um poderoso framework de automação de testes móveis baseado em Selenium, que oferece suporte multiplataforma e multitecnologia. Com ele, você pode escrever um único código de teste tanto para Android quanto para iOS.

Se você deseja aprender mais sobre testes com Selenium e Appium usando o SeeTest, clique aqui. 

Protocolo de Tecnologia

Selenium e Appium usam o mesmo protocolo: o protocolo JSON Wire. Este protocolo tornou-se recentemente um padrão da W3C. Hoje, muitas indústrias, assim como fornecedores de navegadores, estão implementando-o como protocolo padrão.

Arquitetura Selenium

Arquitetura Selenium

O Selenium permite escrever código em diferentes linguagens, como Java, PHP, C# e Python. O código é executado por meio do protocolo JSON Wire. Este protocolo é uma API REST usada para controlar o navegador. Quando o código é executado como uma requisição HTTP REST, uma nova sessão é criada pelo servidor Selenium. Em seguida, ele invoca o driver do navegador (driver do Chrome, driver do Safari e driver do Edge) para acessar o navegador. O navegador envia as informações solicitadas ao servidor Selenium por meio do driver do navegador, que então as envia ao cliente.

Componentes da grade Selenium

Componentes da grade Selenium

O Selenium Grid é composto por 3 componentes principais. O Selenium Grid Hub é o servidor que distribui as tarefas de teste para os nós. O servidor decide qual nó receberá o teste com base nas capacidades desejadas predefinidas. O Selenium Grid Node é a máquina que executa os testes recebidos do hub. Cada servidor pode ter vários nós. O wd/hub é a parte da URL que facilita a comunicação entre o hub e o nó.

Arquitetura Appium

Arquitetura Appium

A arquitetura do Appium é bastante similar à do Selenium. O Appium também permite que desenvolvedores de testes mobile com Selenium escrevam código em diversas linguagens, como Java, PHP, C#, Python, Ruby, Javascript (WebdriverIO) e Javascript (WD). No entanto, o Appium também implementa outras opções. Por exemplo, ao usar Java, ele herda da classe RemoteWebDriver. O servidor Appium pode ser instalado na máquina ou na nuvem. Quando o comando `createSession()` é executado pelo cliente Appium através do protocolo JSON Wire, o servidor Appium cria uma nova sessão no dispositivo mobile por meio do driver Appium (driver Android / driver iOS). Para dispositivos Android, ele utiliza a infraestrutura ADB do Android. Se necessário, ele criará APKs na máquina. Para iOS, ele utiliza o framework IDE mobile e se comunica com a linha de comando.

A ideia aqui é executar testes fictícios infinitos em dispositivos móveis. No iOS, executa-se o XCUITest. Os testes são controlados pelo servidor.

Instalando o Appium

Instalar o Appium para Android é bastante simples. No entanto, a situação se complica um pouco quando se trata de dispositivos iOS. O principal desafio é que você não pode simplesmente pegar um aplicativo e instalá-lo no dispositivo. Como se trata especificamente de aplicativos para desenvolvedores, cada aplicativo deve ser assinado para o dispositivo. Ao usar emuladores, você pode contornar algumas dessas restrições. Além disso, você precisa de um ID de desenvolvedor Apple, um certificado de desenvolvimento válido, um perfil de provisionamento, um arquivo .ipa assinado, o Xcode e ferramentas de desenvolvedor de linha de comando. Ademais, é necessário configurar o dispositivo para desenvolvimento no Xcode.

Por exemplo, se você estiver usando Java, precisará executar as seguintes tarefas:

  • Configurar o Java
  • Instalar Homebrew
  • Em seguida, instale o Node.js e o npm.
  • Em seguida, instale o Appium.
    • npm install –g appium
  • Por fim, instale o wd
    • npm install wd
  • Configure o dispositivo Appium iOS que instalará o ilibmobiledevice.
  • Configurar o driver XCUITest

Você pode consultar este tutorial para obter instruções passo a passo sobre como instalar o Appium.

http://appium.io/docs/en/about-appium/getting-started/#installing-appium

Matriz de cobertura

Para testar aplicativos Android, você pode usar máquinas Windows, Mac ou Linux. No entanto, para testar aplicativos iOS, você precisa de um dispositivo Mac. A nuvem funciona tanto para aplicativos iOS quanto para Android.

Matriz de cobertura para desenvolvedores Selenium

Dispositivo móvel vs. navegador

Antes de prosseguir para os testes em dispositivos móveis, é importante compreender as diferenças ambientais entre dispositivos móveis e navegadores.

  • gestos: Os dispositivos móveis utilizam diferentes opções de entrada ou gestos, como deslizar, pinçar, toque com dois dedos, toque com vários dedos, etc., que não estão disponíveis nos navegadores da web.
  • Sistema de URL diferente: Os aplicativos móveis são específicos para dispositivos móveis, nos quais não existem URLs da web convencionais.
  • Dispositivos reais e emuladores: Você realiza testes em dispositivos reais e simuladores. Para Android, você usa os mesmos APKs para ambas as opções. No entanto, no iOS, você usa tecnologias diferentes para dispositivos reais e simuladores, pois os simuladores rodam em x64 enquanto os dispositivos reais usam processadores ARM. Portanto, você precisará realizar testes em ambas as opções.
  • Botões: Os dispositivos móveis vêm com botões como Início, Liga/Desliga e Volume. Você precisa levá-los em consideração durante os testes.
  • Tela inicial: Os dispositivos móveis possuem uma tela inicial com uma barra de notificações. Portanto, as interações na tela inicial devem ser levadas em consideração.
  • Tela giratória: A tela do celular pode ser alternada entre os modos retrato e paisagem, alterando o tamanho da tela.
  • Diferentes conexões de rede: As condições da rede, como 2G, 3G, 4G e 5G, devem ser consideradas. Em especial, os testes funcionais devem ser realizados em diferentes velocidades de internet.

Aplicativos móveis vs. aplicativos da Web

No que diz respeito a aplicações, as aplicações móveis são diferentes das suas contrapartes web:

  • Ciclo de vida da aplicação: O ciclo de vida de um aplicativo móvel é diferente e complexo. Você pode instalar, desinstalar, iniciar e fechar aplicativos.
  • Navegação com estado: Os aplicativos móveis memorizam sua sessão e respondem de acordo quando você faz login novamente. É um sistema mais baseado em estado. A navegação também é simples.
  • Tecnologias de interface do usuário DOM: são diferentes para iOS e Android.
  • Scripting do lado do cliente: Por exemplo, o JavaScript não está disponível em aplicativos móveis.
  • Ferramenta de depuração: (Ex.: F12 no Chrome) não está disponível.

Recursos móveis

Para recursos locais, você deve especificar os seguintes detalhes:

  • Nome da plataforma: Especifique a plataforma (iOS / Android)
  • Nome do dispositivo: Especifique o nome do dispositivo (já que você usará vários dispositivos).
  • Nome da automação: Especifique a tecnologia de automação utilizada (ex: XCUITest para iOS).
  • aplicativo: Para instalar um aplicativo, especifique o caminho do arquivo APK.
  • bundleId/appActivity: Especifique o ID do pacote (bundle ID) do aplicativo. No Android, existem atividades de pacote (bundle activity) e atividades específicas que você pode iniciar em seu aplicativo. Já no iOS, você só tem a opção de atividades de pacote (bundle activity).

Capacidades de nuvem

Quando os desenvolvedores Selenium usam a tecnologia em nuvem:

  • Chave de acesso: A chave de acesso permite o teste remoto.
  • Consulta de dispositivo: Para encontrar os dispositivos em uso na nuvem.

Comandos móveis

Para sobrecarregar comandos móveis, os desenvolvedores Selenium podem usar o ExecuteScript. Alguns exemplos de comandos móveis relacionados ao aplicativo são:

  • instalarAplicativo
  • launchApp
  • resetApp
  • removerApp
  • encerrar aplicativo
  • executarAppEmSegundoPlano

Alguns exemplos de comandos de dispositivo

  • Travar
  • Destravar
  • Rodar
  • Agitação
  • ocultarTeclado
  • éBloqueado

Você pode encontrar todos os comandos disponíveis nesta página do Appium: http://appium.io/docs/en/commands/mobile-command/

Como criar um teste para dispositivos móveis usando Selenium e Appium?

Usando Selenium

Passo 1: Criar arquivo Gradle

Para iniciar o teste, abra sua IDE. Por exemplo, se você estiver usando Java, pode acessar o IntelliJ IDE.

  • Crie um novo projeto
  • Selecione Gradle (você pode usar outras opções, como Maven).
  • Dê um nome ao projeto (ex: Selenium 2)
  • Clique em Concluir

Passo 2: Adicionar o Selenium ao Gradle

Adicionar Selenium ao Gradle

  • Ao clicar na nova versão, ela é exibida. No entanto, atualmente está mostrando a versão alfa. Clique em Selenium Java.

Clique em Selenium Java

  • Escolha a versão mais recente na página seguinte.

Clique na nova versão do Selenium Java.

  • Copie o código da próxima página e cole-o na caixa de dependências da IDE. Isso fará o download de todas as dependências necessárias, caso seu dispositivo não as possua.

Copie o código da próxima página e cole-o na caixa de dependências da IDE.

  • Usaremos o TestNG para este teste. Portanto, importe o Selenium TestNG e o driver do Chrome. Você pode baixar o driver do Chrome aqui: https://chromedriver.chromium.org/
  • Crie um novo pacote (diretório) e dê um nome a ele (ex: William.demo)
  • Crie uma classe (ex: williamSeleniumdemo)
  • Agora você tem todos os elementos necessários. Escreva o código para um teste Selenium.
    • Por exemplo, use `driver.get()` para abrir uma URL e aguardar o carregamento da página.
    • Driver.navigate() para navegar entre páginas
    • encontrarElemento(Por.xpath())
    • driver.quit() para fechar todos os navegadores
  • Execute o teste

Teste Appium

Testar dispositivos iOS usando Appium é um pouco mais complexo em comparação com dispositivos Android. Portanto, este guia de teste utilizará um dispositivo iOS para os testes.

  1. Abra o ambiente de desenvolvimento integrado (IDE) IntelliJ.
  2. Adicione as dependências do Appium ao Gradle (remova as dependências do Selenium, se houver).
  3. Instale o driver do iOS (o WebDriver não possui comandos específicos para iOS).
  4. Os desenvolvedores do Selenium podem usar o teste Selenium como base e fazer alterações para adaptá-lo ao teste do iOS.
    1. Defina as funcionalidades desejadas (Isso ajudará você a criar um mapa de valores-chave para definir a forma de fazer login na nuvem, o lançamento de aplicativos etc.).
    2. Você precisa de uma chave de acesso para acessar os dispositivos. Portanto, acesse seu ambiente na nuvem e crie uma chave de acesso.
    3. Crie um nome para o teste (ex: teste WilliamAppium)
    4. Selecione o aplicativo que deseja usar e obtenha o ID do pacote. Você também pode acessar o ambiente na nuvem e fazer o upload do aplicativo para o dispositivo.
    5. Defina o tipo de capacidade móvel (MobileCapabilityType).
    6. Inicie o driver criando um novo driver iOS e fornecendo a URL wd.
  5. Agora, execute o teste a partir da IDE. Isso iniciará o driver e executará o teste em dispositivos móveis.
  6. Acesse a página na nuvem e abra o dispositivo para ver uma visualização em tempo real de como o aplicativo é instalado, iniciado e fechado.

Executando o teste a partir do aplicativo Appium

Executando o teste a partir do aplicativo Appium

  • Acesse o Appium
  • Criar uma nova sessão
  • Existem vários provedores de nuvem. Escolha um provedor de nuvem.

Existem vários provedores de nuvem. Escolha um provedor de nuvem.

  • Insira o nome de usuário e a chave de acesso.
  • Defina o nome da plataforma (ex: iOS)
  • Defina a DeviceQuery (ex: os=iOS)
  • Clique em iniciar sessão
  • O dispositivo será selecionado automaticamente. Você pode usar o Appium Desktop para identificar diferentes elementos e suas propriedades.
  • Escreva o código
    • Driver.findelement(by.xpath)
    • Sendkeys() (nome de usuário e senha)
  • Execute o código. Agora, ele selecionará um dispositivo diferente.
  • Acesse a nuvem e verifique como o teste está sendo executado em diferentes dispositivos.
  • Você pode inserir um ponto de interrupção para depuração.

Pronto! Agora os desenvolvedores Selenium conseguiram executar os testes com sucesso usando o Appium.

Clique aqui para saber mais sobre testes com Appium e Selenium usando a Experitest..

Guy Arieli - CTO

Também recomendamos