introdução ao tdd nas soluções global appcasting
TRANSCRIPT
Introdução ao TDD nas soluções Global AppCasting
Introdução
• O que é TDD?
• Mais do que uma tarefa, um estilo de vida!
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 semacidentalmente introduzir bugs. Isso é inerente a natureza humana eprincipalmente a essa profissão.”
Fernando Franzini
Todo código é culpado até que prove sua inocência!
O teste é o que prova que aquilo que você programou realmente faz o que
você se propôs a automatizar.
TDD não é revolução. TDD é evolução!
TDD não substitui os outros métodos de controle de qualidade!
• Pair programming;
• Testes manuais;
• Revisão de código;
O que é mais importante?
1) Construir o código do teste?
2) construir o código do software?
Design up-front - tradicional
Design up-front – teste primeiro
Desenvolvimento dirigido a testes (Test DrivenDevelopment)
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 testesNessa 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!
Mão na massa...
Desafios
• Dificuldades em começar;
• Curva de aprendizado;
• Tempo;
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;
FIM
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 Developmenthttps://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 Developmenthttp://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áticohttp://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 testeshttp://www.devmedia.com.br/tdd-fundamentos-do-desenvolvimento-orientado-a-testes/28151