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 sem
acidentalmente introduzir bugs. Isso é inerente a natureza humana e
principalmente 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 Driven
Development)
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!
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 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

Introdução ao TDD nas soluções Global AppCasting

  • 1.
    Introdução ao TDDnas soluções Global AppCasting
  • 2.
    Introdução • O queé TDD? • Mais do que uma tarefa, um estilo de vida!
  • 3.
    O que émais importante? 1) Construir o código do teste? 2) Construir o código do software?
  • 4.
    Dissonância cognitiva “Você sendoum ser humano é naturalmente incapaz de programar sem acidentalmente introduzir bugs. Isso é inerente a natureza humana e principalmente a essa profissão.” Fernando Franzini
  • 5.
    Todo código éculpado até que prove sua inocência!
  • 6.
    O teste éo que prova que aquilo que você programou realmente faz o que você se propôs a automatizar.
  • 7.
    TDD não érevolução. TDD é evolução!
  • 8.
    TDD não substituios outros métodos de controle de qualidade! • Pair programming; • Testes manuais; • Revisão de código;
  • 9.
    O que émais importante? 1) Construir o código do teste? 2) construir o código do software?
  • 10.
    Design up-front -tradicional
  • 11.
    Design up-front –teste primeiro
  • 12.
    Desenvolvimento dirigido atestes (Test Driven Development)
  • 13.
    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.
  • 14.
    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.
  • 15.
    Tipos comuns detestes 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?
  • 16.
    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.
  • 17.
    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!
  • 18.
  • 19.
    Desafios • Dificuldades emcomeçar; • Curva de aprendizado; • Tempo;
  • 20.
    Benefícios • Primeiro focono 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;
  • 21.
    Limitações e pontosde 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;
  • 22.
  • 23.
    Referências bibliográficas • Howto 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