O documento discute como o Zend Framework pode ser usado com testes automatizados através do PHPUnit. Apresenta os benefícios do desenvolvimento guiado por testes (TDD), explica a estrutura do Zend Framework e como integrá-lo com o PHPUnit para testar models, controllers e helpers. Também recomenda usar um banco de dados SQLite em memória para agilizar os testes.
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
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