Transcript
Page 1: Integração Contínua

   

Integração ContínuaIntegração ContínuaAs possibilidades da automatizaçãoAs possibilidades da automatização

Victor Hugo GermanoVictor Hugo Germano

Page 2: Integração Contínua

   

Eu? Quem?Eu? Quem?

Victor Hugo GermanoVictor Hugo Germano

● Ciência da Computação – UFSCCiência da Computação – UFSC● Gestão Estratégica de TI – UNIVALIGestão Estratégica de TI – UNIVALI● Audaces Automação IndustrialAudaces Automação Industrial● Colunista da Revista Visão ÁgilColunista da Revista Visão Ágil● Autor: A Maldita ComédiaAutor: A Maldita Comédia● Coding Dojo FloripaCoding Dojo Floripa

http://malditacomedia.blogspot.com

Page 3: Integração Contínua

   

AgendaAgenda

●  MitosMitos●  PrincípiosPrincípios●  O Processo de ICO Processo de IC●  Controle de VersãoControle de Versão●  TestesTestes●  InspeçãoInspeção●  ServidoresServidores●  FeedbackFeedback●  DesafioDesafio

http://malditacomedia.blogspot.com

Page 4: Integração Contínua

   

Def

iniç

ão d

e re

quis

itos

Aná

lise 

e D

esig

n

Des

envo

lvim

ento

Tes

te/C

orre

ção

Tempo

Page 5: Integração Contínua

   

Integração de SoftwareIntegração de Software

““No final é só juntar tudo e liberar No final é só juntar tudo e liberar uma versão”uma versão”

Subestimado por:Subestimado por:

●  GerentesGerentes

●  Desenvolvedores Desenvolvedores 

●  ClientesClientes

E a realidade?E a realidade?

http://malditacomedia.blogspot.com

Page 6: Integração Contínua

   

Integração de SoftwareIntegração de Software

●  Riscos são subestimadosRiscos são subestimados

●  Dependências de subsistemasDependências de subsistemas

●  Interpretação errada de requisitos Interpretação errada de requisitos 

●  Incompatibilidade entre interfacesIncompatibilidade entre interfaces

●  Testes demoram demaisTestes demoram demais

●  Correções demoram mais aindaCorreções demoram mais ainda

●  Atrasos tornam­se comunsAtrasos tornam­se comuns

●  O caos está instaladoO caos está instalado

http://malditacomedia.blogspot.com

Page 7: Integração Contínua

   

ComunicaçãoComunicação

http://malditacomedia.blogspot.com

Page 8: Integração Contínua

   

Velocidade + Qualidade + Feedback = Valor de NegócioVelocidade + Qualidade + Feedback = Valor de Negócio

Para o Cliente:Para o Cliente:

●  Resultados rápidosResultados rápidos

●  Aderência a regras de negócioAderência a regras de negócio

●  Funcionamento correto da aplicaçãoFuncionamento correto da aplicação

●  Satisfação Satisfação 

http://malditacomedia.blogspot.com

Page 9: Integração Contínua

   

Princípios ÁgeisPrincípios Ágeis

Agile Manifesto Principles

●  Satisfação do ClienteSatisfação do Cliente como prioridade máxima, através da  como prioridade máxima, através da 

entrega contínua de valor agregadoentrega contínua de valor agregado

●  A principal medida de progresso é A principal medida de progresso é software funcionandosoftware funcionando

●  Grupos interdisciplinares trabalham em conjunto com o cliente Grupos interdisciplinares trabalham em conjunto com o cliente 

para o sucesso do projetopara o sucesso do projeto

●  Equipes autogerenciáveis, indivíduos motivados, comunicação Equipes autogerenciáveis, indivíduos motivados, comunicação 

e simplicidade são valores importantese simplicidade são valores importantes

●  Melhoria Contínua para maximizar a produtividade e Melhoria Contínua para maximizar a produtividade e 

excelência da equipeexcelência da equipe

http://malditacomedia.blogspot.com

Page 10: Integração Contínua

   

Integração Contínua?Integração Contínua?

●   Desenvolvedores sincronizam códigos produzidos ao menos Desenvolvedores sincronizam códigos produzidos ao menos 

uma vez ao diauma vez ao dia

●   Testes garantem a consistência da base de código unificadaTestes garantem a consistência da base de código unificada

●   Métricas são aferidasMétricas são aferidas

●   Relatórios geradosRelatórios gerados

●   Uma versão compilada, testada e pronta para uso é criadaUma versão compilada, testada e pronta para uso é criada

●   Qualquer problema na construção da versão possuí Qualquer problema na construção da versão possuí 

prioridade máximaprioridade máxima

●   O código é constantemente revisado em busca de melhoriasO código é constantemente revisado em busca de melhorias

Paul Duval – Continuous Integration, 2007

Page 11: Integração Contínua

   

O ProcessoO Processo

http://malditacomedia.blogspot.com

