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)

PPT
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
Stefan Teixeira
 
PPT
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Gabriela Patuci
 
PDF
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Jonathan Prates
 
PDF
Automação de testes em projetos ágeis
Cristiano Caetano
 
PPTX
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
PPTX
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
PDF
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Edlaine Zamora
 
PDF
TDC 2016 Trilha Testes - Floripa
Walmyr Lima e Silva Filho
 
PPTX
[DevOps Carioca] Continuous Delivery
Samanta Cicilia
 
PPT
Apresentação TDC2015
Bruno Murawski
 
PPT
Automacao de testes em .NET? Keep Calm and Just do It
tdc-globalcode
 
PDF
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
Mayara Fernandes
 
PPT
Testes Funcionais em um ALM Open Source - TDC 2012 SP
Elias Nogueira
 
PDF
Metralhando sua API
Thalita Pinheiro
 
PDF
TDC Floripa 2018 - Metralhando sua API
Edlaine Zamora
 
PDF
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
tdc-globalcode
 
PPTX
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Samanta Cicilia
 
PDF
Do regresso ao progresso: automação de testes em aplicativos mobile
Lucas Carvalho
 
PDF
Testes para Android de ponta a ponta
Elias Nogueira
 
PPT
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
TDC 2014 Floripa - Melhorando sua Estratégia de Testes Automatizados
Stefan Teixeira
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Gabriela Patuci
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Jonathan Prates
 
Automação de testes em projetos ágeis
Cristiano Caetano
 
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Edlaine Zamora
 
TDC 2016 Trilha Testes - Floripa
Walmyr Lima e Silva Filho
 
[DevOps Carioca] Continuous Delivery
Samanta Cicilia
 
Apresentação TDC2015
Bruno Murawski
 
Automacao de testes em .NET? Keep Calm and Just do It
tdc-globalcode
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
Mayara Fernandes
 
Testes Funcionais em um ALM Open Source - TDC 2012 SP
Elias Nogueira
 
Metralhando sua API
Thalita Pinheiro
 
TDC Floripa 2018 - Metralhando sua API
Edlaine Zamora
 
TDC 2013 SP | Trilha ALM: Construindo uma solução de ponta a ponta com ferram...
tdc-globalcode
 
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a Serviços
Samanta Cicilia
 
Do regresso ao progresso: automação de testes em aplicativos mobile
Lucas Carvalho
 
Testes para Android de ponta a ponta
Elias Nogueira
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
Anúncio

Último (7)

PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
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?