Airtest IDE - uma nova maneira de testar a automação de jogos para celular?

Hoje, quero falar sobre uma ferramenta de código-fonte bastante nova para testes automatizados chamada Airtest . No futuro, farei mais alguns artigos com uma história detalhada sobre os elementos individuais deste kit de ferramentas e como trabalhar com eles, mas agora tenho o objetivo de apresentá-lo e dar uma idéia geral.


Este é o primeiro de três artigos. A segunda parte descreve a estrutura para o reconhecimento de imagem (Image Recognition) - AirTest , e a terceira e última parte é dedicada ao Poco - a estrutura de automação da interface do usuário, escrevendo código .


O AirTest IDE foi desenvolvido pela NetEase e destina-se a aplicativos "difíceis de automatizar", como, por exemplo, jogos. Na verdade, eles são o foco principal dos desenvolvedores, embora isso não pare de usar o AirTest para outros aplicativos.


O AirTest IDE é executado no Windows, MacOS X e Linux e contém 2 estruturas: AirTest e Poco. Este desenvolvimento foi apresentado por Xin Liu no Android Game Developer Summit 2018 . Python 2.7 e Python 3.3+ são usados ​​para escrever testes. Coisas importantes como suporte para executar testes imediatamente em um grande número de dispositivos, código-fonte aberto e aplicativos gratuitos, além de testes escritos fáceis - essas são as vantagens destacadas pelos desenvolvedores. O aplicativo pode ser usado no Windows e no MacOS e permite automatizar aplicativos no seguinte sistema operacional: Windows, iOS, Android.


O Projeto AirTest no GitHub contém 4 projetos: Airtest , Poco , iOS-Tangent , multi-device-runner .
Também vale mencionar que o NetEase fornece seu próprio farm de dispositivos físicos para testes automatizados chamado AirLab .


imagem

Brevemente sobre estruturas.


O Airtest é uma estrutura de plataforma cruzada de reconhecimento de imagem para jogos e aplicativos para dispositivos móveis, baseada na retenção de imagem . O AirTest IDE permite que você interaja com o aplicativo usando os seguintes comandos:
toque, aguarde, deslize, existe, texto, evento de chave, instantâneo, suspensão, assert_exists, assert_not_exists, assert_equal, assert_not_equal. Vou falar sobre os recursos e parâmetros dos comandos em um artigo separado dedicado a um estudo mais detalhado dos quadros AirTest e Poco. Agora, vale mencionar que o comando keyevent é responsável por "pressionar os botões físicos" do dispositivo, como Casa, Energia, Menu, Voltar. Ao usar a maioria dos comandos, o usuário é solicitado a destacar uma parte da tela do dispositivo de trabalho, cuja captura de tela será usada para o comando correspondente (toque, deslize, afirme, etc.).


imagem

As vantagens do Airtest que posso destacar após o trabalho:


  1. Escrita de código rápida e clara. Tudo é feito, na prática, no modo automático, você só precisa selecionar os parâmetros necessários, ajustar os tempos e ter cuidado com a escolha da imagem.
  2. A definição exata da imagem, usada no código, no dispositivo de trabalho ativo. Além disso, o relatório indica a porcentagem de coincidência (comparação) da imagem usada no código e da imagem na tela do dispositivo de trabalho.
  3. Falando de relatórios. Após cada inicialização, você pode criar um relatório usando o atalho de teclado Ctrl \ Cmd + L. Um relatório conveniente fornece informações como: tipos de afirmação de seus resultados, e cada etapa do teste é destacada em uma subseção separada com informações sobre onde o AirTest clicou, onde esperava uma imagem, porcentagem de imagens correspondentes etc.
  4. Depois de escrever o código, você pode usá-lo em qualquer dispositivo.
  5. Multithreading: conecte vários dispositivos de teste e execute-os em paralelo.

Contras Airtest, que posso destacar após o trabalho:


  1. Se no processo houver elementos com a mesma aparência visual, por exemplo, controles deslizantes, botões etc., com uma alta probabilidade, o AirTest não entenderá qual controle você deseja usar. Isso será indicado no erro correspondente. Mas esse menos é facilmente dispensado do uso da segunda estrutura (Poco), que será discutida abaixo.
  2. A comparação de imagens (do código e as reais na tela) ocorre em preto e branco. Vale a pena considerar se você é importante, por exemplo, a aparência visual do personagem (sua cor, roupas diferentes etc.). Se os caracteres são visualmente diferentes, mas são exibidos na tela da mesma maneira (uma pose, etc.), a verificação provavelmente será bem-sucedida. As opções de reconhecimento de imagem têm uma marca de seleção "rgb" que você pode usar, mas não funciona muito bem se você tiver uma imagem pequena.
  3. Você não pode "congelar" a tela enquanto estiver usando o aplicativo para capturar com precisão as capturas de tela necessárias. De tempos em tempos, você precisa "capturar" o quadro que precisa.
  4. Porque aplicação em beta aberto, você pode encontrar vários erros ou imprecisões irritantes, por exemplo, como a incapacidade de redimensionar uma janela com um aplicativo interno no Windows. Agora, os autores estão atualizando o AirTest IDE a cada poucos meses, e espero que esses problemas sejam corrigidos em breve.

