tdd do seu jeito

24
TDD do seu jeito Israel Teixeira @israelst mudadeideia.com.br Rodolfo Carvalho @201 rodolfocarvalho.net

Upload: rhcarvalho

Post on 18-Dec-2014

989 views

Category:

Technology


3 download

DESCRIPTION

Palestra apresentada em 02/07/2011 no FISL12.

TRANSCRIPT

TDD do seu jeito

Israel Teixeira @israelst mudadeideia.com.br

Rodolfo Carvalho @201 rodolfocarvalho.net

http://dojorio.org

Sobre o que vamos falar hoje

TDD

=

Test-Driven Development

=

Desenvolvimento Guiado por Testes

Preparando uma palestra

sobre TDD

O que é TDD

• Técnica e boa prática de desenvolvimento desoftware

Fluxo de desenvolvimento tradicional

Design

Code

Test

O que é TDD

• Técnica e boa prática de desenvolvimento desoftware

Com TDD

Design Test

Test Code

Refactor

O que é TDD

• Técnica e boa prática de desenvolvimento desoftware

Design Code Test

x

Design Test

Test Code

Refactor

Design Test

Test Code

Refactor

Design Test

Test Code

Refactor

...

tempo

Exemplo: Caixa Eletrônico

1. Escrever um teste

class CashMachineTests(unittest.TestCase):

def test_draw_10_bucks(self):

machine = CashMachine()

self.assertEqual(machine.draw(10), [10])

Exemplo: Caixa Eletrônico

2. Executar os testes e ver o novo teste falhar(vermelho)

E

======================================================================

ERROR: test_draw_10_bucks (__main__.CashMachineTests)

----------------------------------------------------------------------

Traceback (most recent call last):

File "./cash_machine.py", line 6, in test_draw_10_bucks

machine = CashMachine()

NameError: global name 'CashMachine' is not defined

Exemplo: Caixa Eletrônico

3. Implementar código suficiente para passar nostestes

class CashMachine:

def draw(self, amount):

return [amount]

Exemplo: Caixa Eletrônico

4. Executar os testes e ver todos passarem (verde)

.

----------------------------------------------------------------------

Ran 1 test in 0.000s

OK

Exemplo: Caixa Eletrônico

5. Refatorar

class CashMachine:

def draw(self, amount):

return [amount]

class CashMachine:

def draw(self, amount):

bills = [amount]

return bills

Exemplo: Caixa Eletrônico

6. Executar os testes e garantir que todoscontinuam passando

.

----------------------------------------------------------------------

Ran 1 test in 0.000s

OK

TDD é uma das formas de

desenvolver software

TDD != 42

Guiando o processo

http://www.flickr.com/photos/fallenidol/1234034423

Intenção, avaliação, e feedback

“No término de um trabalho, a avaliação égeralmente considerada uma operação óbvia, vistapor qualquer ser sensato como legítima edesejável.”

Christophe Dejours

Por que TDD como metologia?

• TDD faz com que você reflita sobre o processo.

• 40% a 90% menos erros.

Nagappan, Maximilien, Bhat e Williams. 2008.http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf

TDD

• Ajuda a:

Programar por intenção

Evitar a "síndrome da tela em branco"

TDD

101010

010101

TDD

• Ajuda a:

Programar por intenção

Evitar a "síndrome da tela em branco"

Reduzir a quantidade de bugs

Documentar o código

Rede de segurança contra regressões

...

O excesso de design prévio

https://picasaweb.google.com/rhcarvalho/Dojo25NaLapa http://bit.ly/kKEKAc

Conclusões

• TDD não se aplica em todos os contextos

• Use TDD com sabedoria para guiar odesenvolvimento

• Faça design iterativo

• Não faça design prévio em excesso

?Perguntas

Avisos

Coding Dojo

• Quando: hoje, a partir de 15:00

• Onde: stand da globo.com

• No Rio de Janeiro:

http://dojorio.org/onde