SlideShare uma empresa Scribd logo
Globalcode – Open4education
Trilha PHP – Testes e Ambiente de
Integração Contínua PHP para o
Desenvolvimento Ágil
Bruno Yukio Tanoue
Web Developer – UOL BoaCompra
Globalcode – Open4education
Bruno Tanoue
Web Developer @ UOL BoaCompra ( 3 anos e 5
meses)
Checkout e Gateway de Pagamento BoaCompra.
Sistema Financeiro BoaCompra.
Bacharel em Ciência da Computação pela UEM
(Universidade Estadual de Maringá)
Email: brunotanoue@hotmail.com
LinkedIn: https://br.linkedin.com/in/brunotanoue
Globalcode – Open4education
Agenda
Pirâmide de Testes
Teste de Unidade Isolado x Colaborativo
Otimizações para Execução de Testes
Ambiente de Integração Contínua PHP
Globalcode – Open4education
Pirâmide de Testes
Objetivo: Promover uma proporção adequada de
testes para uma execução e um feedback rápido.
Testes de Unidade: Verificar a qualidade em pequenos
trechos de código (unidades).
Ex: PHPUnit
Testes de Integração: Testar a integração das unidades.
Ex: PHPUnit + DBUnit
Testes de Interface: Validar fluxos e informações
exibidas à nível de usuário.
Ex: Selenium Webdriver
Globalcode – Open4education
Pirâmide de Testes
http://martinfowler.com/bliki/TestPyramid.html
UI
Integração
Unidade
T
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Afinal o que é um teste de unidade?
Conceito mais utilizado e defendido:
Teste de Unidade Isolado: Método testado isoladamente
de outros métodos internos e comunicações externas
utilizando mocks.
Mock: Troca de uma estrutura real por uma estrutura
simulada para prosseguimento de um teste.
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Isolado
Controller Model Database
Controller Model(Mock)
UNIDADE
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Isolado
Pontos Positivos:
Execução rápida.
Localização mais rápida do erro no código.
Simulação de Exception.
Pontos Negativos:
Possível mock desatualizado.
Falso positivo nos testes.
Possível bug em produção.
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Afinal o que é um teste de unidade?
Outra definição:
Teste de Unidade Colaborativo: Método testado em
colaboração com seus métodos internos e comunicações
externas.
Mas o que é uma unidade neste caso?
Isso depende da profundidade do seu teste.
Globalcode – Open4education
UNIDADE
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Colaborativo
Controller Model Database
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Colaborativo
Pontos Positivos:
Execução dos testes com a estrutura real.
Cenário mais completamente testado (colaboração das
unidades).
Pontos negativos:
Tempo de execução mais lento.
Alta dependência entre componentes ou sistemas.
Falso negativo nos testes ( ex: comunicações externas).
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Qual tipo de teste de unidade é melhor?
É necessário avaliar cada caso e dependendo
da necessidade utilizar um dos dois tipos de teste.
E como fica a pirâmide de testes com o teste de
unidade colaborativo?
http://martinfowler.com/bliki/UnitTest.html
MUITO CONFUSA!!!!
Globalcode – Open4education
Otimizações para
Execução de Testes
O que é importante para uma execução de testes?
Devem passar confiança de que está tudo bem com o
código.
Devem ser de fácil compreensão.
A execução da suíte deve ser a mais rápida possível,
para que seja executada o quanto antes e o maior
número de vezes seja necessário. (Ex: a cada commit
do desenvolvedor.)
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Ambiente
Problemas que podem atrasar a execução de testes:
Concorrência de rede.
Concorrência de banco.
Possível solução: centralizar o ambiente de testes em
uma única máquina, seja virtual ou real com um banco
de dados próprio para testes.
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Ambiente
BANCO DE STAGING BANCO DE TESTES LOCAL
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Unidade
@dataProvider : criar um provedor de dados para
produzir entradas para um teste.
Globalcode – Open4education
Otimizações para
Execução de Testes
Without @dataProvider
Globalcode – Open4education
Otimizações para
Execução de Testes
With @dataProvider
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
setUp e tearDown
Na execução da suíte, evita que vários navegadores fiquem
abertos se vários testes falharem.
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
setUpBeforeClass e tearDownAfterClass
E se ao invés disso, o navegador fosse aberto e fechado uma
vez à cada classe de teste?
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Surefire Plugin (Execução de testes em paralelo)
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Build #73
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Build #75
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Build #75
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Build #76
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
O que é um ambiente de integração contínua?
Integração Contínua
Processo Ágil
Defende a entrega contínua de código em um repositório central
em curtos espaços de tempo.
O código a ser integrado não pode produzir defeitos no código
já existente. (testes)
O ambiente de integração contínua tem como objetivo
automatizar tarefas do processo de integração contínua.
A automatização é importante para diminuir os erros de
natureza humana.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Como criar um servidor de Integração Contínua
(CI) básico voltado para PHP?
Verificação
e
Atualização
de Cópia do
Repositório
Execução
dos Testes
Geração de
Pacote
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Como criar um servidor de Integração Contínua
(CI) básico voltado para PHP?
Ferramenta de CI (Jenkins, Hudson, etc..)
É o coração do servidor de integração contínua, onde todo o
processo de integração de código, teste e geração de pacotes é
feito.
Controle de Versionamento (GIT, SVN, etc...)
O servidor de CI vai bater no repositório central de tempos em
tempos verificando se houve alteração. Caso haja alteração,
uma construção será disparada e a cópia local é atualizada.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Como criar um servidor de Integração Contínua
(CI) básico voltado para PHP?
PHP/PHPUnit
Execução de testes para validação do código integrado.
Servidor Web (Apache) e Banco de Dados (MySQL,
SQLite, etc...)
Suporte para testes unitários colaborativos, testes de integração
e testes de interface.
Ferramenta de Building(Maven, Ant, etc...)
Geração de pacotes.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Vlw kpiaum!!! Então agora eu vou sair instalando
tudo na mão!!!!
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
O Jenkins pode gerenciar a instalação da maioria
dos componentes através de PLUGINS.
Pode gerenciar várias versões de determinado
componente.
Fácil instalação, remoção ou atualização.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Outros Plugins de grande utilidade:
Clover PHP
Gráfico de cobertura de código para cada construção.
Avisos quando a cobertura de código diminuir.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Outros Plugins de grande utilidade:
Clover PHP
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Outros Plugins de grande utilidade:
HTML Publisher
Log PHPUnit: Fornece gráficos de cobertura de código de cada
pasta, classe ou método.
Informações de linhas cobertas, descobertas, dead code.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Outros Plugins de grande utilidade:
HTML Publisher
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
O processo de integração contínua dentro do
Jenkins é representado pelo job.
Um job pode ser configurado de uma maneira bastante
variada, podendo representar tanto uma etapa dentro da
integração contínua, como todo o processo de
integração contínua.
É possível alterar a ordem de execução dos passos
dentro de um job através de um simples “clica e arrasta”.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 1: Configurar o gerenciamento do código fonte.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 2: Configurar o método de verificação do
repositório (trigger).
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 3: Configurar a execução dos testes.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 4: Gerar os pacotes.
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 5: Salvar e executar!!!!
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Log de Execução:
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Log de Execução:
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Log de Execução:
Globalcode – Open4education
FIM
Email: brunotanoue@hotmail.com
Dúvidas?

