E você pensava que TDD era coisa de Javaneiro?
Paulo Jr@paulojribp | [email protected]
Sobre mim
● Formado em SI
● Pós em Desenvolvimento Ágil
● Instrutor e Dev na Caelum
● 10+ anos de experiência (html conta?)
Você faz teste?
Como sabemos que tudo funciona?
Mas qual tipo de teste?
de Sistema
de Integração
de Unidade
Um simples código...
Is this a zombie? o.O
Perfeito. E se testarmos algo a
mais...
● Depende de verificação detalhada do tester/dev
● Humanos não gostam de repetição
● Se mudar algo, como garantir que tudo continua
funcionando?
● Custa caro...
Desvantagens do teste manual
Fazendo testes...
Mas não queremos depender de humanos...
Agora com o teste pronto, o que
podemos fazer?
Implementa
Testa
Testa
Implementa
WTF?
Passos simples...
O teste primeiro...
Fazemos o teste passar...
Baby Steps
O teste passando, vamos melhorar...
Refatoração
Não existe mais medo...
Test-Driven Development
O que conseguimos...
- Simplicidade
- Seu código já sai testado
- Mudar é simples e barato
- Maior cobertura de testes
- Foco no negócio
TDD na Prática
Contexto: Uma empresa de mudanças deseja calcular o valor total da mudança.
Problema: Calcular o valor total de uma mudança. Para esse cálculo, temos que considerar...
TDD na PráticaICMS: Se a mudança for de um estado a outro
ISS: Se for dentro do mesmo estado
Valor do seguro dos itens: 0,8% do valor total dos itens da mudança
KM: O valor por KM rodado multiplicado pelo total de KM's
Valor Itens: A metragem cúbida dos itens * preco do metro cúbico
TDD na Prática
O valor da mudança é formado por:
1. A soma do imposto
2. Seguro dos itens
3. Km total percorrido
4. E pelo preco dos itens
Mãos à obra
1. Código macarrão - Tudo em um só lugar
2. Não respeitar OO
3. Pouca modularização da aplicação
4. A documentação deixa dúvidas de certo/errado (más práticas)
5. Frameworks nem sempre seguem padrões
Problemas específicos de testes em PHP
Leitura especializada
Como melhorar
Cursos - Online e presencial
Paulo Jr.
http://github.com/paulojribp
http://github.com/paulojribp/palestra-tdd-phpconference
Obrigado!