Blog > Testes Regressivos Visuais - Parte I - Introdução & Ferramentas
Blog > Testes Regressivos Visuais - Parte I - Introdução & Ferramentas
Fala galera! Roberto Ungarelli na área.
Devido ao sempre crescente aumento da complexidade de sistemas, pressão para redução de prazos de entrega e foco em produtividade, está ficando cada vez mais difícil entregar software com qualidade e em conformidade com os requisitos solicitados pelo cliente. A convencional equipe de testes já não dá conta de testar tanto em tão pouco tempo, sobretudo considerando os impactos das novas funcionalidades que, não raro, ocasionam erros em partes do sistema já testadas. Este cenário, tão comum em diversas organizações, exige das equipes uma abordagem inovadora e criativa em conjunto com aperfeiçoamento técnico e capacidade de propor novas abordagens.
No cenário acima, é comum surgir o tema "Automação de Testes", principalmente visando reduzir o esforço gasto nos testes regressivos. Em seguida, a capacitação da equipe torna-se um problema, visto que a curva de aprendizado demanda investimento razoável e há de se considerar o perfil dos integrantes, pois exige habilidade em lógica e na construção de algoritmos, além de conhecimento em orientação a objetos e em linguagem de programação.
Um conceito alternativo tem sido estudado e aplicado com o objetivo de reduzir o esforço na construção de casos de teste automatizados, reduzindo e até eliminando a necessidade de codificação, focando na interface da aplicação em testes. Este conceito é chamado de "Visual Regression Tests", ou "Web Consistency Tests", ou mesmo " Testes Regressivos Visuais". Basicamente, é gravado um snapshot da interface e, quando for necessária a realização de re-testes, a interface da aplicação é comparada com o que foi gravado no snapshot. Com isso, todas as diferenças são registradas em log para análise manual, o que facilita o reconhecimento de falhas, principalmente daquelas que não são encontradas devido ao desgaste e vícios de teste da pessoa que realiza exaustivamente os mesmos testes durante vários ciclos.
Abaixo veremos algumas ferramentas que tem se destacado neste segmento, são elas:
Applitools Eyes Validação de aspectos visuais;
Pode ser usada sem codificação;
Serviço web. https://applitools.com/
Screenster Validação de aspectos visuais;
Necessita de um servidor de execução;
Pode ser usada sem codificação; http://www.creamtec.com/products/screenster/
Automa Apenas ambientes Windows;
Necessita de codificação;
É possível automatizar aplicações desktop; http://www.getautoma.com/
TestInSeconds Serviço web;
Realiza testes visuais, desempenho, acessibilidade, entre outros.
http://www.testinseconds.com/
Selenium2-visualdiff Descontinuado.
http://kreyssel.github.io/selenium2-visualdiff/
Huxley Descontinuado.
PhantomCSS Complexidade na instalação e configuração;
Validação de aspectos visuais.
Esta ferramenta fornece mecanismos de validação de todos os aspectos visuais da tela sem que seja preciso declarar na ferramenta exatamente o que deve ser validado, e o melhor é que depois de gravado, o script pode ser executado em diversos dispositivos , o que é uma mão na roda para testar aplicações responsivas.
Outro benefício interessante é que ela possui integração com as principais ferramentas de automação de testes disponíveis (Selenium, Appium, QTP, entre outras). Além disso, o log é bem simples de ser interpretado e mostra um comparativo da tela esperada e a tela obtida, marcando exatamente o que está diferente.
Para utilizar esta ferramenta basta se cadastrar no site e instalar um complemento no navegador. O custo da licença é de U$ 79,00 por mês por usuário.
O vídeo abaixo (em inglês), apresenta uma introdução à ferramenta.
Esta ferramenta ainda está em estágio embrionário, mas possui uma proposta muito interessante, girando em torno dos benefícios de utilizar a comparação visual, em detrimento da codificação de scripts.
Possui todos os benefícios do Applitool Eyes, porém, nesse estágio, ainda é necessário instalar um servidor de execução para poder rodar os testes. Em breve eles lançarão um servidor nas nuvens para que não seja necessário instalar nenhum aplicativo. O custo da licença é de U$ 100,00 por mês por usuário, mas no plano anual o valor cai para aproximadamente U$ 84,00 por mês por usuário.
Esta ferramenta funciona apenas em ambientes Windows e tem o objetivo de permitir a automação de tarefas repetitivas na interface do usuário. Com ela é possível realizar ações a partir de comandos simples, como "start", "click" e "write". Estas instruções são usadas como se você estivesse orientando alguém que está em frente ao computador. Estes comandos podem ser salvos em scripts e depois podem ser reproduzidos com apenas um "click".
Utilizando os mesmos exemplos do site oficial, temos as seguintes possibilidades, por exemplo:
write("admin", into="Username")
O ponto negativo desta ferramenta para utilização com a finalidade de aplicar "Testes Regressivos Visuais", é que para criar scripts web é preciso utilizar uma linguagem de programação , o que acaba trazendo uma complexidade a mais e aumentando a curva de aprendizado.
Esta ferramenta possui o valor de 389 euros por usuário, e a licença é vitalícia.
Neste serviço web é realizado um escaneamento em todas as páginas da aplicação, onde é realizada checagem de palavras, acessibilidade, links quebrados, desempenho e renderização em diversos navegadores. A primeira vista é uma ferramenta bem completa e com preço acessível, onde a checagem de renderização custa U$ 1,60 por página e todos os outros testes custam U$ 0,25 por página, cada um e não é preciso instalar nem coinfigurar nada na infraestrutura.
O ponto negativo deste serviço é que a aplicação deve estar disponibilizada na web e em alguns casos, para configurar a autenticação, é necessário realizar manutenção na aplicação.
Selenium2-visualdiff
Esta ferramenta trata-se de um complemento do Selenium2 responsável por salvar imagens das telas e realizar a comparação em execuções posteriores. Este projeto não sofreu evoluções desde 2011 e, devido a isso, não recomendo sua utilização.
Esta ferramenta foi criada pelo Facebook para realização de testes regressivos visuais porém não é mais suportado nem atualizado por eles e, devido a isso, não recomendo sua utilização.
Esta ferramenta tira screenshots utilizando o CasperJS e compara-os com imagens da baseline utilizando o Resemble.js para buscar diferenças de pixels. A partir desta busca, o PhantomCSS gera diffs destas imagens para ajudá-lo a encontrar os problemas. Neste arquivo resultante, as áreas na cor rosa indicam onde a tela mudou. De acordo com o site, mesmo sendo possível ignorar partes dinâmicas da tela, recomenda-se a utilização desta ferramenta em páginas estáticas ou utilizando dados falsos que levem a aplicação em teste a se comportar sempre da mesma forma.
O conceito de testes regressivos visuais sugiu como uma evolução complementar a automação de testes, e várias ferramentas tem sido criadas com o objetivo de viabilizar a aplicação desta idéia. A comunidade tecnológica de Quality Assurance está abraçando cada vez mais os testes regressivos visuais e grandes empresas de tecnologia também tem procurado aplicá-los. Apesar disso, devemos ter prudência e entender quais os reais benefícios podem ser obtidos pois, assim como qualquer outra tecnologia, não é uma bala de prata e não vai resolver problemas oriundos da falta de comunicação e de processos, tão comum em empresas de tecnologia.