Testando Componentes Visuais com OpenCV mais Appium e Cucumber
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
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/