Testes de Regressão Automáticos com Selenium

Como os testes de regressão geralmente são executados após a correção de algum defeito ou após a adição de uma nova funcionalidade. Então, é comum que não sobre muito tempo para realizar os testes de regressão. Neste caso, utilizar alguma ferramenta para re-executar os testes seria ideal para minimizar o tempo para identificar se os defeitos foram corrigidos e também se novos defeitos não foram inseridos durante a correção.

Assim, existe algumas ferramentas que viabilizam a automação de testes funcionais para aplicações Web, por exemplo, Selenium, Watir, BadBoy etc. Estas ferramentas se comportam como um robô que à medida que o testador executa os testes pela primeira vez, a ferramenta vai guardando todos os eventos acionados na ferramenta, por exemplo, clicar em um botão, inserir informações em um campo, etc.

No entanto, apenas ir guardando os eventos não é suficiente, pois como um caso de teste possui o campo "Resultado Esperado", então é necessário indicar para a ferramenta o que é esperado após a execução de um conjunto de eventos ou ações. As ferramentas que automatizam os testes, a exemplo de Selenium, permitem adicionar assertivas que garantem que o sistema está se comportando conforme é esperado em cada execução.

Exemplo de verificações presentes na ferramenta
Selenium são:
  1. verifyTextPresent | login (quando você quer identificar a presença de algum texto da página.)
  2. verifyElementPresent | \\div[@id="main"] (quando você quer identificar a presença de um elemento "html" dentro daquela página.)

O verify do tipo "1" nem sempre é recomendada, pois em uma futura atualização da página pode acontecer daquele nome "login" ser alterado para "usuário". Neste caso, o teste iria falhar indevidamente.

O verify do tipo "2" é mais indicado, pois com ele é possível identificar um elemento "html" independente da alteração da ordem ou nome dos campos, pois o teste será sempre baseado no "id" daquele elemento. A notação utilizada para identificar os elementos pode ser através da linguagem XPath (http://www.w3schools.com/xpath/default.asp) ou Expressões Regulares (http://www.regular-expressions.info - bastante utilizada para verificar a máscara de um campo).

Como sugestão de uma ferramenta para automatizar os testes de regressão eu aconselho a ferramenta Selenium IDE, pois ela possui um plugin para o firefox, que auxilia na criação dos casos de teste.

Na tabela abaixo há um exemplo de um caso de teste criado usando a ferramenta Selenium, que contém a validação de um campo e-mail.

EmailInvalido
open /page
select pessoa_datanascimento_3i label=1
select pessoa_datanascimento_2i label=Junho
select pessoa_datanascimento_1i label=1998
clickAndWait pessoa_submit
verifyElementPresent //div[@class="span-11 colborder"]/h1[contains(text(), "Inscrições já Realizadas")]
clickAndWait link=Alterar Dados Pessoais
clickAndWait link=Editar meus dados pessoais
type pessoa_nome Roberto Soares
type pessoa_identidade 1224564
click pessoa_sexo_m
clickAndWait pessoa_submit
clickAndWait link=Editar meu endereço
type endereco_logradouro Rua Campos Bis
type endereco_cep 12345-678
type endereco_cidade Paulina
type endereco_bairro Almeida Lima
type endereco_email oi
clickAndWait endereco_submit
verifyTextPresent Email não é válido
verifyNotValue //*[@id="endereco_email"] regexp:^([a-zA-Z0-9_\-\+\.]+)@(([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d))$
type endereco_email email@
clickAndWait endereco_submit
verifyTextPresent Email não é válido.