quarta-feira, 23 de julho de 2008

Selenium IDE

Selenium IDE é uma ferramenta de testes para desenvolvedores testarem suas aplicações. Você pode criar, editar e debugar seus testes. Atualmente estamos implementando testes no novo site da Officer utilizando o Selenium. Temos inúmeros comandos para trabalhar com variáveis, navegar através do site e asserts para validar informações. Além disso é possível criar qualquer comando javascript dentro da sua rotina de testes.
Mais informações e documentação é possível encontrar em http://www.openqa.org/.
Então, vou exemplificar abaixo um exemplo básico de teste no site do UOL. A sequência básica será:
  • Entrar no site www.uol.com.br
  • Clicar no link de economia
  • Validar se estamos no link correto.
  • Verificar se o índice da bolsa de valores está positivo.
Vou explicar comando a comando o que foi feito no Selenium.
  • Um comando “open” com o alvo “http://www.uol.com.br/” para redirecionar para o endereço que desejamos acessar.
  • O comando “clickAndWait” para o sub-site de economia do UOL. (Para gerar esse comando basta deixar o botão vermelho no canto direito superior clicado. Dessa forma toda ação que você fizer é gravada como um comando no Selenium IDE)
  • O comando “assertLocation” com o alvo http://economia.uol.com.br/ que verifica se o site foi redirecionado corretamente.
  • O comando “storeText” com um alvo “//div[@id='bovespa']/div/table/tbody/tr/td[1]/span” (para fazer isso basta clicar com o botão direito do mouse na área que você deseja salvar e clicar em “storeText”). No campo valor coloquei o nome de uma variável “vIndiceBovespa”. Agora temos o índice atual da Bovespa guardado na variável “vIndiceBovespa”.
  • O próximo comando utilizo para trabalhar com javascript. Inserimos o comando “storeEval” e no alvo o javascipt “javascript: storedVars["vIndiceBovespa"] = storedVars["vIndiceBovespa"].replace('%','').replace(',','.');”.Esse javascript retira a porcentagem e substitui a vírgula por ponto.
  • O próximo comando cria uma nova variável “vIndiceBovespa” que diz se o valor é positivo (1) ou negativo (0). Para isso criamos o mesmo comando “storeEval” com o alvo = “javascript: if(storedVars["vIndiceBovespa"] > 0) storedVars["bIndiceBovespa"] = 1; else storedVars["bIndiceBovespa"] = 0;”.
  • O último comando testa se o valor da bolsa é positivo, ou seja, se a variável “bIndiceBovespa” é igual a 1.Utilizamos o comando assertEval, no alvo temos o valor “storedVars["bIndiceBovespa"]” e no campo valor “1”.
Quando executarmos o teste, caso o valor seja positivo, ele exibira as linhas em verde. Qualquer erro que aconteça em algum comando, ele exibira a linha em vermelho e uma mensagem de erro.
Esse é apenas um exemplo bem simples do que podemos fazer com o Selenium IDE, mas a ferramenta é bem mais poderosa. Depois que você aprende a utilizar a ferramenta, percebe que existem alguns bugs, e nada como fechar e abrir a ferramenta novamente para ela funcionar. Com certeza muitos bugs já foram postados e novas versões virão corrigidas e com muitas melhorias.

Um pequeno “pattern” que criamos para o Selenium segue uma metodologia simples.
Nosso desafio: Criar testes para validar todas as áreas do novo site da empresa.
Discussão: No site da Officer temos que testar módulos como: Administração de usuário, Proposta, Busca de produtos, Cálculo de Frete, Fechamento de Pedido,Status do Pedido, Comissão, etc.
Se baseando em casos de uso, imaginamos que existem pré-requisitos padrões para muitos destes módulos, como por exemplo, estar logado no site.
Tudo que é igual deve ser encapsulado, logo, criamos um único teste que faz o login no site. Mas temos vários tipos de usuários que podem ser logar no site. Como faremos nesse caso?
Criamos um teste que apenas inicializa as variáveis. Sendo assim, temos um teste “usuario1” e um teste “usuario2” que inicializam as variáveis “vLogin” e “vSenha”.
No teste “efetuarLogin” temos apenas a navegação que vai digitar a variável “vLogin” e “vSenha” nos campos de login e senha respectivamente.
Para logar com outros usuários, basta duplicar os arquivos “usuario1” e alterar as variáveis. Caso a navegação seja alterada, basta alterar o arquivo “efetuarLogin”

Agora, para todos os testes que necessitem de login e senha, podemos criar uma “TEST SUITE” que chama os testes necessário. Para criar um teste que efetua o pedido no site teremos que chamar vários testes que vão criar variáveis e testes que vão navegar pelo site.
Dessa forma podemos abranger muito mais os testes necessários com o Selenium IDE.

Obrigado façam seus comentários.