TDD (Test Driven Development)

64
DotNetArhitects Recife “Aprendendo a fazer software”

Transcript of TDD (Test Driven Development)

Page 1: TDD (Test Driven Development)

DotNetArhitects Recife

“Aprendendo a fazer software”

Page 2: TDD (Test Driven Development)

Quem sou? Felipe Pimentel MCP, MCTS ASP.NET 2.0, MCTS ASP.NET

3.5, MCTS WPF Sócio e fundador da Ificomm Tecnologia Arquiteto e consultor. Ministra palestras e treinamentos. Escreve artigos para o DevMedia

Page 3: TDD (Test Driven Development)

Meus contatos Twitter:

http://twitter.com/felipe_pimentel Email: [email protected] Blog: http://fpimentel88.wordpress.com Ificomm’s blog: http://blog.ificomm.com

Page 4: TDD (Test Driven Development)

E vocês? Nome Experiência Profissional Área de interesse

Page 5: TDD (Test Driven Development)

.Net Architects

Page 6: TDD (Test Driven Development)

Reuniões Presenciais

Page 7: TDD (Test Driven Development)

Grupo na Web http://groups.google.com/group/dotneta

rchitects http://dotnetarchitects.net/ http://dojo.dotnetarchitects.net/

Page 8: TDD (Test Driven Development)
Page 9: TDD (Test Driven Development)

Chal-lenged

46%

Failed19%

Suc-cessful

35%

Software Projects

“The CHAOS Chronicles” 2006 The Standish Group

Page 10: TDD (Test Driven Development)

Rarely19%

Never45%

Sometimes16%

Often13%

Always7%

Software Features Used

“The CHAOS Chronicles” 2006 The Standish Group

Page 11: TDD (Test Driven Development)

Não sabemos fazer Software

Page 12: TDD (Test Driven Development)

TDD (Test Driven Development)

Page 13: TDD (Test Driven Development)

String[] agendaDoDia = new[] {“Cenário Atual”,“O que é TDD?”,”Para que TDD?”,”Benefícios”,”Dificuldades”,”Demo. Demo. Demo...”

}

Page 14: TDD (Test Driven Development)

Códigos ruins Bugs Difícil Manutenção Produtividade baixa

Page 15: TDD (Test Driven Development)

Ciclo da Morte

Page 16: TDD (Test Driven Development)

Impacto das mudanças e correções

(The Economic Impacts of Inadequate Infrastructure for Software Testing)

Page 17: TDD (Test Driven Development)
Page 18: TDD (Test Driven Development)
Page 19: TDD (Test Driven Development)
Page 20: TDD (Test Driven Development)

Solução: TDD

Page 21: TDD (Test Driven Development)

O que NÃO é TDD? TDD != Unit Test Não é um método para TESTAR software Não é limitado Não é Teste de caixa preta, caixa

branca, caixa cinza ou regressão.

Page 22: TDD (Test Driven Development)

TDD = Test Driven Development

(Desenvolvimento Orientado a testes)

Page 23: TDD (Test Driven Development)

“Técnica de desenvolvimento cujo processo é formado por pequenas iterações. Onde os testes são codificados primeiro.”

Page 24: TDD (Test Driven Development)
Page 25: TDD (Test Driven Development)

Test-First Programming +Refactoring

Page 26: TDD (Test Driven Development)
Page 27: TDD (Test Driven Development)
Page 28: TDD (Test Driven Development)

Assegura a Qualidade de Software

Page 29: TDD (Test Driven Development)

“Clean code that works”(Test Driven Development By Example,

Kent Beck)

Page 30: TDD (Test Driven Development)

“Desenvolvedor que não testa é como um cirurgião que não lava as mãos”

Uncle Bob (Robert C.

Martin)

Page 31: TDD (Test Driven Development)

“Sistema sem teste dá medo!”

Giovanni Bassi.

Page 32: TDD (Test Driven Development)

“Código sem teste, é código legado”

Page 33: TDD (Test Driven Development)

Por que não usar?

Page 34: TDD (Test Driven Development)

“Estou sem tempo para testar!”

Page 35: TDD (Test Driven Development)

“Escrever testes demora muito!”

Page 36: TDD (Test Driven Development)

“Esse não é meu trabalho”

Page 37: TDD (Test Driven Development)

“Se compilou é porque está funcionando!”

Page 38: TDD (Test Driven Development)

“Testar é caro, não testar é mais caro ainda!” (Giovanni Bassi)

Page 39: TDD (Test Driven Development)

Benefícios do TDD

Page 40: TDD (Test Driven Development)

“Garante a existência de testes unitários completos e atualizados”

Page 41: TDD (Test Driven Development)

“Diminui a quantidade de erros por linha de código ”

Page 42: TDD (Test Driven Development)

“Testes unitários são documentações executáveis”

(Giovanni Bassi)

Page 43: TDD (Test Driven Development)

“Direciona projeto a ser mais desacoplado, flexível, modular, métodos coesos e

extensível.”

Page 44: TDD (Test Driven Development)

O cliente

Page 45: TDD (Test Driven Development)

O desenvolvedor

Page 46: TDD (Test Driven Development)

Práticas e conceitos

Page 47: TDD (Test Driven Development)
Page 48: TDD (Test Driven Development)

Modularize os Testes

Page 49: TDD (Test Driven Development)
Page 50: TDD (Test Driven Development)

Baby Step

Page 51: TDD (Test Driven Development)

Resistindo a tentação de sair fazendo

Page 52: TDD (Test Driven Development)
Page 53: TDD (Test Driven Development)

DRY

Page 54: TDD (Test Driven Development)

Princípio da responsabilidade única (SRP)

Page 55: TDD (Test Driven Development)

You Ain`t Gonna Need It (YAGNI)

Page 56: TDD (Test Driven Development)

Participe de Coding Dojos

Page 57: TDD (Test Driven Development)

Demo 1!!!! Desenvolver uma calculadora basica que

contem operações de divisão, multiplicação, subtraçaõ e adição de inteiros

Ferramentas: Visual Studio 2010 Resharper MSUnit

Page 58: TDD (Test Driven Development)

Demo 2!!!! FizzBuzz

Caso o número seja divisível por 3, deve dizer: “Fizz”

Caso o número seja divisível por 5, deve dizer: “Buzz”

Caso seja divisível por 3 e 5, deve dizer: “FizzBuzz”

Ferramentas: Visual Studio 2010 Resharper MSUnit

Page 59: TDD (Test Driven Development)

Demo 3!!!! Desenvolver uma aplicação bancária que

controle saques, depósitos e transferências.

Ferramentas: Visual Studio 2010 Resharper NUnit Moq

Page 60: TDD (Test Driven Development)

TDD é fácil

Page 61: TDD (Test Driven Development)

Links http://www.codeplex.com/wikipage?

ProjectName=xunit&title=Comparisons http://unplugged.giggio.net/ http://www.infoq.com/br/news/2009/03/TDD-Im

proves-Quality http://www.infoq.com/br/articles/levison-TDD-a

doption-strategy http://danieltamiosso.com/2009/05/06/o-impac

to-de-tdd-no-design/ http://www.diogomafra.com.br/2009/09/introdu

cao-ao-tdd_24.html http://www.infoq.com/br/news/2009/11/uncle-b

ob-tdd-applicability http://www.superexpert.com/ http://blogs.southworks.net/dschenkelman/ http://www.heroisdati.com/

Page 62: TDD (Test Driven Development)

Literaturas

Page 63: TDD (Test Driven Development)

Perguntas?

Page 64: TDD (Test Driven Development)

Obrigado!