Globalcode – Open4education
Trilha PHP – Testes e Ambiente de
Integração Contínua PHP para o
Desenvolvimento Ágil
Bruno Yu...
Globalcode – Open4education
Bruno Tanoue
Web Developer @ UOL BoaCompra ( 3 anos e 5
meses)
Checkout e Gateway de Pagamento...
Globalcode – Open4education
Agenda
Pirâmide de Testes
Teste de Unidade Isolado x Colaborativo
Otimizações para Execução de...
Globalcode – Open4education
Pirâmide de Testes
Objetivo: Promover uma proporção adequada de
testes para uma execução e um ...
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 util...
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Isolado
Controller Model Database
Con...
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Isolado
Pontos Positivos:
Execução rá...
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Afinal o que é um teste de unidade?
Outra definição:
T...
Globalcode – Open4education
UNIDADE
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Colaborativo
Controller Model...
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Teste de Unidade Colaborativo
Pontos Positivos:
Execuç...
Globalcode – Open4education
Teste de Unidade Isolado
x Colaborativo
Qual tipo de teste de unidade é melhor?
É necessário a...
Globalcode – Open4education
Otimizações para
Execução de Testes
O que é importante para uma execução de testes?
Devem pass...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Ambiente
Problemas que podem atrasar a exec...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Ambiente
BANCO DE STAGING BANCO DE TESTES L...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Unidade
@dataProvider : c...
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 tearDow...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
setUpBeforeClas...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Surefire Plugin...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Bu...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Bu...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Bu...
Globalcode – Open4education
Otimizações para
Execução de Testes
Otimizações de Código – Teste de Interface
Resultados – Bu...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
O que é um ambiente de integração contínua?
Integração Con...
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 ...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Como criar um servidor de Integração Contínua
(CI) básico ...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Como criar um servidor de Integração Contínua
(CI) básico ...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Vlw kpiaum!!! Então agora eu vou sair instalando
tudo na m...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
O Jenkins pode gerenciar a instalação da maioria
dos compo...
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 ...
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 PHP...
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 é repr...
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: Confi...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 2: Confi...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 3: Confi...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 4: Gerar...
Globalcode – Open4education
Ambiente de Integração
Contínua PHP
Criando e executando um job PHP no Jenkins:
Passo 5: Salva...
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?
Próximos SlideShares
Carregando em…5
×

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

660 visualizações

Publicada em

O profissional de QA certamente é necessário dentro de uma empresa. Mas em muitos casos, infelizmente, existem empresas que não aderem a cultura deste profissional. Isto se torna um grande desafio para as equipes de desenvolvimento, aumentar a qualidade de seus códigos. Esta apresentação visa dar dicas aprendidas com erros desta tentativa de tentar melhorar a qualidade de código e o tempo de execução de testes para um feedback rápido.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
660
No SlideShare
0
A partir de incorporações
0
Número de incorporações
25
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 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. 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. 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. 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. 5. Globalcode – Open4education Pirâmide de Testes http://martinfowler.com/bliki/TestPyramid.html UI Integração Unidade T
  6. 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. 7. Globalcode – Open4education Teste de Unidade Isolado x Colaborativo Teste de Unidade Isolado Controller Model Database Controller Model(Mock) UNIDADE
  8. 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. 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. 10. Globalcode – Open4education UNIDADE Teste de Unidade Isolado x Colaborativo Teste de Unidade Colaborativo Controller Model Database
  11. 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. 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. 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. 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. 15. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Ambiente BANCO DE STAGING BANCO DE TESTES LOCAL
  16. 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. 17. Globalcode – Open4education Otimizações para Execução de Testes Without @dataProvider
  18. 18. Globalcode – Open4education Otimizações para Execução de Testes With @dataProvider
  19. 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. 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. 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. 22. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #73
  23. 23. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #75
  24. 24. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #75
  25. 25. Globalcode – Open4education Otimizações para Execução de Testes Otimizações de Código – Teste de Interface Resultados – Build #76
  26. 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. 27. Globalcode – Open4education Ambiente de Integração Contínua PHP
  28. 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. 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. 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. 31. Globalcode – Open4education Ambiente de Integração Contínua PHP Vlw kpiaum!!! Então agora eu vou sair instalando tudo na mão!!!!
  32. 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. 33. Globalcode – Open4education Ambiente de Integração Contínua PHP
  34. 34. Globalcode – Open4education Ambiente de Integração Contínua PHP
  35. 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. 36. Globalcode – Open4education Ambiente de Integração Contínua PHP Outros Plugins de grande utilidade: Clover PHP
  37. 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. 38. Globalcode – Open4education Ambiente de Integração Contínua PHP Outros Plugins de grande utilidade: HTML Publisher
  39. 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. 40. Globalcode – Open4education Ambiente de Integração Contínua PHP
  41. 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. 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. 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. 44. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 4: Gerar os pacotes.
  45. 45. Globalcode – Open4education Ambiente de Integração Contínua PHP Criando e executando um job PHP no Jenkins: Passo 5: Salvar e executar!!!!
  46. 46. Globalcode – Open4education Ambiente de Integração Contínua PHP Log de Execução:
  47. 47. Globalcode – Open4education Ambiente de Integração Contínua PHP Log de Execução:
  48. 48. Globalcode – Open4education Ambiente de Integração Contínua PHP Log de Execução:
  49. 49. Globalcode – Open4education FIM Email: brunotanoue@hotmail.com Dúvidas?

×