
O público
Engenheiros de controle de qualidade, testadores de aplicativos móveis, automação.
O problema
Durante o teste de aplicativos para Android (não apenas, mas falaremos mais sobre esta plataforma), você deve instalar muitos conjuntos de produtos / produtos testados. Esse processo leva tempo e esforço, o que é mais eficiente para encontrar bugs.
Neste artigo, examinaremos uma solução existente, escreveremos a nossa em Python e compará-las.
Solução chave na mão
Talvez a solução mais popular para esse problema no momento seja fornecida pelo serviço Crashlytics, que inclui o instalador Beta.
Considere um processo típico de instalação de aplicativos usando o Crashlytics Beta:
- Encontramos o ícone Beta (1) → pressione (2) = o aplicativo inicia.
- Encontramos o projeto desejado (3) → toque em (4) = uma tela com uma lista de montagens é aberta.
- Encontre a montagem desejada (5) → toque em “Download” (6) = o arquivo de instalação é baixado no dispositivo.
- Uma tela é exibida com uma proposta para instalar o aplicativo → toque em “Instalar” (7) = a tela de instalação é exibida.
- Encontre o aplicativo instalado (8) → pressione (9) = o aplicativo inicia; pronto para teste.
Portanto, para instalar e executar uma compilação de aplicativo usando o Crashlytics Beta, é necessário executar um total de pelo menos nove ações. Vamos nos concentrar nesses indicadores e tentar criar um instalador que exija menos ações para resolver problemas semelhantes.
Solução personalizada
Escolhemos o Python como a linguagem de programação, porque é adequada para a nossa tarefa e é muito popular, inclusive entre os engenheiros de controle de qualidade.
Para interagir com o Android, usaremos o adb, que faz parte do SDK padrão do Android.
Para baixar arquivos - Wget.
No nosso caso, as montagens são realizadas no TeamCity.
Agora vamos passar a escrever código.
Antes de tudo, como importamos o módulo subprocesso no projeto, é necessário executar os comandos wget e adb .
import subprocess
Adicione as configurações necessárias para o Wget.
settings = {'user': '—user=__teamcity', 'password': '—password=__teamcity', 'way': '____'}
Instalaremos os aplicativos pelo número da compilação, portanto ensinaremos o script a solicitar esse parâmetro.
number = input(' № : ')
Digamos que precisamos instalar dois conjuntos ao mesmo tempo: teste e combate. Vamos baixá-los do TeamCity. Para fazer isso, descobrimos o caminho completo para os arquivos, abrindo a página de serviço e localizando a montagem nos artefatos. O URL de pré-montagem será mais ou menos assim:
https://teamcity.mysite.com/repository/app/_/_/myapp-_-_.apk
No endereço, em vez do número da montagem, você pode ver a identificação, por exemplo, / 1234: id /. Aqui, indicaremos não o ID, mas o número da montagem.
Escreveremos uma função para baixar os conjuntos fornecidos.
def download(type_b): url = 'http://teamcity.mysite.com/repository/app/{0}/{1}/myapp-{0}-{1}.apk'.format(number, type_b)
Escreveremos uma função para instalar e executar aplicativos. Primeiro, remova os conjuntos instalados anteriormente. Não esqueça que, se pelo menos um aplicativo não estiver no dispositivo, o script terminará com um erro. Para evitar isso, ignoraremos erros.
Neste exemplo imaginário, dois pacotes:
- com.myapp.prod
- com.myapp.test
Atividades Iniciais:
- com.myapp.prod/com.myapp.StartActivity
- com.myapp.test / com.myapp.StartActivity
Os nomes dos seus pacotes e atividades serão diferentes.
def install(type_b): try:
Todas as funções necessárias são escritas. Agora eles podem ser aplicados.
Além disso, adicionamos um manipulador para o caso quando o assembly especificado não está no TeamCity.
while True: try:
O script está pronto. Nós o salvamos, por exemplo, sob o nome installer.py
Adicione alias, por exemplo, alias inst = 'python ~ / scripts / installer.py'
Verifique
Portanto, para instalar um assembly usando o Crashlytics Beta, você precisa executar 9 ações. Para comparação, medimos esse indicador no script.
- Iniciamos o script com o comando inst (1) = uma sugestão é exibida para definir o número da compilação.
- Defina o número da montagem (2) = montagens antigas são excluídas; Baixe, instale e inicie novos. O aplicativo está pronto para teste.
Resultado
Beta (1 build) - 9 ações (não incluindo a exclusão de builds antigos).
Seu próprio script (quantas montagens quiser) - 2 ações.
Um bônus adicional da solução personalizada é que ela é dimensionada (adicionando a instalação de vários produtos a vários dispositivos etc.) e também se adapta facilmente às tarefas de teste automático.
Fontes