Criando um farm de dispositivos Android usando o Open STF

A participação do tráfego móvel está aumentando a cada ano. Uma pessoa moderna é móvel e é mais fácil obter informações na tela de seu próprio smartphone. Portanto, o desenvolvimento de aplicativos móveis é uma tendência. Ao desenvolver e testar, é importante ter acesso a uma variedade de dispositivos, para que o aplicativo seja executado corretamente em todos os tipos de modelos de smartphone. Considere várias opções para acessar dispositivos.

Uma maneira é os farms de nuvem móvel :

Desenvolvedores SAMSUNG: Laboratório de teste remoto
Laboratório de teste do Firebase
Navegação
AWS Device Farm
App center
Laboratórios de molho

Alguns deles são gratuitos - com um número limitado de dispositivos, outros - pagos, com uma grande frota de dispositivos. Por meio deles, você pode obter acesso remoto a dispositivos reais e rastrear erros que ocorrem nos dispositivos, mas não são reproduzidos nos emuladores.

Outra maneira é criar seu próprio farm de smartphones Android, graças ao qual funcionários de diferentes cidades e países podem se conectar a dispositivos de escritório. Vamos ver como você pode criar seu próprio farm de dispositivos Android através do projeto Open STF .

Instalação no Ubuntu 18.04:


Atualize o apt-get:

sudo apt-get update 

Instale dependências para o OpenSTF (Node.js, NPM, GraphicsMagick, ZeroMQ, Buffers de Protocolo, yasm, pkg-config, adb).

 sudo apt-get install nodejs npm graphicsmagick libzmq3-dev protobuf-compiler libprotobuf-dev yasm pkg-config android-tools-adb 

Faça o download do pacote deb RethinkDB (o pacote não está disponível para o Ubuntu 18.04 via apt):

 wget https://github.com/srh/rethinkdb/releases/download/v2.3.6.srh.1/rethinkdb_2.3.6.srh.1.0bionic_amd64.deb sudo dpkg -i rethinkdb_2.3.6.srh.1.0bionic_amd64.deb 

Instale o OpenSTF:

 npm install -g stf 

Se durante a instalação ocorrerem erros que o npm não possa acessar / usr / local / lib ou / usr / local / bin, forneça acesso a eles:

 sudo chown -R $USER /usr/local/lib sudo chown -R $USER /usr/local/bin 

E reinicie

 npm install -g stf 

Instalação no MacOS X:


Instale o homebrew:

 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

Faça o download e instale todas as dependências:

 brew install node rethinkdb graphicsmagick zeromq protobuf yasm pkg-config homebrew/cask/android-platform-tools 

Se o seguinte erro ocorrer ao instalar o protobuf:

 Error: An unexpected error occurred during the `brew link` step The formula built, but is not symlinked into /usr/local Permission denied @ dir_s_mkdir - /usr/local/Frameworks Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks 

Então você precisa criar a pasta / usr / local / Frameworks e conceder permissões de gravação para ela:

 sudo mkdir /usr/local/Frameworks sudo chown $USER /usr/local/Frameworks 

Instale o OpenSTF:

 npm install -g stf 

Instalação no Windows:


Possível através do Cygwin, mas não oficialmente suportado pelos desenvolvedores.

Lançamento


Para que o OpenSTF funcione, você deve primeiro executar o RethinkDB.

 rethinkdb 

Próxima execução do openstf

 stf local --public-ip <ip- > 

Dispositivos de conexão:


Por padrão, o OpenSTF detecta e conecta o dispositivo independentemente sem reinicializar ao conectar dispositivos móveis à máquina.

Mas no Ubuntu pode haver problemas:

Se o dispositivo móvel não estiver visível no openstf e a seguinte mensagem for exibida nos logs do openstf:

 Unhandled rejection Error: Illegal value for Message.Field .DeviceIntroductionMessage.status of type enum: undefined (not a valid enum value) 

e o comando adb devices produz a seguinte saída:

 List of devices attached ??????? no permissions (verify udev rules); see [http://developer.android.com/tools/device.html] 

Você precisará adicionar o dispositivo manualmente:

Para fazer isso, execute

 lsusb 

e encontre um dispositivo que não possa determinar.
Por exemplo

 Bus 001 Device 010: ID 2e04:c026 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 

O ID do dispositivo USB consiste em duas partes - o ID do fabricante (a primeira parte do ID é ':', 2e04, como no exemplo acima) e o ID do modelo do dispositivo (c026).

Em seguida, execute os comandos nos quais os parâmetros ATTR {idVendor} e ATTR {idProduct} são preenchidos de acordo com o ID do dispositivo encontrado incorretamente:

 echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="2e04", ATTR{idProduct}=="c026", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules sudo udevadm control --reload-rules sudo udevadm trigger --verbose --action=add --subsystem-match=usb 

Vale a pena considerar que é recomendável conectar dispositivos através de um hub USB separado com fonte de alimentação separada (por exemplo, este ).

Uma das características do farm é que, devido ao carregamento constante, a duração da bateria dos dispositivos móveis será limitada a 2-3 anos; portanto, se a bateria for removível no dispositivo, faz sentido comprá-lo com antecedência. Em dispositivos, você pode desativar o modo em que a tela do dispositivo está constantemente ligada durante o carregamento (basta deixar a configuração para desligar a tela automaticamente após 30 segundos de inatividade), porque O OpenSTF pode ligar a tela independentemente quando necessário - isso aumentará a vida útil do dispositivo. É importante dizer que o OpenSTF não deve ser acessível de fora da rede corporativa, exceto por meio de uma VPN, pois não há autorização normal para isso.

Capturas de tela do programa em execução


Inicie o OpenSTF:



Iniciando o aplicativo Google Play no OpenSTF



Lista de dispositivos conectados no OpenSTF



Configurando informações do dispositivo no OpenSTF



Assim, seu próprio farm de dispositivos Android ajuda a configurar o acesso a dispositivos remotos para funcionários remotos, melhorando assim a qualidade dos aplicativos desenvolvidos. Tem seus prós e contras, que valem a pena considerar.

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


All Articles