O Poco é uma estrutura universal para automatizar a interface do usuário (UI), que fornece APIs poderosas, independentemente do mecanismo (do jogo). Esses, por sua vez, recuperam a hierarquia dos elementos da interface do usuário em tempo de execução. Graças a isso, o usuário pode "alcançar" toda a hierarquia de elementos na página atual em apenas alguns cliques no elemento que ele precisa, etc. Além disso, essa estrutura permite “congelar” a tela atual para escrever código com base na hierarquia de elementos da janela atual. O Poco foi projetado para ajudar o AirTest a entender que tipo de elemento de interface do usuário os testes estão falando, mas ninguém o incomoda em escrever todos os testes usando apenas essa estrutura.
Todos os testes são escritos em Python. As implementações de comando podem ser encontradas nas APIs correspondentes: módulo airtest.core.api , pacote airtest.core.android , pacote airtest.core.ios , pacote airtest.core.win


imagem


Poco vantagens que posso destacar após o trabalho:


  1. Há suporte para vários mecanismos de jogos importantes, incluindo Unity3D, cocos2dx-js, cocos2dx-lua, mecanismos internos do NetEase, além de suporte para aplicativos Android / iOS nativos. Se você quiser usar um mecanismo que não esteja na lista de "suportados", poderá criar o seu próprio seguindo as instruções apropriadas . Na documentação oficial, há uma menção ao Unreal Engine, mas até agora tudo se limita à frase "Em breve".
  2. A hierarquia dos elementos da interface do usuário na tela retorna em tempo real.
  3. Início rápido e execução de testes.
  4. Como no AirTest, escrevi o código uma vez - use-o em qualquer lugar. Suporte para Python 2.7 e 3.3+
  5. É possível conectar bibliotecas externas ao seu projeto
  6. A julgar pela documentação, há suporte para sensores GPS, acelerômetro e giroscópio, além de suporte para os modos de exibição retrato e paisagem.

Poco contras que posso destacar depois do trabalho:


  1. Durante o trabalho no Windows 7, não encontrei problemas fundamentais. o que interferiria no trabalho de pleno direito, mas, no momento, eles estão ao trabalhar com o Windows 10. O principal é o movimento incorreto de objetos (comando de furto) em alguns casos. Por exemplo, indico o objeto a ser movido e as coordenadas do segundo objeto, que é o ponto final. Nesses casos raros, Poco perde o local final, mas os relatórios mostram os dados de deslocamento corretos (vetor) e a etapa é considerada bem-sucedida.
  2. Quando você seleciona alguns elementos com layouts grandes (layout), a seleção pode se sobrepor à janela do Poco Assistant e você não poderá selecionar outros elementos até que a seleção seja removida da atual. Para remover a seleção, você pode usar o atalho do teclado Alt + F4

Para concluir, vale ressaltar que o Airtest IDE possui seu próprio plug-in Selenium , com o qual você pode automatizar seu projeto da Web, mas usando apenas um navegador Chrome. O restante, no momento, não é suportado. Pessoalmente, ainda não trabalhei com ele, portanto não posso dizer sobre o trabalho dele, mas era impossível sentir falta dele nesta breve descrição.


imagem


Como resultado, eu diria que o AirTest IDE é um desenvolvimento muito promissor, projetado para automatizar a interface do usuário em jogos, mas, no momento, não é adequado para testar o processo do jogo. Se você tem muitos elementos de interface do usuário e / ou muitos dispositivos para verificar e não deseja gastar muitas horas de trabalho, esse IDE pode se tornar seu salva-vidas. Para começar a escrever os testes mais simples, você não precisa de conhecimentos profundos em automação e programação, apenas possui um entendimento básico de como trabalhar com o Python. Obviamente, dessa maneira você não irá longe e precisará aprender essa linguagem de programação, mas para começar e entender o quão realista esse programa combina com você, basta para seus olhos. A única coisa frustrante agora são vários erros irritantes associados, por exemplo, à incapacidade de redimensionar uma janela com um dispositivo em funcionamento (aplicativo Windows) depois de incorporá-lo, sobrepondo um grande objeto selecionado da interface principal do programa etc., mas é bem possível chegar a um acordo, especialmente considerando o fato de que o aplicativo está no estágio Beta.


imagem

Source: https://habr.com/ru/post/pt461773/


All Articles