Testando Componentes Visuais com OpenCV mais Appium e Cucumber

Danilo Policarpo
2 min readFeb 12, 2019

--

O que é OpenCV ?

O OpenCV (Open Source Computer Vision Library) é uma biblioteca de software de visão computacional e aprendizado de máquina em código aberto construído para fornecer uma infra-estrutura comum para aplicativos de visão computacional.

Pré requisitos

  • Homebrew
  • Ruby 2.3.0
  • Appium v.1.10.1
  • Appium-doctor v.1.9.0
    Ao executar o comando appium-doctor é exibido as dependencias necessárias para usar o OpenCV

Instalação do OpenCV

  • Cmake
    É uma ferramenta open source utilizada para controlar processo de compilação de software.
$ brew install cmake
  • OpenCV4nodejs
    É uma library OpenCV para node
$ npm i -g opencv4nodejs

Execução

Para gerar um screenshot por elemento:

element = find_element(id:'id do elemento')
element_screenshot(element, 'Caminho/Arquivo.png')

Para gerar um screenshot por Tela:

screenshot('Caminho/Arquivo.png')

Leitura dos arquivos:

imagem1 = File.read 'Caminho/Arquivo.png' 
Imagem2 = File.read 'Caminho/Arquivo.png'

---- Comparação por similaridade (As imagens tem que ter o mesmo tamanho, mesmo sendo diferentes)

resultado = get_images_similarity first_image: imagem1, second_image: imagem2
puts resultado

resultado próximo ou igual 1 (100% iguais)
resultado inferior ou igual a 0 (0% totalmente diferentes)

Acesse o repositorio aqui

Benefícios

  • Detecção rápida de problemas
  • Maior qualidade do código e interface do usuário
  • Redução de regressão
  • Controle de visualizações em diferentes dispositivos (Teste de compatibilidade)
  • Feedback rápidos
  • Maior interação com UXs
  • Acessibilidade (contraste)

Prós

  • A biblioteca tem mais de 2500 algoritmos otimizados
  • Amplamente utilizada em empresas,grupos de pesquisas e órgãos governamentais
  • Detecção facial
  • Identificação de objetos
  • Classificação de ações humanas em videos
  • Extrair modelos 3D de objetos
  • Remover olhos vermelhos de imagens tiradas usando flash
  • Edição de fotos
  • Manipulação de cores etc ….

Contras

  • Necessidade de compilação
  • Falta de documentação para algumas linguagens de programação

Colaboração

Thiago Simões e André Azevedo

Mais informações acesse:

https://opencv.org
https://github.com/danilopolicarpos/Appium
http://macappstore.org/cmake/
https://cmake.org/
https://www.rubydoc.info/github/appium/ruby_lib/Appium/Driver#screenshot-instance_method
https://appium.readthedocs.io/en/latest/en/writing-running-appium/image-comparison/

--

--