Concrete Logo
Hamburger button

(2+2) Integração Continua com .NET (fazendo na mão) – Parte 3 de 3

  • Blog
  • 22 de Maio de 2013
Share

“People say, ‘I’m going to sleep now,’ as if it were nothing. But it’s really a bizarre activity. ‘For the next several hours, while the sun is gone, I’m going to become unconscious, temporarily losing command over everything I know and understand. When the sun returns, I will resume my life.’
If you didn’t know what sleep was, and you had only seen it in a science fiction movie, you would think it was weird and tell all your friends about the movie you’d seen.
They had these people, you know? And they would walk around all day and be OK? And then, once a day, usually after dark, they would lie down on these special platforms and become unconscious. They would stop functioning almost completely, except deep in their minds they would have adventures and experiences that were completely impossible in real life. As they lay there, completely vulnerable to their enemies, their only movements were to occasionally shift from one position to another; or, if one of the ‘mind adventures’ got too real, they would sit up and scream and be glad they weren’t unconscious anymore. Then they would drink a lot of coffee.’
So, next time you see someone sleeping, make believe you’re in a science fiction movie. And whisper, ‘The creature is regenerating itself.”

George Carlin

Este artigo é a continuação de: (2+2) Integração Continua com .NET (fazendo na mão) – Parte 2 de 3

Entre o seu ambiente LOCAL e o ambiente em DEV há uma grande diferença. O ambiente de DEV será o seu primeiro ambiente integrado. Neste ambiente o código de todos os desenvolvedores do projeto deve ser integrado. E esta integração de códigos dará subsídios à confiança dos desenvolvedores de que o sistema no seu todo funciona. Ou seja, 100% pronto.

A partir deste 1o ambiente integrado, a automatização de testes que atravessam camadas da aplicação se tornam mais importantes. Vou escrever principalmente sobre testes funcionais de aplicações web. Em particular, usando o Selenium.

Para começar, quando falamos de testes funcionais, diferentemente dos testes unitários, precisaremos de um servidor para rodar a nossa aplicação.

Felizmente, muita coisa mudou em .NET. Não precisamos mais efetivamente fazer um deployment da aplicação no IIS para rodá-la.

Na instalação do Visual Studio você recebe junto uma evolução do Cassini que você pode usar para rodar sua aplicação. Você também pode tentar usar o próprio Cassini (eu não segui por esse caminho).

Normalmente este servidor de aplicações auxiliar será encontrado em:Program Files/Common Files/microsoft shared/DevServer/9.0/WebDev.WebServer.EXE.Dependendo, é claro, da versão do VS que você está usando.

Antes de rodar os seus testes funcionais será necessário rodar os seus N deployments no servidor de aplicações. Para cada “aplicação” que houver, será necessário incluir uma chamada para executar o WebDev.WebServer.exe que deve rodar em background.

RunCassini

No caso da imagem acima, estou rodando o servidor em background utilizando a shell bash do CygWin. É possível fazer o mesmo com um comando windows usando start /b.

Após rodar os testes será necessário desligar estes servidores. Para isso, é muito útil o plugin Post Build Task. Também é possível fazer o mesmo com outro Job rodando na sequência do seu, mas acredito que o uso do plugin deixe o seu projeto mais fácil de gerenciar.

Matar os processos pode não ser tão elegante, mas é bastante eficaz e o Jenkins estará sempre pronto para rodar novamente.

TaskKill

Com o servidor de aplicação sendo iniciado e interrompido só nos falta programar os testes com o Selenium. Isso, por si, já é fonte para vários posts, mas vamos dar uma olhada rápida.

Não esqueça de modificar o conjunto de testes excluídos.

MudancaExclude

Este é um exemplo de código para inicializar os seus testes funcionais com o WebDriver do Internet Explorer.

No código acima, o executável do WebDriver correspondente ao Browser que você quiser usar deverá ser colocado na pasta configurada no config do projeto na seção <appSettings>, como <add key="IE_DRIVER_PATH " value="c:\meuprojeto\selenium\bin"/>.

O código do seu teste deve ficar parecido com o seguinte:

Estes 3 posts são apenas o começo, mas espero que sejam o suficiente para que quem está com um projeto no VS2008 inicie o uso fundamental da Integração Contínua. Sempre há um caminho para o 100% pronto, sempre há um jeito de se construir a sua CI.