SlideShare uma empresa Scribd logo
Zend Framework e TDD




      Zend Framework - Desenvolvimento guiado por testes
                       #phpdaycuritiba



Wesley Willians
@wesleywillians

                                                   www.schoolofnet.com
Agenda


  •   Um pouco sobre TDD

  •   Estrutura do Zend Framework

  •   Integração do ZF com o PHPUnit

  •   Testando Models, Controllers e Helpers

  •   Banco de dados em memória




                                               www.schoolofnet.com
Sobre testes

  • Teste de software
   • Executar algum programa a ser testado com algum input e visualmente
       verificar os resultados.

  • Testes automatizados
   • Script executável que o programa a ser testado verifica automaticamente
       os resultados obtidos.

    • Testar != Depurar
     • Testar = Verificar existência de erros
     • Depurar = Seguir um fluxo dentro do programa para encontrar um
         erro conhecido.
                                                              www.schoolofnet.com
O que eu ganho com isso?


  • Segurança!
   • Acabou o medo de adicionar novas funcionalidades
   • Correção de bugs
   • Refatoração




                                                        www.schoolofnet.com
E o sobre o TDD?

  •   TDD = Desenvolvimento guiado por testes

      •   Criar o teste

      •   O teste deverá falhar

      •   Criar o programa para fazer o teste passar da forma mais rápida possível

      •   Refatorar!




                                                                    www.schoolofnet.com
Estrutura do Zend Framework

                   • Conjunto de classes/bibliotecas
                   • Possibilidade de trabalhar de forma desacoplada
                   • Estrutura das aplicações normalmente são MVC
                   • Aplicação não fica disponível para web
                   • DbTable vs Models
                   • Bootstrap de inicialização
                   • Geração estrutural de código com Zend Tool




                                                            www.schoolofnet.com
Estrutura do Zend Framework

• Camada de visualização
  • Smarty

• Zend_Db
  • Doctrine 1/2




                              www.schoolofnet.com
Estrutura do Zend Framework
• Cache
  • Meta dados
  • Estático
  • Pontual
  • Adapters
    • File
    •APC
    • XCache
    • Memcached




                              www.schoolofnet.com
Integração do ZF e PHPUnit




                             www.schoolofnet.com
Integração do ZF e PHPUnit




                             www.schoolofnet.com
Integração do ZF e PHPUnit




                             www.schoolofnet.com
Integração do ZF e PHPUnit




                             www.schoolofnet.com
Testando Models, Controllers e Helpers

Verificação da existência de módulos, controllers e actions




                                                         www.schoolofnet.com
Testando Models, Controllers e Helpers

Simulando post e testando output




                                         www.schoolofnet.com
Banco de dados em memória
A quantidade de testes e as interações com banco podem deixar a
execução dos testes extremamente lenta.




Trabalhar com o pdo_sqlite em memória pode agilizar a execução
dos testes em até 2/3.



                                                      www.schoolofnet.com
Obrigado!



            Alguma dúvida??




                              www.schoolofnet.com

Mais conteúdo relacionado

Mais procurados

Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
Mayara Fernandes
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
alinebiath
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
Rafael Fuchs, PMP, MBA
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
Paulo Igor Alves Godinho
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
Mayara Fernandes
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Renato Groff
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
Claudenir Freitas
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
Rangel Javier
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Luís Cobucci
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
Kleber Bernardo
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
Rafaela Prado
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
Júlio de Lima
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi
 
Automatizando seus testes com Robot Framework
Automatizando seus testes com Robot FrameworkAutomatizando seus testes com Robot Framework
Automatizando seus testes com Robot Framework
Claudenir Freitas
 
Testes Automatizados No Cakephp
Testes Automatizados No CakephpTestes Automatizados No Cakephp
Testes Automatizados No Cakephp
João José Pedrini
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
Henrique Gogó
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
Heider Lopes
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
Paula Grangeiro
 

Mais procurados (20)

Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
TDD na Prática
TDD na PráticaTDD na Prática
TDD na Prática
 
TDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVATDD - Test Driven Development com JAVA
TDD - Test Driven Development com JAVA
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Apresentação jasmine
Apresentação jasmineApresentação jasmine
Apresentação jasmine
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Test-Driven Develpment - TDD
Test-Driven Develpment - TDDTest-Driven Develpment - TDD
Test-Driven Develpment - TDD
 
TDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao testeTDD Desenvolvimento orientado ao teste
TDD Desenvolvimento orientado ao teste
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
Automatizando seus testes com Robot Framework
Automatizando seus testes com Robot FrameworkAutomatizando seus testes com Robot Framework
Automatizando seus testes com Robot Framework
 
Testes Automatizados No Cakephp
Testes Automatizados No CakephpTestes Automatizados No Cakephp
Testes Automatizados No Cakephp
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 

