O que é mais importante?
1) Construir o código do teste?
2) Construir o código do software?
Dissonância cognitiva
“Você sendo um ser humano é naturalmente incapaz de programar sem
acidentalmente introduzir bugs. Isso é inerente a natureza humana e
principalmente a essa profissão.”
Fernando Franzini
Passo a passo
1. Adicionar um teste;
2. Executar todos os testes;
Seu teste ira falhar!
3. Modificar ou criar pequenas coisas no código;
4. Executar todos os testes
Nessa etapa todos os testes devem passar!
Se não passarem, volte ao passo 3.
5. Refatorar o código;
6. Executar todos testes
Nessa etapa todos os testes devem passar!
Se não passarem, volte ao passo 5.
Escrevendo um teste
• Onde começar?
Teste mais simples.
• Como começar?
Assertion mais óbvia.
• Então:
Testes e assertions que ajudam a entender outros testes.
Tipos comuns de testes aplicados
• Testes de unidade;
• Isto faz o que se espera?
• Testes de integração;
• Estão funcionando juntos como se espera?
• Testes de regressão;
• Essa modificação interfere algum dos itens acima em relação ao que já esta
pronto?
TDD e metodologia ágil
• Errado: Prever/Escrever um código/design para modificar no futuro
quando precisarmos.
• Correto: Escrever um código simples e claro, que seja fácil modificar e
seguro.
TDD e metodologia ágil
KISS (Keep it simple stupid):
• Como conseguimos um código simples?
Fazendo um Teste passar!
• Como conseguimos um código claro?
Refatorando o código após ele passar!
• Como conseguimos um código seguro?
Com Testes!
Benefícios
• Primeiro foco no teste, depois na implementação;
• Código “nasce” testado;
• Feedback rápido;
• Qualidade do código;
• O teste é uma documentação;
• Redução do tempo gasto com debugging;
Limitações e pontos de ponderação
• Suporte gerencial obrigatório;
• Manutenção do projeto;
• Alto nível de cobertura e detalhamento se torna mais difícil de ser
alcançado quando se inicia o TDD em data tardia;
• Lacunas inesperadas na cobertura de teste;
• Alta dependência da especificação de requisitos;
Referências bibliográficas
• How to implement TDD ( Test driven development ) in c# (Csharp) using VSTS unit testing?
https://www.youtube.com/watch?v=5gMBGVNR8wE&list=PLcAWxGgex55V8w4YQfIQW-4g8wslwh0Xs
• Introduction to Test Driven Development (TDD) in .NET
https://www.youtube.com/watch?v=7ttVXhUkN3c
• Test Driven Development
https://pt.wikipedia.org/wiki/Test_Driven_Development
• Test Driven Development (TDD) para seres humanos
http://www.slideshare.net/RmuloSantos9/test-driven-development-tdd-para-seres-
humanos?ref=https://www.linkedin.com/
• TDD - Test Driven Development
http://pt.slideshare.net/elias.nogueira/tdd-test-driven-development-16315314
• TDD: Mais uma tarefa ou um estilo de vida?
http://infobase.com.br/tdd-mais-uma-tarefa-ou-um-estilo-de-vida/
• Test Driven Development: TDD simples e prático
http://www.devmedia.com.br/test-driven-development-tdd-simples-e-pratico/18533
• TDD, por que usar?
https://tableless.com.br/tdd-por-que-usar/
• TDD: fundamentos do desenvolvimento orientado a testes
http://www.devmedia.com.br/tdd-fundamentos-do-desenvolvimento-orientado-a-testes/28151