TDD do seu jeito
-
Upload
rhcarvalho -
Category
Technology
-
view
989 -
download
3
description
Transcript of TDD do seu jeito
TDD do seu jeito
Israel Teixeira @israelst mudadeideia.com.br
Rodolfo Carvalho @201 rodolfocarvalho.net
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
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"
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