Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Agile Brazil 2014 - Visual Regression Testing c...

Agile Brazil 2014 - Visual Regression Testing com PhantomCSS

Palestra apresentada no Agile Brazil 2014, no dia 05/11.

Stefan Teixeira

November 05, 2014
Tweet

More Decks by Stefan Teixeira

Other Decks in Programming

Transcript

  1. Sobre o palestrante Stefan Teixeira • QA/DevOps Engineer @ Rastreabilidade

    Brasil • Bacharel em Ciência da Computação pela UFRJ • Finalizando MBA em Garantia de Qualidade de Software pela Escola Politécnica da UFRJ • Mantém um blog técnico sobre testes: stefanteixeira.com.br • Certificado CTAL-TM / TA pelo ISQTB e CPRE-FL pelo IREB Contatos: • E-mail: [email protected] • Twitter: twitter.com/stefan_teixeira • Facebook: facebook.com/stefan.teixeira • LinkedIn: linkedin.com/in/stefanteixeira • GitHub: github.com/stefanteixeira • SlideShare: slideshare.net/stefanteixeira
  2. Motivação • Diminuir esforço de testes manuais • Tornar refactor

    de CSS mais simples • Identificar, de forma fácil e rápida, defeitos que não seriam encontrados tão facilmente com testes manuais
  3. O que é? • Módulo do CasperJS para Visual Regression

    Testing usando PhantomJS e Resemble.js • Criado por James Cryer (Huddle) • https://github.com/Huddle/PhantomCSS
  4. O que é? • Módulo do CasperJS para Visual Regression

    Testing usando PhantomJS e Resemble.js
  5. Resemble.js • Biblioteca para análise e comparação de imagens, usando

    JavaScript e HTML5 • Criada por James Cryer, especialmente para o PhantomCSS (mas você pode baixar e utilizá-la individualmente :) • http://huddle.github.io/Resemble.js
  6. PhantomJS • Headless Browser mais popular atualmente • Utiliza engine

    gráfica WebKit, a mesma do Safari e do Chrome (até versão 27 - Abr/2013) • Hoje, o Chrome usa sua própria engine (Blink), que é um fork do WebKit • Criado por Ariya Hidayat • phantomjs.org / github.com/ariya/phantomjs
  7. CasperJS • Ferramenta que provê recursos de navegação e testes

    para o PhantomJS (WebKit) e SlimerJS(Gecko) • Criado por Nicolas Perriault • casperjs.org / github.com/n1k0/casperjs
  8. Como o PhantomCSS funciona? • Pega screenshots capturados pelo CasperJS

    • Compara esses screenshots com uma baseline de imagens, usando o Resemble.js • Caso ocorra algum erro, gera imagens com o diff entre as comparadas
  9. Boas práticas • Nomeie seus screenshots • Evite usar seletores

    CSS3 muito complexos • Não use o PhantomCSS para substituir testes funcionais • Cuidado com screenshots da tela inteira, teste componentes da UI de forma individual • Cuidado com dados dinâmicos ➡ hideSelector ➡ mismatchTolerance
  10. Descrição do Case • Aplicação Web com design responsivo (Bootstrap)

    • Primeira release • 8 telas • 6 resoluções usadas para teste (6+ segundo W3C) • Screenshots da tela inteira (desculpa!) • 6 x 8 = 48 screenshots
  11. Hands-on • Setup e página de exemplo • Rodando o

    primeiro teste para gerar screenshots • Alterando o CSS e vendo o teste falhar • Vendo as imagens de diff • Projeto de exemplo no GitHub • PhantomCSS + Jenkins + ChuckNorris Plugin