quarta-feira, 5 de maio de 2010

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.


8 comentários:

Elias Nogueira disse...

Olá!
Primeiro parabéns pelo blog!!! :)

Os comandos verify* não são assertivas propriamente ditas, elas apenas 'verificam' algo dentro da página. O ideal para assertivas é utilizar os comandos assert*.

Existe uma pequena diferença entre eles: os comandos assert* farão com que os testes sejam abortados quando não satisfeitos. Já os comandos verify* não irão abortar a execução, apenas a falha de verificação de algum dado ou elemento.

http://seleniumhq.org/docs/04_selenese_commands.html#assertion-or-verification

Sobre a "assertiva do tipo 2", se ocorrer uma mudança no nome do campo o script provavelmente falhará se a utilização do xPath estiver com a localização por @id, @name ou @value, pois a referência para eles são justamento o id do elemento, ou nome do elemento ou valor do elemento

Abração!

José Nilton disse...

Oi Anne, em primeiro lugar, parabéns pelo blog, show de bola. Estou entrando agora na área de teste de software, meus conhecimentos ainda são prematuros nessa área, achei seu blog e já li quase todas as postagens, já ajudou bastante, mas gostaria de saber se pode me passar mais algum material que possa ser útil nesse inicio, regras e tal. Estou em uma Software House de medio porte, onde temos como principal sistema um ERP, a empresa não possui um departamento específico pra teste, mas estão pensando na possibilidade de criar um. Como estou entrando agora, quero tomar frente e aprensentar propostas que realmente demonstrem resultado, pois considero a qualidade de um Software fundamental para a sua aceitação no mercado. Talvez esteja sendo um pouco ousado em te pedir isso a principio, mas ficarei grato com sua colaboração.

lourencofilho87@gmail.com

Desde já, obrigado pela atenção.

Ótima semana!

Alisson disse...

boa tarde, adorei o blog, é muito dificil achar informações sobre testes, gostaria de entrar em contato com você via email, segue meu email. alissonfer@gmail.com

Anônimo disse...

Good brief and this mail helped me alot in my college assignement. Gratefulness you as your information.

Marcelo Bomfim disse...

Olá Estou começando um trabalho utilizando selenium ide e webdrive, então gostaria de saber qual o melhor livro a ser indicado?
obs: para iniciantes

Anne Caroline disse...

Marcelo,

Um livro ótimo para iniciantes em automação de teste de software é o livro de Leonardo Molinari - Inovação e automação de testes de software.


Anne Caroline

Marcelo Bomfim disse...

Obrigado anne Caroline vou procurar esse livro. muito bom seu blog!

Estou em projeto final com Automação de teste em selenium ide e webdriver.

A versão do firefox pode fazer diferença na hora do teste?? não sei mas acho que a internet lenta no horario de aula deve atrapalhar?

celodc@yahoo.com.br

Luís Gabriel N. Simas disse...

Anne.

Muito bom o seu conteúdo. Obrigado por sua iniciativa de disseminar conhecimento.

Forte Abraço