terça-feira, 30 de dezembro de 2014

UI AutoMonkey - Teste Automatizado iOS

Pesquisando na internet sobre Teste Automatizado em iOS, me deparei com uma página onde tratava o assunto UI AutoMonkey.

Achei muito interessante. Então baixei o código para estudar como funciona. (o link para o site está no final desse artigo) 

Depois de baixar, abrir o script no Instruments. (clique aqui e saiba mais sobre o Instruments)

No começo o código parece um pouco complexo. Mas com a curiosidade era muito grande, pluguei o dispositivo no cabo e rodei o script do jeito que estava.
Para minha surpresa, funcionou, mas não em sua totalidade.

Fiquei empolgado com a idéia de poder executar esse tipo de teste nos aplicativos.

Então debrucei no código para entender como ele funcionava. Quando falo que debrucei, entende-se cair de cabeça e explorar cada linha de comando.

Mas você pode estar se perguntando: O que é UI AutoMonkey? 



O UI AutoMonkey é um script onde é executado no emulador ou no próprio dispositivo, uma série de eventos aleatórios, como cliques, toques, rotações e etc no aplicativo

Mas qual é a vantagem de executar o UI AutoMonkey?
A resposta é simples: com o teste, você pode estressar seu aplicativo aleatoriamente atrás de bugs que com o teste normal não iria encontrar.

Mas vamos voltar no que interesssa, o script.

Depois de analisar cada linha de código, fazer alguns testes (tirando ou colocando linhas de códigos), entendi como funcionava.
O script é bem documentado, o que ajuda a entender.

Depois de executar várias vezes e entender o funcionamento, decidi fazer o meu próprio "macaco", pois o script não atendia por completo as minhas necessidades.

A minha primeira necessidade foi: como o teste é executado aleatoriamente e os toques podem ser em qualquer lugar da tela, era necessário limitar a área que o teste poderia tocar. Pois há áreas que ao tocar, sai do aplicativo e abre uma outra funcionalidade.

Depois de estudar, pesquisar bastante, me veio a primeira solução:


O código acima faz mais algumas coisas além de determinar a área do toque no aplicativo.

Como essa é a primeira versão do código, está funcionando apenas para o iPhone 5, 5s e 5c que tem a mesmo tamanho de tela.
Para o iPhone 4, 6 e 6 Plus, o código está em desenvolvimento ainda.
Minha idéia é de o teste identificar automaticamente o dispositivo e executar o código apropriado.
Assim que tiver o código pronto, irei compartilhar com vocês.

Aqui que a mágica acontece.


 O toque continua sendo aleatório, só que dentro da área que determinei.

Uma outra funcionalidade que implementei foi o de zoom na foto.
Fiz uma outra função que trata essa possibilidade. 


Novamente determinei uma área para dar o zoom na foto, onde cada zoom demora 1 segundo.

Mas encontrei um problema. Como os toques na tela são aleatórios, como executar a função somente quando a foto for selecionada?

Resolvi o problema da seguinte forma.



Fiz uma outra função que trata apenas da funcionalidade foto.
Onde tem o zoom, a rotação do aparelho e o fechar foto.

Nessa função eu verifico se o elemento fechar está visível na tela (que é um elemento específico da foto). Se tiver visível, executo todas as funções que interagem com a foto.

Até agora, as funções criadas só executariam uma única vez.
Para o meu "macaco" funcionar, fiz em um outro script que faz o loop de quantas vezes quero que o "macaco" seja executado.


Usei o laço FOR para determinar quantas vezes quero que todo o script seja executado.

Para estruturar todo o meu teste, criei ele usando a idéia do artigo que postei aqui

Depois uns ajustes aqui, outros ali, estava pronto o meu "macaco", que carinhosamente coloquei o nome de Monkey Testing



Ainda é a primeira versão. Tem muito a melhorar ainda.
Estou trabalhando nessa melhora, e logo tendo resultados, irei compartilhar com vocês aqui.

Segue o link do UI AutoMonkey

Caso tenha alguma sugestão ou dúvida, é só entrar em contato


Abraços e até a próxima! 
 ________________________________________

Gostou? Compartilhe


br.linkedin.com/pub/silas-fellipe/24/33a/950

Um comentário:

  1. Excelente artigo, acredito que testes automatizados para aplicativos móveis ainda é uma área pouco explorada por aqui, conteúdos como esses agregam pra caramba, ainda mais estando em PT-BR.
    Parabens!

    ResponderExcluir