Para realizar testes de robustez em aplicações Android utilizando o framwork Django, é essencial integrar ferramentas como o Monkey. Este processo envolve a detecção de dispositivos, configuração de comandos e execução de scripts automatizados.
Obtenção de Dispositivos Conectados
Primeiro, precisamos identificar os dispositivos Android disponíveis através de um script Python. O código abaixo exemplifica como listar e selecionar o primeiro dispositivo conectado.
import os
class GerenciadorTestes:
def recuperar_dispositivo(self):
resultado_comando = os.popen('adb devices')
linhas_saida = resultado_comando.readlines()
id_dispositivo = linhas_saida[1].split('\t')[0]
return id_dispositivo
Parâmetros e Configurações do Monkey
O Monkey é uma ferramenta de teste de stress que envia eventos aleatórios para aplicações Android. Seus parâmetros permitem controlar o comportamento dos testes. Abaixo, uma explicação detalhada dos principais opções:
- --help: Exibe informações de uso e opções disponíveis.
- -v: Aumenta o nível de verbosidade. Múltiplos '-v' (ex.: -v -v -v) fornecem logs mais completos.
- -s <semente>: Define um valor de semente para o gerador de números aleatórios, permitindo a replicação de sequências de eventos.
- --throttle <milissegundos>: Insere um atraso entre eventos para controlar a velocidade de execução.
- --pct-touch <percentual>: Ajusta a porcentagem de eventos de toque na tela.
- --pct-motion <percentual>: Configura a proporção de eventos de movimento, como arrastar.
- --pct-trackball <percentual>: Define o percentual de eventos de trakcball.
- -p <pacote-permitido>: Restringe os testes a pacotes de aplicativos específicos. Para múltiplos pacotes, use várias opções '-p'.
- -c <categorias>: Filtra por categorias de Intent, como Intent.CATEGORY_LAUNCHER.
- --ignore-crashes: Continua a execução mesmo após falhas no aplicativo.
- --ignore-timeouts: Ignora erros de tempo de resposta, como diálogos de ANR.
- --ignore-security-exceptions: Prossegue apesar de exceções de segurança.
- --kill-process-after-error: Encerra processos após ocorrência de erros.
- --monitor-native-crashes: Monitora e relata travamentos em código nativo.
Sintaxe de Scripts do Monkey
Para executar o Monkey via linha de comando, utilize o formato geral:
$ adb shell monkey [opções]
Se nenhuma opção to especificada, o Monkey inicia em modo aleatório, enviando eventos para todos os pacotes instalados. Um exemplo mais típico para testar um pacote específico com 500 eventos:
$ adb shell monkey -p nome.do.pacote -v 500
Exemplo Prático de Execução
Aqui, demonstramos um teste de stress com configurações detalhadas. O comando abaixo direciona 1000 eventos aleatórios para o pacote com.exemplo.aplicativo, com um atraso de 1000ms entre eventos, ajustando os percentuais de toque, movimento e trackball, e gravando logs em um arquivo.
$ adb shell monkey -p com.exemplo.aplicativo --throttle 1000 --pct-touch 30 --pct-motion 30 --pct-trackball 10 -v -v -v 1000 > caminho/para/log.txt
Este comando gera logs verbosos, permitindo análise detalhada da estabilidade do aplicativo durante o teste de stress.