Post on 27-Jun-2015
www.schoolofnet.com
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.