Mais conteúdo relacionado

Mais procurados (20)

PPTX
Test-Driven Development (TDD) utilizando o framework xUnit.net
Renato Groff
 
PDF
Testes de unidade e TDD SoLiSC 2011
Luís Cobucci
 
PDF
Integração contínua em PHP com Jenkins
Gilmar Pupo
 
PPT
Gof design patterns
Eduardo Carvalho
 
PDF
Integração Continua - Jenkins
João Carlos Ottobboni
 
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
PDF
Colaboração em Projetos FLOSS: CakePHP
Thiago Colares
 
PDF
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Adam Victor Brandizzi
 
PPT
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Renato Groff
 
PPTX
Introdução ao Maven
Henrique Smoco
 
PPTX
Jenkins integrando e estendendo.
Leonardo Kobus
 
PDF
Testando Aplicações Django: Quando, Como e Onde?
Bernardo Fontes
 
PDF
Apresentação maven
André Justi
 
PDF
Qualidade em projetos PHP - PHPSC Conf 2011
Luís Cobucci
 
PPTX
JUnit Sample
Guilherme Alberto de Moraes
 
PDF
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
tdc-globalcode
 
PDF
Conceitos e exemplos em versionamento de código
Felipe
 
PPTX
Dev ops integração contínua com jenkins
Michel Cordeiro
 
PPT
Test driven development
Carlos Eduardo Miranda
 
PDF
Qualidade em projetos PHP - SoLiSC 2011
Luís Cobucci
 
