segunda-feira, 15 de julho de 2013

Testes automatizados com PhantomJS

O que é?

PhantomJS é uma ótima ferramenta para automatizar testes para sistemas para WEB.


Mas o que ele tem de bom?

Algumas coisas são:

  • Não é necessário um browser para executar os testes, pois ele possui um executável que roda tudo "por de baixo dos panos". Isso acelera todo o processo;
  • Ele gera imagens dos testes realizados. "page.render('example.png');" e ta feito;
  • Site oficial com toda a informação necessária, documentação clara e objetiva com muitos exemplos;
  • É possível executar todos os testes sem qualquer risco de conflito com variáveis e/ou prints em console realizados pela própria página;
  • É possível rastrear todas as requisições e respostas feitas pela página a qualquer momento. (por callback)

Mas porque automatizar os testes, se eu mesmo posso testar?

Na minha humilde opinião, é extremamente necessário automatizar testes. Até porque, testar SQL Injection em todos os formulários de um sistema manualmente, é extremamente cansativo. Claro que esse é um, dos milhares de motivos para automatizar testes, mas se eu for citar tudo, não vou terminar esse "post" tão cedo... #preguiçavéia

Na verdade, acredito que o verdadeiro objetivo de automatizar os testes, é verificar se o sistema está atingindo a expectativa mínima aceitável de alguns requisitos que foram definidos para um projeto, tanto para os requisitos funcionais como para os não funcionais. Um exemplo disso é que os testes podem ser criados até mesmo antes do início do desenvolvimento, para garantir que certos objetivos sejam alcançados durante o desenvolvimento (segurança, qualidade, etc...).

Se você pesquisar um pouco na web, vai descobrir que teste não é "só teste", existem até metodologias para desenvolvimento baseado em testes automatizados, como o TDD(Test Driven Development).

Todavia, não acho que testes manuais devam ser descartados, na verdade, um complementa o outro.

Site oficial:

http://phantomjs.org/

Créditos especiais para Lucas Lazari que me indicou o PhantomJS.

Concorda ou descorda de alguma coisa? Quero saber sua opinião! Comenta ae. =D