Vinicius Quaiato

{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}

Testes de interfaces com Selenium em .NET parte III


Automation

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.

O projeto ASP.NET MVC

Continuaremos utilizando o projeto ASP.NET MVC do post anterior, que pode ser conferido aqui.

Criar o código C# usando o Selenium IDE

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#:Convertando teste case Selenium em código teste C#

Com isso teremos o seguinte código utilizando o Selenium RC:Codigo csharp gerado para 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:Exportando testsuite para arquivo csharp com Selenium RC

Feito isso, salve e adicione o arquivo a um projeto de testes em nossa solution.

Adicionando referências ao Selenium RC no projeto

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).Adicionando referencia para o 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 =/ )Adicionando referencia NUnit usando NuPack

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.Executando testes com Selenium RC

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.

Iniciando o Selenium Server e rodando os testes

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:Executando testes com Selenium RC e Selenium Server

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

Em resumo

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.

Voltar

Fork me on GitHub