Integração Contínua com Hudson, Selenium e Sonar

Preview:

DESCRIPTION

Integração Contínua com Hudson, Selenium e Sonar

Citation preview

Integração Contínua com Hudson, Selenium e Sonar

Arthur Cesar Oreanaaoreana@gmail.com

@arthur_oreana

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

Arthur Cesar Oreana

aoreana@gmail.com

arthur_oreana

Obrigado!