Test Driven Development

56
TDD e Testes Software, design e sossego Saturday, August 6, 11

description

Slides da palestra sobre testes e TDD de Vinicius Quaiato para o MSTechDay de São Paulo, 2011.Esta palestra mostra os motivos pelos quais deveríamos escrever testes de unidade e automatizados e o por que deveríamos nos preocupar com isso.

Transcript of Test Driven Development

Page 1: Test Driven Development

TDD e TestesSoftware, design e sossego

Saturday, August 6, 11

Page 2: Test Driven Development

@vquaiatoprogramadorpalestrante

paisantista

entusiastaconsultor

etc, etc, etc

Saturday, August 6, 11

Page 4: Test Driven Development

vamos falar um pouco sobre testes

Saturday, August 6, 11

Page 5: Test Driven Development

agendasoftware

o que são testes

por que testar?

por que não testar?

unit tests

demo

test driven development

demo

mocks & stubs

Demo

Saturday, August 6, 11

Page 6: Test Driven Development

quem são vocês?Saturday, August 6, 11

Page 7: Test Driven Development

O que espera

m?

Por que acreditam nos testes?

Por que nunca fizeram?

Saturday, August 6, 11

Page 8: Test Driven Development

Saturday, August 6, 11

Page 9: Test Driven Development

Software dóiSaturday, August 6, 11

Page 10: Test Driven Development

Cansa bastante

Saturday, August 6, 11

Page 11: Test Driven Development

É trabalho duro

Saturday, August 6, 11

Page 12: Test Driven Development

Difícil de manter

Difícil evoluir

Bugs são persistentes

Correções geram mais bugs

Medo de mexer no código

Perda de tempo

etc, etc, etc...

Saturday, August 6, 11

Page 13: Test Driven Development

Queremos relaxarSaturday, August 6, 11

Page 14: Test Driven Development

Testes

Saturday, August 6, 11

Page 15: Test Driven Development

Forma de garantir que o software:

atende aos propósitos de negócio

funciona como esperado

Testes

Saturday, August 6, 11

Page 16: Test Driven Development

maneira verificável de garantir que o software

atende às necessidades de negócio e funciona como

esperado

Saturday, August 6, 11

Page 17: Test Driven Development

maneira verificável de garantir que o software

atende às necessidades de negócio e funciona como

esperado

Saturday, August 6, 11

Page 18: Test Driven Development

Por que testar?

Saturday, August 6, 11

Page 19: Test Driven Development

Por que me preocupar com isso?

Saturday, August 6, 11

Page 20: Test Driven Development

saber que algo funciona

Saturday, August 6, 11

Page 21: Test Driven Development

saber que algo funciona

saber que algo terminou

Saturday, August 6, 11

Page 22: Test Driven Development

saber que algo funciona

saber que algo terminou

saber que algo continuará funcionando

Saturday, August 6, 11

Page 23: Test Driven Development

saber que algo funciona

saber que algo terminou

saber que algo continuará funcionando

segurança

Saturday, August 6, 11

Page 24: Test Driven Development

saber que algo funciona

saber que algo terminou

saber que algo continuará funcionando

segurança

sossego

Saturday, August 6, 11

Page 25: Test Driven Development

Por que não testar?

Saturday, August 6, 11

Page 26: Test Driven Development

Por que não me preocupar com isso?

Saturday, August 6, 11

Page 27: Test Driven Development

testar demora

Saturday, August 6, 11

Page 28: Test Driven Development

testar demora

estamos sem tempo

Saturday, August 6, 11

Page 29: Test Driven Development

testar demora

estamos sem tempo

eu sou senior

Saturday, August 6, 11

Page 30: Test Driven Development

testar demora

estamos sem tempo

eu sou senior

assim funciona

Saturday, August 6, 11

Page 31: Test Driven Development

você só engana a você

Saturday, August 6, 11

Page 32: Test Driven Development

Unit Teststestes de unidade

Saturday, August 6, 11

Page 33: Test Driven Development

unit teststestam uma unidaderápidos de executar

independentesrepetíveis

verificáveis

Saturday, August 6, 11

Page 34: Test Driven Development

demo!

Saturday, August 6, 11

Page 35: Test Driven Development

unit tests

provém feedback quase instantâneo

auxiliam na escrita do código

está difícil testar? Refatore.

ajudam com correções/evoluções

ajudam com regressões

o que funcionava, deve continuar funcionando

Saturday, August 6, 11

Page 36: Test Driven Development

unit tests

verificáveis

sabemos de forma clara se está certo ou não

repetíveis

executamos N vezes e obtemos o mesmo resultado

executáveis

ao clique de um botão

rápidos

Saturday, August 6, 11

Page 37: Test Driven Development

Nem tudo é sobre testes

Saturday, August 6, 11

Page 38: Test Driven Development

Saturday, August 6, 11

Page 39: Test Driven Development

Test Driven Development

Saturday, August 6, 11

Page 40: Test Driven Development

Test Driven Development

Saturday, August 6, 11

Page 41: Test Driven Development

test driven

usa testes para guiar o código

testes são uma ferramenta

Saturday, August 6, 11

Page 42: Test Driven Development

test driven

escreva um teste que falhe

faça o teste passar

refatore o código

Saturday, August 6, 11

Page 43: Test Driven Development

design driven

teste atua como ferramenta

ajuda a desenhar o código

ajuda a reescrever e melhorar

Saturday, August 6, 11

Page 44: Test Driven Development

demo!

Saturday, August 6, 11

Page 45: Test Driven Development

ok, mas e o banco de dados?

Saturday, August 6, 11

Page 46: Test Driven Development

mocks & stubs

Saturday, August 6, 11

Page 47: Test Driven Development

fakes

objetos que ajudam a manter seus testes isolados

mocks e stubs são ambos tipos de fakes

Saturday, August 6, 11

Page 48: Test Driven Development

stubs

geralmente fornecem dados/estados para que os testes possam ocorrer

não são o alvo dos testes

Saturday, August 6, 11

Page 49: Test Driven Development

mocks

são “mímicos” de algum objeto

fornecem comportamento(controlado) para o teste

são o alvo do teste

Saturday, August 6, 11

Page 50: Test Driven Development

demo!

Saturday, August 6, 11

Page 51: Test Driven Development

tdd tipsnão tenha medo

pratique

leva tempo p/ ficar natural

te ajuda a enxergar o código

te ajuda a enxergar progresso

te ajuda a parar na hora certa

não desista na 1ª semana

é divertido

recompensador

incentive seus colegas

cuidado: vicia!Saturday, August 6, 11

Page 52: Test Driven Development

perguntas?

Saturday, August 6, 11

Page 53: Test Driven Development

obrigado!

Saturday, August 6, 11

Page 54: Test Driven Development

@vquaiatohttp://viniciusquaiato.com

http://crafters.com.br

[email protected]

cursos, treinamentos, consultoria

Saturday, August 6, 11

Page 55: Test Driven Development

book refs

Saturday, August 6, 11