Desenvolvimento orientado a Testes
-
Upload
denis-ferrari -
Category
Technology
-
view
2.441 -
download
12
Transcript of Desenvolvimento orientado a Testes
Test-Driven Development
@denisferrari
UMA HISTÓRIA
Quer fazer um projeto?
CLARO!
ALGUM TEMPO DEPOIS:
170 Tabelas
Regras de negócio complexas
Clientes importantes
~50 UCs
De 2 para 80 Users
.NET ao extremo
Experiência traumática
HÉRCULES NÃO FARIA
Durante um jantar
Aparece uma emergência
Durante um momento descontraído
O SGBD não responde
Durante uma noite de sono
O cliente reporta um erro
Durante sua série favorita
Valeu a pena?
Pessoas se enganam
Algo faltava…
Vamos aprender com quem faz
Vamos para o mercado!
Possuem os mesmos* problemas
Prazos curtos
Falhas de comunicação
Contratos rígidos
Problemas com processos
Previsibilidade
Projeto castelo de cartas
Super-homens
Projeto castelo de areia
Queima de dinheiro
Stress
Chaos Report
http://www1.standishgroup.com/newsroom/chaos_2009.php
Começa ruim
Depois piora
FALTA QUALIDADE!
Devido aos traumas do passado
Algumas conclusões
Excelência técnica e teórica
Equipe, comunicação
TDD & IC
Scrum & XP
DDD
Programação em par
VISÃO GERAL SOBRE TESTES
Espiral da morte
TDD
Objetivos
Mantra
Verde
Vermelho Refatorar
Lista de testes
Escreva o teste
Faça o teste passar
Refatore o seu código
Exemplo
• Exemplo: Testar o envio da string “Mindworks” através de um socket.
public void TestarComunicacaoSocket() {
Assert.IsTrue(readerSocket.Close()); Assert.AreEqual(“Mindworks”, buf); }
public void TestarComunicacaoSocket() { string buf = reader.Contents();
Assert.IsTrue(readerSocket.Close()); Assert.AreEqual(“Mindworks”, buf); }
public void TestarComunicacaoSocket() { Socket readerSocket = new Socket(“localhost”, 8080); string buf = reader.Contents();
Assert.IsTrue(readerSocket.Close()); Assert.AreEqual(“Mindworks”, buf); }
public void TestarComunicacaoSocket() { Server server = new Server(8080, “”Mindworks”); Socket readerSocket = new Socket(“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ção sustentável
Integração contínua
Coding Dojo
Programação em par
BENEFÍCIOS DO TDD
Maior qualidade
Menor custo
Corte no TCO (Custo Total de Posse )
Garante testes unitários
Menos bugs
Software mais desacoplado
Especificação executável
FERRAMENTAS P/ TDD
Visual Studio 2010
ALM
NUnit
Beck, K. Test-Driven Development by Example, Addison Wesley, 2003
Obrigado!
@denisferrari
www.heroisdati.com
tinyurl.com/grupomsdeves
www.minhacarreira.com
www.mindworks.com.br