Selenium IDE
Cá estava eu desenvolvendo um formulário de tamanho relativamente grande quando me veio um estalo: “Acho que tem jeito de automatizar isso.”. Lembrava vagamente de uma ou outra palestra sobre testes que falavam sobre gravar as ações do usuário para fazer testes. Depois de realizar umas consultas no https://addons.mozilla.org/en-US/firefox encontrei a Selenium IDE, uma grata surpresa. Vou descrever a minha rápida experiência, baseada em testes de formulários. É óbvio que dá pra testar qualquer coisa.
É tudo muito simples, você clica no botão vermelho pra começar a gravar, vai preenchendo o formulário e, para cada ação importante, a Selenium vai adicionando um comando no seu caso de testes. Por fim, após clicar no submit do form, você clica no botão vermelho da selenium de novo e voilà, seu caso de testes está pronto.
É claro que nem tudo são flores. Para que o seu caso de testes funcione assim de cara, o seu formulário tem que ser estático. Se o formulário for dinâmico, com requisições Ajax, por exemplo, como era o meu caso, você precisa fazer alguns ajustes no seu caso de testes, mas isso também é muito simples.
Um exemplo de erro: no meu formulário existe um campo de busca em que uma dialog é aberta com os resultados a serem selecionados. A Selenium apenas grava as ações importantes, lembram? Ela não sabe se o botão clicado foi gerado via Ajax ou coisas do tipo e vai tentar executar aquele comando. No meu caso aconteceu de a dialog não ter sido carregada ainda e dava pau. Como resolver? Simples: adicione um comando antes do comando de clique na dialog. Para isto, basta clicar no comando que deu erro com o botão direito do mouse e selecionar “Insert New Command”. Qual comando selecionar? Eu usei o ‘waitForElementPresent‘, que vai fazer a Selenium esperar até que a minha dialog seja carregada para continuar a execução dos seus comandos. Selecionado o tipo de comando, você precisa especificar o elemento (campo Target) pelo qual devemos esperar a geração, basta copiar o identificador gerado pela Selenium (olhar no comando que deu erro, logo abaixo). No final, o seu caso de testes vai ficar tipo o abaixo:
No exemplo da figura, o elemento fastAddCheckboxes é carregado via Ajax e eu usei o comando waitForElementPresent para fazer a Selenium esperar o seu carregamento, easy!
Caso você não encontre um comando que te ajude na automatização dos testes, existe também a opção de adicionar breakpoints na execução do seu caso de testes. Basta selecionar o comando e pressionar ‘b’. No meu caso, por exemplo, o Selenium, por algum motivo, não gravou o preenchimento de três campos. Eu adicionei um breakpoint no comando de submit do formulário e, na hora do teste, eu preencho os campos na mão e só então continuo o teste. É claro que esta é apenas uma medida paliativa que você pode usar na pressa. O ideal é ter testes 100% automatizados e tenho quase certeza de que dá pra resolver o meu problema usando os comandos da Selenium.
Este post serviu apenas pra compartilhar essa nova ferramenta que eu só fui descobrir agora. Mostrei apenas dois “artifícios” que podem ser usados para que os seus testes funcionem em contextos não tão simples. O Selenium tem vários outros comandos e várias outras opções. Conforme eu for aprendendo mais eu compartilho aqui no blog. Até a próxima.
October 27, 2009 No Comments





