quarta-feira, 4 de setembro de 2013

O que é Headless Browser e porque você testador deve saber sobre

O que é Headless Browser

Do início, qualquer browser web tem que ser capaz de fazer três coisas:
  1. Dado um endereço, acessar uma página html
  2. Renderizar o conteúdo em DOM, executar scripts dentro da tag script, e torná-lo disponível na página
  3. Renderizar o DOM em um conteúdo visual
Um browser que somente faz o primeiro item é chamado de "text-based"
Um browser que cobre os três itens são os browsers que conhecemos atualment
Um headless browser cobre os dois primeiros itens

Logo, headless browser um browser web sem uma interface gráfica, ou seja, não conseguimos ver o conteúdo da página na nossa tela, mas este browser consegue executar qualquer ação sobre a URL desejada.


Para que ele serve?

Basicamente para duas coisas: como crawler e como um browser para testes mais rápidos.


Browser para testes mais rápidos?

A crescente utilização de headless browsers é a capacidade de executarmos testes de uma maneira muito mais rápida do que um browser com interface gráfica.
Ele se torna mais rápido por não necessitar carregar alguns conteúdos visuais, como aplicar estilos visuais em elementos e carregamento de imagens.

Eles podem ser utilizados para executar a sua suíte de automação por completo, mas o maior ganho em ter scripts de teste executando em um headless browser é velocidade com que temos um feedback.

Pense em um sistema de Integração Contínua, a cada comportamento (commit, tempo, versão, etc...) um sistema de CI faz todo um processo (compilação, testes unitários e/ou integração, deploy e testes de aceitação). Neste processo um dos últimos (se não o último) são os testes de aceitação (aquele que abre um browser web e executa todas as ações), mas executar estes testes diariamente em um ambiente de CI toma muito tempo para nos dar um feedback que necessitamos.

O que algumas pessoas costumam fazer é separar uma pequena parte dos scripts mais importantes (smoke ou sanity) com ferramentas conhecidas (Selenium, Watir, Robot Framework), mas estes ainda tomam um tempo precioso na execução por abrirem um browser real e executarem uma série de ações.

Outras pessoas, e isso vem se tornando popular, criam ou atualizam scripts para executarem sobre headless browser. Isso nos dá um enorme ganho de execução nestes testes mais importantes e um feedback mais rápido se algum comportamento que será visualizado pelo usuário não estiver ok.


Quais headless browsers podemos utilizar?

Há uma séria de headless browser disponíveis. A grande maioria delas (e as melhores) são inclusive open source. Uma grande parte dela é construida sobre o WebKit e é escrita (tanto o código do browser quanto o script para executar o teste) em JavaScript.
Abaixo vou listar apenas alguns, e mais populares:

Um ponto interessante é que o Selenium/WebDriver pode executar testes em dois dos mais populares headless browsers:


Onde posso ver um exemplo?

Aqui mesmo no SemBugs existe um post de uma apresentação minha no Web Test Meeting sobre como usar o básico do CasperJS.
O vídeo possui um pouco mais de 1h.

Apresentação sobre CasperJS no Test Web Meeting

Observação

Os possíveis termos que você testador pode não conhecer contém links para a sua descrição.
É totalmente recomendado que você leia também cada item com um link ;)

Abraços!

2 comentários:

  1. Matéria muito boa. Já deixei nos meus favoritos para consulta!!
    Obrigado.

    ResponderExcluir
  2. Eu já conhecia esse tipo de browser através do HtmlUnit, mas não sabia que tinha esse nome. Excelente post!

    ResponderExcluir