tdd: técnicas, benefícios e limitação
TRANSCRIPT
Desenvolvimento Orientado a Testes
Benefícios, Técnicas e Limitações
quem sou eu?
Analista de Sistemas
@icarocamelo http://icarocamelo.wordpress.com
roteiro
Por que testar?O que é TDD?TécnicasRefactoringHands On!Limitações
por que testar?!
por que testar?!
•Sucesso/Fracasso do projeto•Perder Clientes•Alto Acoplamento•Escalabilidade ruim•Prejuízo financeiro
o que é TDD?
“Teste de unidade é toda aplicação de teste nas assinaturas de
entradas e saídas de um sistema, consiste em validar dados válidos e
inválidos via I/O (entrada/saída)”.
bons testes?!
•Isolado•Cobrir 100% da implementação•Executado por terceiro
desculpas comuns...
“(...) Vai demorar muito mais ” (...)
“(...) A funcionalidade é muito fácil” (...)
“(...)Não sei como testar ” (...)
“(...) Melhor deixar os testes com testadores ” (...)
o que é TDD?
“Extreme Programming is
successful because it stresses customer
satisfaction”.
o que é TDD?
Kent Beck
o que é TDD?
1. Adicione um teste que falhe
2. Faça o teste passar
3. Refatore o código
o que é TDD?
refactoring?!
Martin Fowler
refactoring?!
•Design do software•Fácil compreensão•Escrever código rapidamente•Encontrar bugs
refactoring?!
“Não é preciso ler todo o código para identificar um
código ruim”.
refactoring?!
Principle KISSDRY – Don´t Repeat Yourself
You ain´t gonna need it
Interface Segregation
Principle
Dependency InversionPrinciple
técnicas!
Baby Steps
MocksFake it!
técnicas: Babies steps!
Codificar teste unitárioTestar um comportamento por vezRefatorar
técnicas: Fake it!
Utilizar constantes
Refatorar
Confiança ao refatorar
Aspecto psicológico
ALERTA: Mais testes são
necessários
técnicas: Mock!
Versão falsa do objetoBanco de dados
o que é TDD?
“Todo código é culpado até que prove
ser inocente”.
Hands On!
limitações!
limitações!
Time não acredita na ideia
Tempo curto para o aprendizado
Psicológico do desenvolvedor
Não é possível automatizar testes
Outros Testes?!
Testes de IntegraçãoTestes SistêmicosTestes de Aceitação
dúvidas?!