Programa de Mestrado em Ciência da Computação
IN1149 – Qualidade, Processos e Gestão
Ambiente para Integração Contínua
Rafael Vanderlei de Souza
[email protected]
06/12/2008
Universidade Federal
de Pernambuco
Agenda





Introdução
Ambiente de CI
Prática
Conclusões
Referências
Universidade Federal
de Pernambuco
2
Introdução
Universidade Federal
de Pernambuco
3
Definição
“Integração contínua é uma prática de desenvolvimento
de software onde os membros de uma equipe integram
seu trabalho freqüentemente (pelo menos uma vez por
dia). Cada integração passa por um processo de build
automatizado (incluindo testes) para detectar erros de
integração o mais cedo possível.”
Martin Fowler.
Universidade Federal
de Pernambuco
4
Objetivos

Aumentar a qualidade do software
◦ Testes automatizados
◦ Inspeção automatizada

Reduzir riscos do projeto
◦
◦
◦
◦

Ter sempre um executável
Descobrir e corrigir erros rapidamente
Automatizar processos repetitivos e sujeitos a erros
Ter visibilidade do projeto facilmente
Tornar a integração um “nonevent”
◦ Dedicar o tempo para tarefas mais importantes
Universidade Federal
de Pernambuco
5
Objetivos
Se integrar fosse tão simples assim...
Universidade Federal
de Pernambuco
6
Visão Geral
A mágica por trás do botão Integrate...
Universidade Federal
de Pernambuco
7
Visão Geral
Processo típico de CI...
Universidade Federal
de Pernambuco
8
Ferramentas

Servidores de CI:
◦ Cruise Control, Apache Continuum, LuntBuild, Hudson, Bamboo,
Pulse, Gauntlet

Build:
◦ Maven, Ant, NAnt, Rake

Controle de Versão
◦ Subversion, CVS, ClearCase, VSS, StarTeam

Banco de dados
◦ Oracle, SQL Server, PostgreSQL, MySQL, HSQLDB

Teste
◦ JUnit, NUnit, DbUnit, HtmlUnit, Selenium, TestNG

Inspeção
◦ Checkstyle, FindBugs, PMD, Cobertura, EMMA, FxCop

Feedback
◦ Ambient Device, Jabber, Gtalk, Email, SMS
Universidade Federal
de Pernambuco
9
Ambiente de CI
Universidade Federal
de Pernambuco
10
Subversion

Sistema de controle de versão projetado para
resolver problemas existentes no CVS, como:
◦ Falta de versionamento de diretórios;
◦ Commits atômicos;
◦ Entre outros.

Neste ambiente, o SVN será o repositório de
código que será observado pelo servidor de
Integração Contínua.
◦ Sempre que houver uma mudança neste repositório,
o servidor de CI irá gerar um novo build.
Universidade Federal
de Pernambuco
11
JUnit



Framework para
repetitíveis.
escrever
testes
unitários
Instância em Java da arquitetura xUnit para
frameworks de testes unitários.
Neste ambiente, usaremos JUnit para escrever,
executar e reportar os resultados de testes
unitários.
Universidade Federal
de Pernambuco
12
Cobertura


Ferramenta que executa uma análise estática
do código Java em busca de trechos de código
que não estão sendo testados.
Neste ambiente, o Cobertura será utilizado
para reportar os percentuais de código
testado, buscando melhorar a qualidade dos
testes escritos.
Universidade Federal
de Pernambuco
13
FindBugs

Ferramenta que executa uma análise estática
do código Java em busca de potenciais
problemas críticos, como:
◦ Ocorrência garantida de NullPointerException;
◦ Possível divisão por zero;
◦ Possível loop infinito.

Neste ambiente, o FindBugs será utilizado
para reportar possíveis erros que podem não
ter sido detectados durante a execução de
testes unitários.
Universidade Federal
de Pernambuco
14
PMD

Ferramenta que executa uma análise estática
do código Java em busca de problemas
menores, como:
◦ Variáveis locais, atributos e métodos não utilizados;
◦ Expressões muito complicadas, como ifs e loops
aninhados;
◦ Duplicação de código.

Neste ambiente, o PMD será utilizado para
reportar ocorrências como as anteriores,
visando o aumento da qualidade do código.
Universidade Federal
de Pernambuco
15
Maven



