Test-Driven Development@denisferrari
UMA HISTÓRIA
Querfazer um projeto?CLARO!
ALGUM TEMPO DEPOIS:.NET aoextremoDe 2 para 80 Users~50 UCsClientesimportantesRegras de negóciocomplexas170 Tabelas
Experiênciatraumática
HÉRCULES NÃO FARIA
Durante um jantar
Apareceumaemergência
Durante um momentodescontraído
O SGBD nãoresponde
Durante umanoite de sono
O clientereporta um erro
Durante suasériefavorita
Valeu a pena?
Pessoas se enganam
Algofaltava…
Vamosaprender com quemfaz
Vamospara o mercado!
Possuemosmesmos*problemas
Prazoscurtos
Falhas de comunicação
Contratosrígidos
Problemas com processos
Previsibilidade
Projetocastelo de cartas
Super-homens
Projetocastelo de areia
Queima de dinheiro
Stress
ChaosReporthttp://www1.standishgroup.com/newsroom/chaos_2009.php
Começaruim
Depoispiora
FALTA QUALIDADE!
Devidoaos traumas do passado
AlgumasconclusõesProgramaçãoem parDDDScrum & XPTDD & ICEquipe, comunicaçãoExcelênciatécnica e teórica
VISÃO GERAL SOBRE TESTES
Espiraldamorte
TDD
Objetivos
MantraVerdeVermelhoRefatorar
Lista de testes
Escreva o teste
Faça o testepassar
Refatore o seucódigo
ExemploExemplo: Testar o envio da string “Mindworks” através de um socket.publicvoidTestarComunicacaoSocket()        {Assert.IsTrue(readerSocket.Close());Assert.AreEqual(“Mindworks”, buf);        }publicvoidTestarComunicacaoSocket()        {                string buf = reader.Contents();Assert.IsTrue(readerSocket.Close());Assert.AreEqual(“Mindworks”, buf);        }publicvoidTestarComunicacaoSocket()        {SocketreaderSocket = newSocket(“localhost”, 8080);                string buf = reader.Contents();Assert.IsTrue(readerSocket.Close());Assert.AreEqual(“Mindworks”, buf);        }publicvoidTestarComunicacaoSocket()        {                Server server = new Server(8080, “”Mindworks”);SocketreaderSocket = newSocket(“localhost”, 8080);                string buf = reader.Contents();Assert.IsTrue(readerSocket.Close());Assert.AreEqual(“Mindworks”, buf);        }
Passos de bebe
10 a 15 minutos
Noção de progresso
Facilitar a comunicação
Construçãosustentável
Integraçãocontínua
Coding Dojo
Programaçãoem par
BENEFÍCIOS DO TDD
Maiorqualidade
Menorcusto
Corte no TCO (Custo Total de Posse )
Garante testes unitários
Menos bugs
Software maisdesacoplado
Especificaçãoexecutável
FERRAMENTAS P/ TDD
Visual Studio 2010
ALM
NUnit
Beck, K. Test-Driven Development by Example, Addison Wesley, 2003
Obrigado!@denisferrariwww.heroisdati.comtinyurl.com/grupomsdeveswww.minhacarreira.comwww.mindworks.com.br

Desenvolvimento orientado a Testes