Este documento discute testes e ambientes de integração contínua para desenvolvimento ágil em PHP. Ele apresenta a pirâmide de testes, explica testes de unidade isolados versus colaborativos, e discute otimizações para execução de testes e configuração de ambientes de integração contínua usando ferramentas como Jenkins.
Nesta palestra iremos abordar os principais conceitos relacionados ao Desenvolvimento Orientado a Testes (TDD - Test Driven Development) e usaremos exemplos práticos para ilustrar essa poderosa técnica de desenvolvimento de software.
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
Palestra apresentada no TDC POA 2018 sobre como transformar monolitos delphi em microserviços, com foco em agilidade e qualidade.
Abordamos modelos arquiteturais, técnicas de migração e ferramentas utilizadas
Este Lab foi produzido para ser um estudo prático introdutório para as tecnologias envolvidas com desenvolvimento Python/Django. Sendo assim não tem intenção de ser um curso ou fonte de referências.
O Jenkins é um dos servidores de Integração Contínua mais utilizados no mundo. Mostrarei como instalar e configurar a ferramenta integrada com o GitLab
Nesta palestra iremos abordar os principais conceitos relacionados ao Desenvolvimento Orientado a Testes (TDD - Test Driven Development) e usaremos exemplos práticos para ilustrar essa poderosa técnica de desenvolvimento de software.
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
Palestra apresentada no TDC POA 2018 sobre como transformar monolitos delphi em microserviços, com foco em agilidade e qualidade.
Abordamos modelos arquiteturais, técnicas de migração e ferramentas utilizadas
Este Lab foi produzido para ser um estudo prático introdutório para as tecnologias envolvidas com desenvolvimento Python/Django. Sendo assim não tem intenção de ser um curso ou fonte de referências.
O Jenkins é um dos servidores de Integração Contínua mais utilizados no mundo. Mostrarei como instalar e configurar a ferramenta integrada com o GitLab
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
Tópicos abordados:
- Motivos que contribuem para a falta de testes
- Quais os impactos da falta de testes?
- Visão geral dos diferentes tipos de testes na área de software
- Testes unitários e a plataforma .NET
- TDD: conceitos gerais
- Implementação de um exemplo prático
- Data-Driven Unit Testing
- Testes unitários e o Visual Studio 2015
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Adam Victor Brandizzi
Documentar é difícil e trabalhoso. Mas precisa ser? Nesta apresentação, vou mostrar que, ao menos em Python, não precisa! O módulo doctest ajuda você a documentar e ainda melhora a qualidade do seu código.
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Renato Groff
Slides de palestra sobre o uso de Docker na montagem de ambientes de testes. Apresentação realizada em 19/07, durante a edição 2018 do TDC (The Developer's Conference) em São Paulo-SP.
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!
Demonstração de TDD com JUnit sobre um algoritmo de árvore binária.
Conteúdo referente à disciplina Engenharia de Software do curso de Ciência da Computação do Centro Universitário de Belo Horizonte (UniBH), ministrada pelo professor Paulo Henrique Ladeira.
Atenção à órdem dos commits, eles identificam o processo de geração de assinaturas dos métodos, geração de testes e implementação do código.
Código da árvore binária inspirado no seguinte respoitório: https://github.com/Renants/Arvore
Código disponível no repositório https://github.com/guiAlberto/JUnit-Sample
Conceitos e exemplos em versionamento de códigoFelipe
Uma pequena apresentação dedicada a expôr desenvolvedores a conceitos e termos relacionados ao controle de versão de código em projetos de software; essa é uma prática essencial no desenvolvimento de software com a qual todos os desenvolvedores se depararão no decorrer de suas carreiras.
Palestra apresentada no GDG São Luís Conf em 2016 na Instituição Devry. Além do conteúdo teórico, foi demonstrado de forma prática como utilizar o jenkins para automatização do processo de desenvolvimento de software.
Test-Driven Development (TDD) utilizando o framework xUnit.netRenato Groff
Tópicos abordados:
- Motivos que contribuem para a falta de testes
- Quais os impactos da falta de testes?
- Visão geral dos diferentes tipos de testes na área de software
- Testes unitários e a plataforma .NET
- TDD: conceitos gerais
- Implementação de um exemplo prático
- Data-Driven Unit Testing
- Testes unitários e o Visual Studio 2015
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Adam Victor Brandizzi
Documentar é difícil e trabalhoso. Mas precisa ser? Nesta apresentação, vou mostrar que, ao menos em Python, não precisa! O módulo doctest ajuda você a documentar e ainda melhora a qualidade do seu código.
Descomplicando a montagem de ambientes de Testes com Docker - TDC 2018 - São ...Renato Groff
Slides de palestra sobre o uso de Docker na montagem de ambientes de testes. Apresentação realizada em 19/07, durante a edição 2018 do TDC (The Developer's Conference) em São Paulo-SP.
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!
Demonstração de TDD com JUnit sobre um algoritmo de árvore binária.
Conteúdo referente à disciplina Engenharia de Software do curso de Ciência da Computação do Centro Universitário de Belo Horizonte (UniBH), ministrada pelo professor Paulo Henrique Ladeira.
Atenção à órdem dos commits, eles identificam o processo de geração de assinaturas dos métodos, geração de testes e implementação do código.
Código da árvore binária inspirado no seguinte respoitório: https://github.com/Renants/Arvore
Código disponível no repositório https://github.com/guiAlberto/JUnit-Sample
Conceitos e exemplos em versionamento de códigoFelipe
Uma pequena apresentação dedicada a expôr desenvolvedores a conceitos e termos relacionados ao controle de versão de código em projetos de software; essa é uma prática essencial no desenvolvimento de software com a qual todos os desenvolvedores se depararão no decorrer de suas carreiras.
Palestra apresentada no GDG São Luís Conf em 2016 na Instituição Devry. Além do conteúdo teórico, foi demonstrado de forma prática como utilizar o jenkins para automatização do processo de desenvolvimento de software.
Semelhante a TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o Desenvolvimento Ágil : de um desenvolvedor para desenvolvedores.
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Jonathan Prates
Migração de Banco de Dados - Oracle para MongoDB - TDC2014 - Trilha Python.
Como o TerraTV migrou sua plataforma de C# para Python e Oracle para MongoDB. Mostramos algumas abordagens e ferramentas utilizadas para essa migração.
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontatdc-globalcode
Nessa palestra mostrarei como criar uma estrutura de testes automatizados para a sua aplicação ASP.NET MVC cobrindo os principais aspectos do seu sistema.
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
Palestra apresentada no TDC Florianópolis de 2017.
Não perca cliente por causa da lentidão ou da instabilidade de sua aplicação. Aprenda a analisar tempo de resposta, identificar melhorias de segurança e descobrir a capacidade de seu software. Não deixe que um eventual pico de usuários simultâneos acabe com a reputação de seu software.
Apresentação criada para o TDC 2015, foi apresentada na trilha .Net. Tem o foco em Automação de Testes em .Net. Retrata um estudo de caso de automação em um dos maiores e-commerces de artigos esportivos do mercado.
Automacao de testes em .NET? Keep Calm and Just do Ittdc-globalcode
Estudo de caso de automação de testes funcionais em um e-commerce de uma das marcas mais representativas do ramo de artigos esportivos. Levantar o questionamento sobre o momento decisório da escolha das ferramentas de automação, focando especificamente em projetos e clientes que definem o .Net como ambiente de desenvolvimento. Quais as alternativas de mercado para automação? Qual a linguagem escolher para os testes? Quais frameworks? E a integração contínua? A partir destes pontos, demonstrar o planejamento dos testes, a estratégia de cobertura em níveis traçada para atender o projeto e a apresentação dos relatórios de resultados da execução dos testes automatizados. Integração de ferramentas como: Visual Studio, NUnit, Selenium WebDriver, NuGet escolhidas para alcançar o objetivo proposto.
Palestra apresentada no The Developer's Conference de Porto Alegre 2018. Trilha Delphi.
Nesta palestra iremos relatar nossa experiência na migração de um serviço Delphi totalmente contido em monolito para um novo micro-serviço aproveitando grande parte do código fonte original.
Este projeto nasceu usando bibliotecas comuns ao invés de fontes compartilhados e utilizamos as mais atuais abordagens de desenvolvimento: TDD, ATDD, Continuous Integration, Continuous Delivery e Dockerização, possibilitando que nossa aplicação Delphi seja distribuída com qualidade em três versões: Linux64, Win32 e Win64.
Pensar em performance nos dias atuais é indispensável se você quer manter uma aplicação de sucesso na internet sem imprevistos durante os picos de acesso. Vamos mostrar como entender o comportamento da API sob stress utilizando o Gatling como ferramenta.
Pensar em performance nos dias atuais é indispensável se você quer manter uma aplicação de sucesso na internet sem imprevistos durante os picos de acesso. Vamos mostrar como entender o comportamento da API sob stress utilizando o Gatling como ferramenta.
Continuous Delivery & APIs - Evoluindo uma Arquitetura Orientada a ServiçosSamanta Cicilia
Nessa apresentação você irá conhecer os desafios, os benefícios e as lições aprendidas pela Infoglobo durante a implantação de Continuous Delivery no ciclo de desenvolvimento de integrações entre aplicações através de um Barramento Corporativo de Serviços.
Do regresso ao progresso: automação de testes em aplicativos mobileLucas Carvalho
Palestra ministrada especialmente para o The Developer's Conference 2018 na Trilha Testes II em 19/07/2018, com conteúdo relacionado à evolução e criação de um processo de qualidade para apps, até a automação de testes voltada para o mesmo fim com utilização de JUnit + Appium.
Esta palestra, ministrada no The Developers Conference 2015 edição Porto Alegre em 25 de setembro de 2015, visa apresentar os diferentes níveis de teste dentro de uma app Android onde há exemplos de testes unitários locais e instrumentados, teste de serviços e teste na interface gráfica.
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
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)
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
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
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
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.
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.
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.
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?
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.
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.
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.
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.
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.
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”.
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.