DevSecOps

18 set, 2015

SikuliX: automatize testes apenas com visualização

Publicidade

No cenário que utilizamos hoje em QA, algumas vezes nos deparamos com situações nas quais os IDs não vão nos salvar e seremos obrigados a deixar determinado teste de lado, nas mãos dos nossos desenvolvedores. Para resolver esse problema, fui em busca de uma ferramenta que pudesse utilizar apenas a visualização para automatizar testes. Encontrei a Sikuli, e vou compartilhar as minhas primeiras impressões neste artigo.

A Sikuli trabalha com OpenCV e dispõe de um algoritmo de comparação de imagens, o que facilitou quando eu precisei interagir entre coisas parecidas sem ter que alterar o código. Além disso, ela disponibiliza algumas ferramentas de interação mais voltadas para web, mas que são facilmente adaptáveis para mobile.

A primeira coisa que me interessou bastante no uso do OpenCV foi a infinidade de possibilidades que a lib oferece e o futuro promissor da ferramenta (já tem data para o Sikuli 2). Aqui tem um vídeo mostrando o potencial da lib (OpenCV) para quem não conhece. Mas vamos ao que interessa!

O que é a Sikuli?

Sikuli é uma ferramenta de automação que tem como objetivo automatizar tudo o que você pode ver na tela do seu computador. Mais especificamente, ela trabalha com OpenCV (Computer Vision), então qualquer coisa que apareça na tela ou que possa ser gerenciada com algum team viewer ou ferramenta parecida, pode ser automatizado. A ferramenta também usa Java Robot para fazer a automação, e com o uso de Jython tem o poder de utilizar toda a API do Java e os módulos de Python. Além disso, é capaz de usar OCR, uma tecnologia que transforma uma imagem ou documento em regiões editáveis e pesquisáveis.

A ferramenta foi criada pelo User Interface Design Group, do MIT, e agora recebe manutenção de Raimund Hocke e da comunidade open source.

Como utilizar?

A princípio, vamos utilizar a continuação do projeto feita pelo Sr. Raimund no mac OSX 10, a SikuliX. Importante utilizar a versão 1.1.0, e para quem tiver dúvidas ou quiser instalar, clique aqui. Além da óbvia automação de testes, eu achei muito interessante o uso para prototipações rápidas e pequenas automações cotidianas, como até mesmo a própria configuração de um ambiente.

Na instalação, a ferramenta já oferece opções sobre como ela vai ser utilizada, e os botões de ajuda (H) são muito bem descritos:

image03 (2)

A interface é simples e dispõe de poucos comandos, mas a Sikuli conta com muito mais funcionalidades, que podem ser adicionadas ao código mesmo que não estejam representadas na interface gráfica.

image02 (2)

A Sikuli ainda possui alguns atalhos interessantes para facilitar a interação do usuário. Quando escolhemos uma opção como “click”, por exemplo, ela tira um print para juntar a imagem ao método. Desenvolvendo via código (no Mac) podemos salvar o projeto no local onde nós vamos utilizar as imagens.

image05

 

Já na parte de detecção e comparação de imagens, uma sutil mudança na sensibilidade faz com que a ferramenta detecte (ou não) a segunda imagem como semelhante. Repare no movimento feito da barra colorida, em cima do botão aplicar. Ao se aproximar do 99, o OpenCV parou de detectar outros objetos na tela como semelhantes.

image04

image06

A Sikuli também permite que nós cliquemos em outros lugares tendo como referência um objeto na tela. Repare que ao clicar em qualquer lugar da tela, a referência do clique muda facilmente. No exemplo, cliquei logo acima do marcador de visualizações do app (o olho).

image00 (2)

No próximo artigo, vou mostrar a automatização utilizando o nosso ambiente de features. Até agora, destaco que a maior vantagem é abstrair totalmente o ambiente de desenvolvimento.

Ficou alguma dúvida ou tem algum comentário a acrescentar? Aproveite os campos abaixo!