introdução ao tdd nas soluções global appcasting

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

Upload: pedro-pereira-martins

Post on 09-Feb-2017

24 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

Introdução

• O que é TDD?

• Mais do que uma tarefa, um estilo de vida!

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

O que é mais importante?

1) Construir o código do teste?

2) Construir o código do software?

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

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

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

Todo código é culpado até que prove sua inocência!

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

O teste é o que prova que aquilo que você programou realmente faz o que

você se propôs a automatizar.

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

TDD não é revolução. TDD é evolução!

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

TDD não substitui os outros métodos de controle de qualidade!

• Pair programming;

• Testes manuais;

• Revisão de código;

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

O que é mais importante?

1) Construir o código do teste?

2) construir o código do software?

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

Design up-front - tradicional

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

Design up-front – teste primeiro

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

Desenvolvimento dirigido a testes (Test DrivenDevelopment)

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

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.

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

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.

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

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?

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

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.

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

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!

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

Mão na massa...

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

Desafios

• Dificuldades em começar;

• Curva de aprendizado;

• Tempo;

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

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;

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

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;

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

FIM

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

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