desenvolvimento orientado a testes

Post on 11-Jun-2015

2.438 Views

Category:

Technology

12 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related