Test-Driven Development (TDD) utilizando o framework xUnit.net
Renato Groff
 
Testes de unidade e TDD SoLiSC 2011
Luís Cobucci
 
Integração contínua em PHP com Jenkins
Gilmar Pupo
 
Gof design patterns
Eduardo Carvalho
 
Integração Continua - Jenkins
João Carlos Ottobboni
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
Colaboração em Projetos FLOSS: CakePHP
Thiago Colares
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Adam Victor Brandizzi
 
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...
Renato Groff
 
Introdução ao Maven
Henrique Smoco
 
Jenkins integrando e estendendo.
Leonardo Kobus
 
Testando Aplicações Django: Quando, Como e Onde?
Bernardo Fontes
 
Apresentação maven
André Justi
 
Qualidade em projetos PHP - PHPSC Conf 2011
Luís Cobucci
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
tdc-globalcode
 
Conceitos e exemplos em versionamento de código
Felipe
 
Dev ops integração contínua com jenkins
Michel Cordeiro
 
Test driven development
Carlos Eduardo Miranda
 
Qualidade em projetos PHP - SoLiSC 2011
Luís Cobucci
 

Semelhante a TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o Desenvolvimento Ágil : de um desenvolvedor para desenvolvedores. (20)

PDF
Automação de testes em projetos ágeis
Cristiano Caetano
 
PDF
TDC2008 Integração Contínua
Victor Hugo Germano
 
ODP
PHPUnit e teste de software
ricardophp
 
PPT
Automacao de testes em .NET? Keep Calm and Just do It
tdc-globalcode
 
PPT
Apresentação TDC2015
Bruno Murawski
 
PPSX
DevQA - Da zona de conforto ao comprometimento com a Qualidade
Kamilla Queiroz Xavier
 
PPT
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Gabriela Patuci
 
PDF
Palestra Testes Unidade Com JUnit
Robinson Castilho
 
PPT
Testes Funcionais em um ALM Open Source - TDC 2012 SP
Elias Nogueira
 
PDF
Testes: existe vida antes do TDD
Diana Ungaro Arnos
 
ODP
Qualidade no desenvolvimento de software com PHPUnit
Diego Tremper
 
PDF
TDD com Python (Completo)
Osvaldo Santana Neto
 
PPTX
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
KEY
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
PDF
Ctai Teste De Software Aula 1
Victor Hugo Germano
 
PDF
Open4Education | MC122 - Introdução a ALM OpenSource
tdc-globalcode
 
PPT
Minicurso de TDD
William G. Comnisky
 
PPTX
Testes automatizados.pptx
Carlos Gonzaga
 
PPTX
Java enterprise - testcontainers
Sandro Giacomozzi
 
PPTX
TDC2018SP | Trilha Java Enterprise - Facilitando os testes de integracao com ...
tdc-globalcode
 
Automação de testes em projetos ágeis
Cristiano Caetano
 
TDC2008 Integração Contínua
Victor Hugo Germano
 
PHPUnit e teste de software
ricardophp
 
Automacao de testes em .NET? Keep Calm and Just do It
tdc-globalcode
 
Apresentação TDC2015
Bruno Murawski
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
Kamilla Queiroz Xavier
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Gabriela Patuci
 
Palestra Testes Unidade Com JUnit
Robinson Castilho
 
Testes Funcionais em um ALM Open Source - TDC 2012 SP
Elias Nogueira
 
Testes: existe vida antes do TDD
Diana Ungaro Arnos
 
Qualidade no desenvolvimento de software com PHPUnit
Diego Tremper
 
TDD com Python (Completo)
Osvaldo Santana Neto
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Ctai Teste De Software Aula 1
Victor Hugo Germano
 
Open4Education | MC122 - Introdução a ALM OpenSource
tdc-globalcode
 
Minicurso de TDD
William G. Comnisky
 
Testes automatizados.pptx
Carlos Gonzaga
 
Java enterprise - testcontainers
Sandro Giacomozzi
 
TDC2018SP | Trilha Java Enterprise - Facilitando os testes de integracao com ...
tdc-globalcode
 
Anúncio

Último (8)

PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PDF
Apresentação de Manipulação de strings em Python .pdf
Gabriel Vitor
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
PDF
Apresentação sobre Funções Matemáticas e o módulo.pdf
Gabriel Vitor
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Apresentação de Manipulação de strings em Python .pdf
Gabriel Vitor
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
Apresentação sobre Funções Matemáticas e o módulo.pdf
Gabriel Vitor
 