Page 12: Integração Contínua

   

ObjetivosObjetivos

●  Redução de RiscosRedução de Riscos

●  Automatização de processos repetitivosAutomatização de processos repetitivos

●  Gerar Software funcionandoGerar Software funcionando

●  Ampliar a confiança no produtoAmpliar a confiança no produto

●  Ampliar a visibilidade do projetoAmpliar a visibilidade do projeto

http://malditacomedia.blogspot.com

Page 13: Integração Contínua

   

Elementos do ProcessoElementos do Processo

Page 14: Integração Contínua

   

Controle de VersãoControle de Versão

http://malditacomedia.blogspot.com

Ainda existem empresas sem controle de versão!!!Ainda existem empresas sem controle de versão!!!

●  CVSCVS●  SubversionSubversion●  SVKSVK●  MercurialMercurial●  BazaarBazaar●  MonotoneMonotone

Page 15: Integração Contínua

   

Testes AutomatizadosTestes Automatizados

““Desenvolver software sem testes automatizados é irresponsabilidade profissional”Desenvolver software sem testes automatizados é irresponsabilidade profissional”Bob Martin, 2008Bob Martin, 2008

http://malditacomedia.blogspot.com

Page 16: Integração Contínua

   

JunitJunit

 <junit fork="yes" printsummary="no" haltonfailure="no">   <batchtest fork="yes" todir="${reports.test}">        <fileset dir="${classesDir}">  

      <include name="**/*Test.class" />        </fileset>   </batchtest>   <formatter type="xml" />      <classpath refid="classpath.test" /> </junit> <junitreport todir="${reports.test}">      <fileset dir="${reports.test}"> 

<include name="TEST­*.xml" />      </fileset>      <report todir="${reports.test}" /> </junitreport>

Page 17: Integração Contínua

   

SeleniumSelenium

●Grava NavegaçãoGrava Navegação

●Simples de UsarSimples de Usar

●Integração com FirefoxIntegração com Firefox

Page 18: Integração Contínua

   

FitnesseFitnesse Wiki para Testes de AceitaçãoWiki para Testes de Aceitação

Page 19: Integração Contínua

   

Teste!! Teste!! Teste!!Teste!! Teste!! Teste!!

●  JMeterJMeter

●  HttpUnitHttpUnit

●  SQLUnitSQLUnit

●  Ejb3UnitEjb3Unit

●  DBUnitDBUnit

●  dbMonsterdbMonster

http://java­source.net/open­source/testing­toolshttp://java­source.net/open­source/testing­tools

Page 20: Integração Contínua

   

Auditoria de códigoAuditoria de código

Page 21: Integração Contínua

   

FindbugsFindbugs

Page 22: Integração Contínua

   

CheckstyleCheckstyle

Padronização:Padronização:

●  Convenções de nomenclaturaConvenções de nomenclatura

●  Tamanho de métodosTamanho de métodos

●  Notação Javadoc Notação Javadoc 

●  Duplicação de CódigoDuplicação de Código

●  Complexidade de branchesComplexidade de branches

Page 23: Integração Contínua

   

Quantas linhas de código são exercitadas por testes automatizados?Quantas linhas de código são exercitadas por testes automatizados?

Page 24: Integração Contínua

   

PMDPMD

●  Possíveis Bugs – blocos try/catch/finally/switch vaziosPossíveis Bugs – blocos try/catch/finally/switch vazios●  Dead code – variáveis, parametros e métodos não utilizadosDead code – variáveis, parametros e métodos não utilizados●  Expressões muito complexas – blocos if desnecessários para Expressões muito complexas – blocos if desnecessários para laços for que poderiam ser laços whilelaços for que poderiam ser laços while●  Customização de regras:Customização de regras:

Um grande número de métodos públicos e atributos declarados em uma Um grande número de métodos públicos e atributos declarados em uma classe pode significar que a classe precisa ser quebrada já que um esforço classe pode significar que a classe precisa ser quebrada já que um esforço mais será necessário para testá­la.mais será necessário para testá­la.

Page 25: Integração Contínua

   

E como juntar tudo isso??E como juntar tudo isso??

Page 26: Integração Contínua

   

Servidores de BuildServidores de Build

Page 27: Integração Contínua

   

Topa um desafio?Topa um desafio?

Reduza o tempo de criação de uma versão!Reduza o tempo de criação de uma versão!

●  Testes unitários realizados Testes unitários realizados 

●  Documentações geradasDocumentações geradas

●  Métricas de qualidade aferidasMétricas de qualidade aferidas

●  Script de banco de dados adequado Script de banco de dados adequado 

●  Testes de integração realizadosTestes de integração realizados

Page 28: Integração Contínua

   

Obrigado!Obrigado!

http://malditacomedia.blogspot.comhttp://[email protected]@gmail.com

Page 29: Integração Contínua

   

Dúvidas?Dúvidas?


Top Related