desenvolvimento orientado a testes

70
Test-Driven Development @denisferrari

Upload: denis-ferrari

Post on 11-Jun-2015

2.437 views

Category:

Technology


12 download

TRANSCRIPT

Page 1: Desenvolvimento orientado a Testes

Test-Driven Development

@denisferrari

Page 2: Desenvolvimento orientado a Testes

UMA HISTÓRIA

Page 3: Desenvolvimento orientado a Testes

Quer fazer um projeto?

CLARO!

Page 4: Desenvolvimento orientado a Testes

ALGUM TEMPO DEPOIS:

170 Tabelas

Regras de negócio complexas

Clientes importantes

~50 UCs

De 2 para 80 Users

.NET ao extremo

Page 5: Desenvolvimento orientado a Testes

Experiência traumática

Page 6: Desenvolvimento orientado a Testes

HÉRCULES NÃO FARIA

Page 7: Desenvolvimento orientado a Testes

Durante um jantar

Page 8: Desenvolvimento orientado a Testes

Aparece uma emergência

Page 9: Desenvolvimento orientado a Testes

Durante um momento descontraído

Page 10: Desenvolvimento orientado a Testes

O SGBD não responde

Page 11: Desenvolvimento orientado a Testes

Durante uma noite de sono

Page 12: Desenvolvimento orientado a Testes

O cliente reporta um erro

Page 13: Desenvolvimento orientado a Testes

Durante sua série favorita

Page 14: Desenvolvimento orientado a Testes
Page 15: Desenvolvimento orientado a Testes

Valeu a pena?

Page 16: Desenvolvimento orientado a Testes

Pessoas se enganam

Page 17: Desenvolvimento orientado a Testes

Algo faltava…

Page 18: Desenvolvimento orientado a Testes

Vamos aprender com quem faz

Page 19: Desenvolvimento orientado a Testes

Vamos para o mercado!

Page 20: Desenvolvimento orientado a Testes

Possuem os mesmos* problemas

Page 21: Desenvolvimento orientado a Testes

Prazos curtos

Page 22: Desenvolvimento orientado a Testes

Falhas de comunicação

Page 23: Desenvolvimento orientado a Testes

Contratos rígidos

Page 24: Desenvolvimento orientado a Testes

Problemas com processos

Page 25: Desenvolvimento orientado a Testes

Previsibilidade

Page 26: Desenvolvimento orientado a Testes

Projeto castelo de cartas

Page 27: Desenvolvimento orientado a Testes

Super-homens

Page 28: Desenvolvimento orientado a Testes

Projeto castelo de areia

Page 29: Desenvolvimento orientado a Testes

Queima de dinheiro

Page 30: Desenvolvimento orientado a Testes

Stress

Page 31: Desenvolvimento orientado a Testes

Chaos Report

http://www1.standishgroup.com/newsroom/chaos_2009.php

Page 32: Desenvolvimento orientado a Testes

Começa ruim

Page 33: Desenvolvimento orientado a Testes

Depois piora

Page 34: Desenvolvimento orientado a Testes

FALTA QUALIDADE!

Page 35: Desenvolvimento orientado a Testes

Devido aos traumas do passado

Page 36: Desenvolvimento orientado a Testes
Page 37: Desenvolvimento orientado a Testes

Algumas conclusões

Excelência técnica e teórica

Equipe, comunicação

TDD & IC

Scrum & XP

DDD

Programação em par

Page 38: Desenvolvimento orientado a Testes

VISÃO GERAL SOBRE TESTES

Page 39: Desenvolvimento orientado a Testes

Espiral da morte

Page 40: Desenvolvimento orientado a Testes

TDD

Page 41: Desenvolvimento orientado a Testes

Objetivos

Page 42: Desenvolvimento orientado a Testes

Mantra

Verde

Vermelho Refatorar

Page 43: Desenvolvimento orientado a Testes

Lista de testes

Page 44: Desenvolvimento orientado a Testes

Escreva o teste

Page 45: Desenvolvimento orientado a Testes

Faça o teste passar

Page 46: Desenvolvimento orientado a Testes

Refatore o seu código

Page 47: Desenvolvimento orientado a Testes

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); }

Page 48: Desenvolvimento orientado a Testes

Passos de bebe

Page 49: Desenvolvimento orientado a Testes

10 a 15 minutos

Page 50: Desenvolvimento orientado a Testes

Noção de progresso

Page 51: Desenvolvimento orientado a Testes

Facilitar a comunicação

Page 52: Desenvolvimento orientado a Testes

Construção sustentável

Page 53: Desenvolvimento orientado a Testes

Integração contínua

Page 54: Desenvolvimento orientado a Testes

Coding Dojo

Page 55: Desenvolvimento orientado a Testes

Programação em par

Page 56: Desenvolvimento orientado a Testes

BENEFÍCIOS DO TDD

Page 57: Desenvolvimento orientado a Testes

Maior qualidade

Page 58: Desenvolvimento orientado a Testes

Menor custo

Page 59: Desenvolvimento orientado a Testes

Corte no TCO (Custo Total de Posse )

Page 60: Desenvolvimento orientado a Testes

Garante testes unitários

Page 61: Desenvolvimento orientado a Testes

Menos bugs

Page 62: Desenvolvimento orientado a Testes

Software mais desacoplado

Page 63: Desenvolvimento orientado a Testes

Especificação executável

Page 64: Desenvolvimento orientado a Testes

FERRAMENTAS P/ TDD

Page 65: Desenvolvimento orientado a Testes

Visual Studio 2010

Page 66: Desenvolvimento orientado a Testes

ALM

Page 67: Desenvolvimento orientado a Testes

NUnit

Page 68: Desenvolvimento orientado a Testes

Beck, K. Test-Driven Development by Example, Addison Wesley, 2003

Page 69: Desenvolvimento orientado a Testes
Page 70: Desenvolvimento orientado a Testes

Obrigado!

@denisferrari

www.heroisdati.com

tinyurl.com/grupomsdeves

www.minhacarreira.com

www.mindworks.com.br