TDD (Test Driven Development)

Post on 06-May-2015

1.712 views 0 download

Transcript of TDD (Test Driven Development)

DotNetArhitects Recife

“Aprendendo a fazer software”

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

Meus contatos Twitter:

http://twitter.com/felipe_pimentel Email: felipe.pimentel@ificomm.com Blog: http://fpimentel88.wordpress.com Ificomm’s blog: http://blog.ificomm.com

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

.Net Architects

Reuniões Presenciais

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

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

Chal-lenged

46%

Failed19%

Suc-cessful

35%

Software Projects

“The CHAOS Chronicles” 2006 The Standish Group

Rarely19%

Never45%

Sometimes16%

Often13%

Always7%

Software Features Used

“The CHAOS Chronicles” 2006 The Standish Group

Não sabemos fazer Software

TDD (Test Driven Development)

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

}

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

Ciclo da Morte

Impacto das mudanças e correções

(The Economic Impacts of Inadequate Infrastructure for Software Testing)

Solução: TDD

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.

TDD = Test Driven Development

(Desenvolvimento Orientado a testes)

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

Test-First Programming +Refactoring

Assegura a Qualidade de Software

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

Kent Beck)

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

Uncle Bob (Robert C.

Martin)

“Sistema sem teste dá medo!”

Giovanni Bassi.

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

Por que não usar?

“Estou sem tempo para testar!”

“Escrever testes demora muito!”

“Esse não é meu trabalho”

“Se compilou é porque está funcionando!”

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

Benefícios do TDD

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

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

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

(Giovanni Bassi)

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

extensível.”

O cliente

O desenvolvedor

Práticas e conceitos

Modularize os Testes

Baby Step

Resistindo a tentação de sair fazendo

DRY

Princípio da responsabilidade única (SRP)

You Ain`t Gonna Need It (YAGNI)

Participe de Coding Dojos

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

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

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

controle saques, depósitos e transferências.

Ferramentas: Visual Studio 2010 Resharper NUnit Moq

TDD é fácil

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/

Literaturas

Perguntas?

Obrigado!