Ferramenta de compreensão e gerenciamento
de projetos.
Gerencia dependências, geração de build e
criação de relatórios e de documentação sobre
o projeto.
Neste ambiente, toda a configuração para a
geração do build está centralizada no Maven .
Universidade Federal
de Pernambuco
16
Hudson

Servidor de Integração Contínua que vêm
sendo mais utilizado recentemente.
Fonte: http://www.wakaleo.com/polls/18-what-continuous-integration-server-are-you-using-in-2008
Universidade Federal
de Pernambuco
17
Hudson


Monitora a execução de tarefas repetíveis,
como geração de build.
Permite
agendar
para
gerar
builds
periodicamente ou apenas quando houver
mudanças no repositório.

Permite fornecer feedback através de RSS,
Email ou Instant Messaging

Possui gráficos que facilitam a visualização do
status do projeto.
Universidade Federal
de Pernambuco
18
Prática...
Universidade Federal
de Pernambuco
19
Prática
Universidade Federal
de Pernambuco
20
Prática
Universidade Federal
de Pernambuco
21
Prática
Universidade Federal
de Pernambuco
22
Prática
Universidade Federal
de Pernambuco
23
Prática
Universidade Federal
de Pernambuco
24
Prática
Universidade Federal
de Pernambuco
25
Prática
Universidade Federal
de Pernambuco
26
Prática
Universidade Federal
de Pernambuco
27
Prática
Universidade Federal
de Pernambuco
28
Prática
Universidade Federal
de Pernambuco
29
Prática
Universidade Federal
de Pernambuco
30
Prática
Universidade Federal
de Pernambuco
31
Prática
Universidade Federal
de Pernambuco
32
Prática
Universidade Federal
de Pernambuco
33
Prática
Universidade Federal
de Pernambuco
34
Conclusões
Universidade Federal
de Pernambuco
35
Conclusões



Com um ambiente de Integração Contínua,
podemos deixar de nos preocuparmos com a
geração manual de build.
Reduzimos os recursos que antes estavam
alocados para realizar tarefas manuais e
repetitivas.
Reduzimos os riscos associados à execução
de tarefas repetitivas e sujeitas as erros.
Universidade Federal
de Pernambuco
36
Conclusões


Aumentamos a qualidade do produto,
utilizando ferramentas que automatizaram a
execução de testes e a inspeção de código.
Reduzimos o tempo decorrido entre a
detecção e a correção de falhas, com o rápido
feedback gerado após a ocorrência de uma
falha.
Universidade Federal
de Pernambuco
37
Referências
Universidade Federal
de Pernambuco
38
Referências

Fowler, Martin. Continuous Integration.
◦ Disponível em http://martinfowler.com/articles/continuousIntegration.html .
◦ Último acesso em 30 de novembro de 2008.



Duvall, Paul. Continuous Integration – Improving
Software Quality and Reducing Risk. Addison-Wesley,
2007.
Integração Contínua. Rafael Vanderlei – Apresentação
de Seminário da disciplina de Qualidade do Mestrado
no Cin/UFPE, 2008.2.
Hudson Home
◦ Disponível em https://hudson.dev.java.net/ .
◦ Último acesso em 30 de novembro de 2008.
Universidade Federal
de Pernambuco
39
Referências

Subversion Home
◦ Disponível em http://subversion.tigris.org.
◦ Último acesso em 30 de novembro de 2008.

Maven Home
◦ Disponível em http://maven.apache.org/ .
◦ Último acesso em 30 de novembro de 2008.

Findbugs Home
◦ Disponível em http://findbugs.sourceforge.net/.
◦ Último acesso em 30 de novembro de 2008.

PMD Home
◦ Disponível em http://pmd.sourceforge.net/.
◦ Último acesso em 30 de novembro de 2008.
Universidade Federal
de Pernambuco
40
Referências

JUnit Home
◦ Disponível em http://www.junit.org/.
◦ Último acesso em 30 de novembro de 2008.

Cobertura Home
◦ Disponível em http://cobertura.sourceforge.net/.
◦ Último acesso em 30 de novembro de 2008.

Jabber Home
◦ Disponível em http://www.jabber.org/.
◦ Último acesso em 30 de novembro de 2008.
Universidade Federal
de Pernambuco
41
Programa de Mestrado em Ciência da Computação
IN1149 – Qualidade, Processos e Gestão
Ambiente para Integração Contínua
Obrigado!
Rafael Vanderlei de Souza
[email protected]
Universidade Federal
de Pernambuco
Download

Integracao_Continua - Universidade Federal de Pernambuco