2. Sumário
Manifesto Ágil
O que é?
Ciclo do TDD
Vantagens
Aplicabilidade
APIs e Sistemas
Bugfixes
Sistemas Legados
Ferramentas para Testes
Caso de Uso com TDD
Bibliografia Recomendada
3. Manifesto Ágil
Indivíduos e interações > Processos e ferramentas
Software em funcionamento > Documentação abrangente
Colaboração com o cliente > Negociação de contratos
Resposta a mudanças > Seguir um plano
4. O que é?
“Escrever os testes para o código antes de escrever o
código em si”
É comum no desenvolvimento ágil
Pode ser usada em qualquer tipo de desenvolvimento, até
em pesquisas
Desenvolvimento como um processo de Aprendizado
5. O que é?
Princípios do TDD – F.I.R.S.T. Principles:
Fast – Testes devem ser executados em < 1 segundo
Isolated – Falhas são claramente isoladas
Repeatable – Comportamento constante
Self-verifying – Passa ou Falha
Timely – 1 mudança de código = 1 teste
7. Vantagens
Antecipa o comportamento do código
Reduz os custos de desenvolvimento e de
manutenção
Educa o programador a pensar e criar códigos
“limpos”
Componentes livremente acoplados
Desestimula recursos desnecessários
8. Vantagens
Desenvolvimento como um processo de
aprendizado
Aperfeiçoamento do código: Refatoração
Foco na aceitação, integração e unidade
Blindagem do código
Combate a Síndrome Nostradamus
9. Aplicabilidade
Se livrando de Bugs:
Relatório de Bug
Teste que reproduz o Bug: Fail
Correção do Bug
Execução do teste: Pass
9
10. Aplicabilidade
Sistemas Legados
Funcionalidade Duvidosa: ???
Escreva um teste para ver se você entendeu: Fail
Adapte o teste (iterativamente)
Execução do teste: Pass
Cuidado, Vá devagar
Esteja preparado para desfazer as mudanças
10
11. Aplicabilidade
Testes servem como documentação
Auxilia no design
Se adapta a qualquer metodologia de
desenvolvimento de software
11
13. Caso de Uso com TDD
Como usuário eu gostaria de me cadastrar
fornecendo: nome, email, senha, confirmação
Condição:
O usuário deve possuir uma senha válida
Ação:
Verificar se a confirmação da senha é válida, senão
enviar mensagem de erro adequada
13
25. Caso de Uso com TDD
25
Teste Passa: Fim de Caso de Uso
26. Bibliografia Recomendada
TDD – Desenvolvimento Guiado por Testes. Kent Beck
Desenvolvimento de Software Orientado a Objetos,
Guiado por Testes. Steve Freeman, Nat Pryce.
Professional Test Driven Development with C#. James
Bender, Jeff McWherter
Código Limpo (Clean Code): Habilidades Práticas do
Agile Software. Robert C Martin