Esse artigo faz parte da revista Engenharia de Software 21 edição especial. Clique aqui para ler todos os artigos desta edição



Projeto

Integração contínua com Hudson, Maven2, TestNG e Subversion

De que trata o artigo:

Montagem de um ambiente de integração contínua utilizando um conjunto de ferramentas para este fim.

Para que serve:

O ambiente de integração contínua proposto mantém o código fonte do repositório sempre testado, aumentando sua confiabilidade, além de diminuir a alocação de recursos humanos em atividades de teste.

Em que situação o tema é útil:

Em ambientes em que é preciso manter um repositório com código fonte confiável e em sistemas em que os testes atingiram uma complexidade relevante e estão consumindo recursos humanos em excesso ao serem executados.

 

Devido à crescente demanda por softwares cada vez mais complexos e de maior qualidade, várias técnicas vêm sendo propostas para auxiliar na sua construção. Uma dessas técnicas é o teste de unidade que tem como principal finalidade a busca por defeitos na menor unidade de um sistema como um método ou função, por exemplo.

Porém, em um sistema com uma complexidade relevante, os testes de unidade podem consumir um tempo excessivo da equipe cada vez que uma alteração no sistema seja necessária e os testes tenham que ser executados.

É neste contexto que se pode tirar proveito da integração contínua, onde um servidor faz periodicamente o checkout do código fonte do repositório e executa automaticamente os testes já criados.

Com isto, ao subir um código para o repositório não é necessário que todos os testes do sistema sejam executados. Pode ser definida uma estratégia onde o responsável por enviar o código para o repositório execute apenas os testes diretamente relacionados com a alteração realizada, diminuindo o tempo gasto com a execução dos testes.

Além disto, a execução periódica dos testes ajuda a manter a confiabilidade do código fonte que está no repositório.

Este artigo tem por finalidade demonstrar a configuração de um ambiente de integração contínua utilizando um servidor de integração contínua chamado Hudson, em um repositório controlado pelo Subversion, e um projeto criado no Eclipse utilizando o Maven2 através do plug-in Maven2Eclipse e o framework de testes TestNG.

Criando o repositório

O primeiro passo para iniciar a construção do ambiente é baixar e instalar o Subversion. Será utilizado o VisualSVN que é um servidor do Subversion que disponibiliza uma interface gráfica para configuração e que pode ser baixado no endereço http://www.visualsvn.com/.

A instalação do VisualSVN é bastante simples, basta executar o arquivo de instalação baixado e seguir os passos mantendo sempre as configurações padrões sugeridas pelo instalador.

Depois de instalado e executado, o VisualSVN apresenta uma tela semelhante à Figura 1.

 


Figura 1. Configuração VisualSVN

 

Neste momento é preciso configurar os usuários e grupos de usuários que terão acesso ao repositório. Como exemplo, será criado apenas um usuário chamado “devmedia” que pode ser incluído clicando com o botão direito sobre a opção Users, selecionando a opção New User e definindo um login e senha para este usuário.

Depois de criar o usuário, será criado um repositório chamado CalcularAprovacao. Para isso, clique com o botão direito sobre a opção Repositories e selecione a opção Create New Repository. Uma caixa de texto será aberta onde deve ser digitado CalcularAprovacao no nome do repositório.

Note que a URL do Subversion pode ser vista na tela inicial do VisualSVN no campo Server URL is. Posteriormente essa URL será necessária para configurar o servidor de integração e o Eclipse.

Feito isto, as configurações necessárias no repositório estão prontas.

Configurando o Eclipse

Para facilitar a criação do ambiente, primeiro será instalado um plug-in chamado Subclipse que permite a comunicação entre o Eclipse e o repositório. Para isto, abra o eclipse e acesse o menu Help / Install New Software. Uma janela será apresentada onde o endereço http://subclipse.tigris.org/update_1.6.x deve ser digitado no campo Work with e, em seguida, deve-se acessar a opção Add. Ao acessá-la, algumas opções irão aparecer no campo Name desta janela, onde devem ser marcadas as opções Core SVNKit Library, Optional JNA Library e Subclipse, como pode ser visto na Figura 2 e, logo em seguida, deve-se selecionar a opção Next até que a instalação seja concluída.

 


Figura 2. Instalação do Subclipse

 

Neste momento o plug-in Subclipse está instalado e deve-se agora instalar o plug-in Maven2Eclipse. Para isso, siga o mesmo procedimento, porém, utilizando o endereço http://m2eclipse.sonatype.org/update/ e selecionando apenas a opção Maven Integration no campo Name.

Com isto, o Eclipse já está com todos os plug-ins que precisamos para começar a criar o projeto de exemplo e se integrar com o Hudson.

Criando o projeto de teste

Para criar o projeto de exemplo utilizaremos o Maven2 através do plug-in Maven2Eclipse, instalado anteriormente. O Maven é um projeto da Apache que tem por finalidade o gerenciamento de projetos. Ele trabalha com o conceito de convenção, ou seja, permite a compilação e a distribuição de uma aplicação com um mínimo de configuração, desde que o projeto respeite a estrutura proposta, e ainda gerencia as dependências do projeto.

Para iniciar a construção do projeto, acesse o menu File / New / Other. Uma janela será apresentada onde a opção Maven / Maven Project deve ser escolhida. Após isto, uma nova janela é apresentada onde a opção Create a simple project deve ser marcada e, logo em seguida, deve ser selecionada a opção Next. Feito isso, outra janela, semelhante à Figura 3, é apresentada, onde devem ser digitados alguns dados do projeto:

·         Goup Id: é o identificador exclusivo do grupo ou organização que criou o projeto. No projeto de exemplo será digitado br.com.calcularAprovacao neste campo.

·         Artifact Id: indica um nome único para o projeto, deve ser digitado CalcularAprovacao neste campo.

·         Version: é a versão do artefato gerado pelo projeto, deixaremos esta opção como padrão.

·         Packaging: é o tipo de artefato que será gerado pelo projeto, por exemplo, JAR, WAR, EAR. Para o exemplo será gerado um artefato do tipo JAR.

·         Name: é o nome que será visualizado nos relatórios que podem ser gerados pelo Maven. Neste campo será digitado CalcularAprovacao.

·         Description: neste campo pode ser digitada uma breve descrição sobre o projeto.

 


Figura 3. Criação de um projeto Maven2

 

Após preencher os dados do projeto, clique sobre o botão Finish que o Maven irá criar o projeto utilizando sua estrutura padrão.

Depois de criar o projeto, deve ser adicionada a dependência do TestNG, que é o framework de testes que será utilizado. Clique com o botão direito sobre o projeto e selecione o menu Maven / Add Dependency. Uma janela será apresentada onde se deve digitar TestNG no campo Enter groupId, artifactId or sha1 prefix or pattern. Com isto, o Maven busca em seu repositório online as dependências com o nome TestNG. Selecione a opção org.testng testng e clique sobre o botão Ok. Feito isto, o Maven2Eclipse adiciona algumas linhas no arquivo de configuração do Maven (chamado pom.xml) e irá baixar as dependências necessárias para que o TestNG funcione.

Apesar do Maven2Eclipse facilitar bastante a configuração do Maven, uma configuração manual deve ser adicionada no arquivo pom.xml. A tag <build> e suas sub-tags devem ser adicionadas indicando que o código do projeto deve ser compilado para versão 1.6 do Java. Com isto, o arquivo pom.xml deve ficar semelhante ao mostrado na Listagem 1.

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

         < ...

Quer ler esse conteúdo completo? Tenha acesso completo