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

Zend Framework Estrutura e TDD

  • 1.
    Zend Framework eTDD 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 euganho com isso? • Segurança! • Acabou o medo de adicionar novas funcionalidades • Correção de bugs • Refatoração www.schoolofnet.com
  • 5.
    E o sobreo 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 ZendFramework • 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 ZendFramework • Camada de visualização • Smarty • Zend_Db • Doctrine 1/2 www.schoolofnet.com
  • 8.
    Estrutura do ZendFramework • Cache • Meta dados • Estático • Pontual • Adapters • File •APC • XCache • Memcached www.schoolofnet.com
  • 9.
    Integração do ZFe PHPUnit www.schoolofnet.com
  • 10.
    Integração do ZFe PHPUnit www.schoolofnet.com
  • 11.
    Integração do ZFe PHPUnit www.schoolofnet.com
  • 12.
    Integração do ZFe PHPUnit www.schoolofnet.com
  • 13.
    Testando Models, Controllerse Helpers Verificação da existência de módulos, controllers e actions www.schoolofnet.com
  • 14.
    Testando Models, Controllerse Helpers Simulando post e testando output www.schoolofnet.com
  • 15.
    Banco de dadosem 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