{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}
20/10/2010
Neste post mostrarei a utilização dos testes automatizados de interface, ou testes de integração, de forma mais programática.Utilizaremos código C# para a criação de nossos testes com Selenium RC, desta forma poderemos colocar os testes de interface em nossa solution e executá-los com nosso teste runner preferido, integrá-los às nossas build tasks, etc.
Continuaremos utilizando o projeto ASP.NET MVC do post anterior, que pode ser conferido aqui.
Vamos utilizar o teste que tínhamos salvo com o Selenium IDE para criar o nosso teste em C# (veja o post anterior). Isso é bastante trivial, basta utilizarmos o menu Options >> Format >> C#:
Com isso teremos o seguinte código utilizando o Selenium RC:
Podemos reparar que o código que utiliza o Selenium RC foi gerado e é possível copiarmos o mesmo. Uma outra opção é exportarmos estes testes para um arquivo .cs:
Feito isso, salve e adicione o arquivo a um projeto de testes em nossa solution.
Precisamos adicionar a referência para a DLL do Selenium RC ao nosso projeto de testes. Basta adicionar a DLL que foi baixada anteriormente (caso você não saiba como, veja aqui neste post, na parte do Selenium RC).
Podemos reparar que o código gerado utiliza o NUnit para rodar os testes. Para adicionar a referência do NUnit eu vou utilizar o NuPack, é claro! (Infelizmente o Selenium ainda não está disponível =/ )
Feito isso já podemos executar os nossos testes. Eu utilizo o test runner do R#, mas o runner do NUnit vai funcionar da mesma forma.
Como podemos reparar nosso teste falhou, e a mensagem de erro nos diz que não foi possível conectar ao servidor. Isso quer dizer que precisamos iniciar o Selenium Server.
O Selenium Server vem junto com o Selenium RC. Como mostrado no post anterior (veja aqui), vamos executar nosso bat para iniciar o Selenium Server.Feito isso podemos rodar nossos testes novamente:
Caso você obtenha um erro pedindo para adicionar o Firefox 3 ao Path, faça isso.O Selenium por padrão inicia o Firefox utilizando o chrome launcher. E se não encontra o firefox retorna este erro.Você pode especificar um browser de sua escolha alterando a linha abaixo:
selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://localhost:1115");
para
selenium = new DefaultSelenium("localhost", 4444, "*custom C:\Program Files (x86)\Mozila Firefox\firefox.exe", "http://localhost:1115");
Isto funcionará para qualquer browser que você tenha, e que o Selenium RC suporte.No trunk do Selenium Server podemos ver uma lista dos browsers suportados:- firefoxproxy - firefox - chrome - firefoxchrome - firefox2 - firefox3 - iexploreproxy - safari - safariproxy - iehta - iexplore - opera - piiexplore - pifirefox - konqueror - mock - googlechrome
Desta forma vimos como executar nossos testes utilizando Selenium RC e Selenium Server. Ainda estamos com uma parte manual em nossos testes que é iniciar o Selenium Server. Veremos como resolver isso em um próximo post.Com a utilização do Selenium RC, e o conhecimento da API, os comandos e métodos disponíveis, a escrita dos testes começa a ficar mais simples. Podemos "abandonar" o Selenium IDE e passar a escrever os testes já através do nosso projeto .NET. É apenas uma questão de obter alguma fluência na tecnologia.É importante lembrar que testes de interface são frágeis. Talvez demore um pouco para entender os pormenores, compreender os detalhes e os pontos de fragilidade, e começar a escrever bons testes. Mas é para isso que somos pagos: escrever bons softwares, que são possíveis passando por bons testes.É isso galera, tão logo eu experimente mais do Selenium colocarei mais novidades aqui. Se tudo der certo o próximo post será sobre o Selenium Grid.
Abraços, Vinicius Quaiato.