Testes de Stress com Monkey e Django para Aplicações Android

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.

Tags: Monkey Testing android ADB Django Testes de Stress

Publicado em 7-3 01:04