Integração Contínua com Hudson, Selenium e Sonar
-
Upload
arthur-cesar-oreana -
Category
Technology
-
view
3.713 -
download
4
description
Transcript of Integração Contínua com Hudson, Selenium e Sonar
A Equipe…
Trabalha unida…
Na construção de um software…
Vai para Produção? Pendrive nele!
Super computador de Produção
Experiência dos usuários
Erro no sistema
Algo está errado…
• Integração fica para o último estágio do desenvolvimento
• Testes feitos apenas com o software pronto
• Síndrome “mas funcionou na minha máquina!”
• “Ah, qualidade do software é responsabilidade do time de QA!”
• Riscos são sub-estimados
• Interpretação errada de requisitos
• Incompatibilidade entre interfaces
• Muitos bugs na fase de integração
• Testes demoram demais
• Atraso na entrega
HA!
“Integração Contínua é uma prática de desenvolvimento de software onde os membros de um time integram seu trabalho freqüentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia.
Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível.
Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.
– Martin Fowler
• Controle de versão
• Construção
• Teste
• Inspeção
• Feedback
Controle de versão
• Local centralizado para armazenamento dos arquivos de um projeto, e também controlam as versões desses arquivos.
• Guardar versões é como ter um botão “desfazer” à nossa disposição!
• Quando diversas pessoas trabalham juntas em um projeto, o repositório torna-se o destino final de tudo o que é produzido.
Construção (Build)
• Processo automatizado de construção da aplicação.
• Ferramentas disponíveis para essa etapa:
• ANT• MAVEN• MAKE
Teste
• Unitários: jUnit
• Funcionais: Selenium
• Fitnesse
Inspeção
• Análise estática• PMD• FindBugs
• Duplicação de código• CPD• Simian
• Complexidade/Dependências• Jdepend• JavaNCSS• SourceMonitor
Feedback
• Extremme Feedback é uma maneira de disponibilizarmos as informações sobre o teste em dispositivos que chamem a atenção da equipe de desenvolvimento:
• Letreiros digitais
• Luzes no estilo de um semáforo
• Etc
Servidores de Integração
• CruiseControl
• Continuum
• Hudson
1. Sincronização do código produzido ao menos uma vez ao dia
2. Testes garantem a consistência da base de código unificada
3. Relatórios de qualidade gerados automaticamente
4. Problemas na construção do software tem prioridade máxima
5. Facilmente é possível saber a saúde do projeto
• PMD
• jUnit
• Apache jMeter
• Hudson
• Selenium
• Tomcat
• Sonar
Source-CodeRepository
Subversion(SVN)
Subversion(SVN)
ComponentRepository
(Maven)
ApplicationRepository
AdvancedHudson
AdvancedHudson
...
MavenMaven MavenMavenMavenMaven MavenMaven
MavenMaven
Complete QA TeamWork Environment with
Configuration Management
Developer 1Developer 2 Developer N Tester
ArchivaArchiva
Customer.java v1. Customer.java v2. Customer.java v3
Product.java v1. Product.java v2
Invoice.java v1
sales.jar v3.0 (Customer.java v2, Product.java v1, ...)
. sales.jar v3.01
. sales.jar v3.02
. sales.jar v.4
salesutils.war v1.0. salesutils.war v1.1
hibernate.jar v3.2
QADatabase
ApplicationRepository
AdvancedHudson
AdvancedHudson
salesapp.ear v5.0 salesapp.ear v5.1asalesapp.ear v6.0
MavenMaven
QAApp Server
QAApp Server
Advanced Continuous Integration . daily build with schedule options. ear, war version control repository. batch tests (unit, coverage, functional, static, load, xref, ncss, etc.). project web-site generation. email alerts (build or test problems)
ProductionDatabase
ProductionApp Server
ProductionApp Server
PortalContent
Management
Deploy
One-Click Deploy
Project web-site“One-Click Publishing”
One-Click App “Production”Versioning (Example: v 5.1)
DeliveryAutomation
Referências
• www.powerlogic.com.br
• www.google.com