Anúncio

TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o Desenvolvimento Ágil : de um desenvolvedor para desenvolvedores.

  • 1. Globalcode – Open4education Trilha PHP – Testes e Ambiente de Integração Contínua PHP para o Desenvolvimento Ágil Bruno Yukio Tanoue Web Developer – UOL BoaCompra
  • 2. Globalcode – Open4education Bruno Tanoue Web Developer @ UOL BoaCompra ( 3 anos e 5 meses) Checkout e Gateway de Pagamento BoaCompra. Sistema Financeiro BoaCompra. Bacharel em Ciência da Computação pela UEM (Universidade Estadual de Maringá) Email: brunotanoue@hotmail.com LinkedIn: https://br.linkedin.com/in/brunotanoue
  • 3. Globalcode – Open4education Agenda Pirâmide de Testes Teste de Unidade Isolado x Colaborativo Otimizações para Execução de Testes Ambiente de Integração Contínua PHP
  • 4. Globalcode – Open4education Pirâmide de Testes Objetivo: Promover uma proporção adequada de testes para uma execução e um feedback rápido. Testes de Unidade: Verificar a qualidade em pequenos trechos de código (unidades). Ex: PHPUnit Testes de Integração: Testar a integração das unidades. Ex: PHPUnit + DBUnit Testes de Interface: Validar fluxos e informações exibidas à nível de usuário. Ex: Selenium Webdriver
  • 5. Globalcode – Open4education Pirâmide de Testes http://martinfowler.com/bliki/TestPyramid.html UI Integração Unidade T
  • 6. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Afinal o que é um teste de unidade? Conceito mais utilizado e defendido: Teste de Unidade Isolado: Método testado isoladamente de outros métodos internos e comunicações externas utilizando mocks. Mock: Troca de uma estrutura real por uma estrutura simulada para prosseguimento de um teste.
  • 7. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Teste de Unidade Isolado Controller Model Database Controller Model(Mock) UNIDADE
  • 8. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Teste de Unidade Isolado Pontos Positivos: Execução rápida. Localização mais rápida do erro no código. Simulação de Exception. Pontos Negativos: Possível mock desatualizado. Falso positivo nos testes. Possível bug em produção.
  • 9. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Afinal o que é um teste de unidade? Outra definição: Teste de Unidade Colaborativo: Método testado em colaboração com seus métodos internos e comunicações externas. Mas o que é uma unidade neste caso? Isso depende da profundidade do seu teste.
  • 10. Globalcode – Open4education UNIDADE Teste de Unidade Isolado x Colaborativo Teste de Unidade Colaborativo Controller Model Database
  • 11. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Teste de Unidade Colaborativo Pontos Positivos: Execução dos testes com a estrutura real. Cenário mais completamente testado (colaboração das unidades). Pontos negativos: Tempo de execução mais lento. Alta dependência entre componentes ou sistemas. Falso negativo nos testes ( ex: comunicações externas).
  • 12. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Qual tipo de teste de unidade é melhor? É necessário avaliar cada caso e dependendo da necessidade utilizar um dos dois tipos de teste. E como fica a pirâmide de testes com o teste de unidade colaborativo? http://martinfowler.com/bliki/UnitTest.html MUITO CONFUSA!!!!
  • 13. Globalcode – Open4education Otimizações para Execução de Testes O que é importante para uma execução de testes? Devem passar confiança de que está tudo bem com o código. Devem ser de fácil compreensão. A execução da suíte deve ser a mais rápida possível, para que seja executada o quanto antes e o maior número de vezes seja necessário. (Ex: a cada commit do desenvolvedor.)
  • 14. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Ambiente Problemas que podem atrasar a execução de testes: Concorrência de rede. Concorrência de banco. Possível solução: centralizar o ambiente de testes em uma única máquina, seja virtual ou real com um banco de dados próprio para testes.
  • 15. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Ambiente BANCO DE STAGING BANCO DE TESTES LOCAL
  • 16. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Unidade @dataProvider : criar um provedor de dados para produzir entradas para um teste.
  • 17. Globalcode – Open4education Otimizações para Execução de Testes Without @dataProvider
  • 18. Globalcode – Open4education Otimizações para Execução de Testes With @dataProvider
  • 19. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface setUp e tearDown Na execução da suíte, evita que vários navegadores fiquem abertos se vários testes falharem.
  • 20. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface setUpBeforeClass e tearDownAfterClass E se ao invés disso, o navegador fosse aberto e fechado uma vez à cada classe de teste?
  • 21. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Surefire Plugin (Execução de testes em paralelo)
  • 22. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #73
  • 23. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #75
  • 24. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #75
  • 25. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #76
  • 26. Globalcode – Open4education Ambiente de Integração Contínua PHP O que é um ambiente de integração contínua? Integração Contínua Processo Ágil Defende a entrega contínua de código em um repositório central em curtos espaços de tempo. O código a ser integrado não pode produzir defeitos no código já existente. (testes) O ambiente de integração contínua tem como objetivo automatizar tarefas do processo de integração contínua. A automatização é importante para diminuir os erros de natureza humana.
  • 27. Globalcode – Open4education Ambiente de Integração Contínua PHP
  • 28. Globalcode – Open4education Ambiente de Integração Contínua PHP Como criar um servidor de Integração Contínua (CI) básico voltado para PHP? Verificação e Atualização de Cópia do Repositório Execução dos Testes Geração de Pacote
  • 29. Globalcode – Open4education Ambiente de Integração Contínua PHP Como criar um servidor de Integração Contínua (CI) básico voltado para PHP? Ferramenta de CI (Jenkins, Hudson, etc..) É o coração do servidor de integração contínua, onde todo o processo de integração de código, teste e geração de pacotes é feito. Controle de Versionamento (GIT, SVN, etc...) O servidor de CI vai bater no repositório central de tempos em tempos verificando se houve alteração. Caso haja alteração, uma construção será disparada e a cópia local é atualizada.
  • 30. Globalcode – Open4education Ambiente de Integração Contínua PHP Como criar um servidor de Integração Contínua (CI) básico voltado para PHP? PHP/PHPUnit Execução de testes para validação do código integrado. Servidor Web (Apache) e Banco de Dados (MySQL, SQLite, etc...) Suporte para testes unitários colaborativos, testes de integração e testes de interface. Ferramenta de Building(Maven, Ant, etc...) Geração de pacotes.
  • 31. Globalcode – Open4education Ambiente de Integração Contínua PHP Vlw kpiaum!!! Então agora eu vou sair instalando tudo na mão!!!!
  • 32. Globalcode – Open4education Ambiente de Integração Contínua PHP O Jenkins pode gerenciar a instalação da maioria dos componentes através de PLUGINS. Pode gerenciar várias versões de determinado componente. Fácil instalação, remoção ou atualização.
  • 33. Globalcode – Open4education Ambiente de Integração Contínua PHP
  • 34. Globalcode – Open4education Ambiente de Integração Contínua PHP
  • 35. Globalcode – Open4education Ambiente de Integração Contínua PHP Outros Plugins de grande utilidade: Clover PHP Gráfico de cobertura de código para cada construção. Avisos quando a cobertura de código diminuir.
  • 36. Globalcode – Open4education Ambiente de Integração Contínua PHP Outros Plugins de grande utilidade: Clover PHP
  • 37. Globalcode – Open4education Ambiente de Integração Contínua PHP Outros Plugins de grande utilidade: HTML Publisher Log PHPUnit: Fornece gráficos de cobertura de código de cada pasta, classe ou método. Informações de linhas cobertas, descobertas, dead code.
  • 38. Globalcode – Open4education Ambiente de Integração Contínua PHP Outros Plugins de grande utilidade: HTML Publisher
  • 39. Globalcode – Open4education Ambiente de Integração Contínua PHP O processo de integração contínua dentro do Jenkins é representado pelo job. Um job pode ser configurado de uma maneira bastante variada, podendo representar tanto uma etapa dentro da integração contínua, como todo o processo de integração contínua. É possível alterar a ordem de execução dos passos dentro de um job através de um simples “clica e arrasta”.
  • 40. Globalcode – Open4education Ambiente de Integração Contínua PHP
  • 41. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 1: Configurar o gerenciamento do código fonte.
  • 42. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 2: Configurar o método de verificação do repositório (trigger).
  • 43. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 3: Configurar a execução dos testes.
  • 44. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 4: Gerar os pacotes.
  • 45. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 5: Salvar e executar!!!!
  • 46. Globalcode – Open4education Ambiente de Integração Contínua PHP Log de Execução:
  • 47. Globalcode – Open4education Ambiente de Integração Contínua PHP Log de Execução:
  • 48. Globalcode – Open4education Ambiente de Integração Contínua PHP Log de Execução:
  • 49. Globalcode – Open4education FIM Email: brunotanoue@hotmail.com Dúvidas?