Semelhante a Zend Framework Estrutura e TDD

Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Thiago Sinésio
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
Domingos Teruel
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
Flávio Lisboa
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
Jonata Weber
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
Marcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Tchelinux
 
Palestra na Faccat sobre o Zeanwork
Palestra na Faccat sobre o ZeanworkPalestra na Faccat sobre o Zeanwork
Palestra na Faccat sobre o Zeanwork
Josemar Davi Luedke
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
J0071
 
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Douglas Fischer
 
Maven 2
Maven 2Maven 2
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
eduardohabib
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
José Alexandre Macedo
 
Frameworks PHP @edgarsandi
Frameworks PHP @edgarsandiFrameworks PHP @edgarsandi
Frameworks PHP @edgarsandi
Edgar Rodrigues Sandi
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
Edgar Dantas
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
Paulo Mattos
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Alexandre Tarifa
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
JugVale
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
Wellington Marion
 

Semelhante a Zend Framework Estrutura e TDD (20)

Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
 
Curso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – FrameworksCurso PHP UNIFACS 2014.1 – Frameworks
Curso PHP UNIFACS 2014.1 – Frameworks
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Palestra na Faccat sobre o Zeanwork
Palestra na Faccat sobre o ZeanworkPalestra na Faccat sobre o Zeanwork
Palestra na Faccat sobre o Zeanwork
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
Cocoaheads RJ - Como você faz? (Douglas Fischer - 26/03/2015)
 
Maven 2
Maven 2Maven 2
Maven 2
 
01 aula1 habib
01 aula1 habib01 aula1 habib
01 aula1 habib
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Frameworks PHP @edgarsandi
Frameworks PHP @edgarsandiFrameworks PHP @edgarsandi
Frameworks PHP @edgarsandi
 
Projetos Java com Maven
Projetos Java com MavenProjetos Java com Maven
Projetos Java com Maven
 
Web Tools Pt Br
Web Tools Pt BrWeb Tools Pt Br
Web Tools Pt Br
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Maven: Introdução
Maven: IntroduçãoMaven: Introdução
Maven: Introdução
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
 

Zend Framework Estrutura e TDD

  • 1. Zend Framework e TDD Zend Framework - Desenvolvimento guiado por testes #phpdaycuritiba Wesley Willians @wesleywillians www.schoolofnet.com
  • 2. Agenda • Um pouco sobre TDD • Estrutura do Zend Framework • Integração do ZF com o PHPUnit • Testando Models, Controllers e Helpers • Banco de dados em memória www.schoolofnet.com
  • 3. Sobre testes • Teste de software • Executar algum programa a ser testado com algum input e visualmente verificar os resultados. • Testes automatizados • Script executável que o programa a ser testado verifica automaticamente os resultados obtidos. • Testar != Depurar • Testar = Verificar existência de erros • Depurar = Seguir um fluxo dentro do programa para encontrar um erro conhecido. www.schoolofnet.com
  • 4. O que eu ganho com isso? • Segurança! • Acabou o medo de adicionar novas funcionalidades • Correção de bugs • Refatoração www.schoolofnet.com
  • 5. E o sobre o TDD? • TDD = Desenvolvimento guiado por testes • Criar o teste • O teste deverá falhar • Criar o programa para fazer o teste passar da forma mais rápida possível • Refatorar! www.schoolofnet.com
  • 6. Estrutura do Zend Framework • Conjunto de classes/bibliotecas • Possibilidade de trabalhar de forma desacoplada • Estrutura das aplicações normalmente são MVC • Aplicação não fica disponível para web • DbTable vs Models • Bootstrap de inicialização • Geração estrutural de código com Zend Tool www.schoolofnet.com
  • 7. Estrutura do Zend Framework • Camada de visualização • Smarty • Zend_Db • Doctrine 1/2 www.schoolofnet.com
  • 8. Estrutura do Zend Framework • Cache • Meta dados • Estático • Pontual • Adapters • File •APC • XCache • Memcached www.schoolofnet.com
  • 9. Integração do ZF e PHPUnit www.schoolofnet.com
  • 10. Integração do ZF e PHPUnit www.schoolofnet.com
  • 11. Integração do ZF e PHPUnit www.schoolofnet.com
  • 12. Integração do ZF e PHPUnit www.schoolofnet.com
  • 13. Testando Models, Controllers e Helpers Verificação da existência de módulos, controllers e actions www.schoolofnet.com
  • 14. Testando Models, Controllers e Helpers Simulando post e testando output www.schoolofnet.com
  • 15. Banco de dados em memória A quantidade de testes e as interações com banco podem deixar a execução dos testes extremamente lenta. Trabalhar com o pdo_sqlite em memória pode agilizar a execução dos testes em até 2/3. www.schoolofnet.com
  • 16. Obrigado! Alguma dúvida?? www.schoolofnet.com