1. O documento discute a técnica de desenvolvimento guiado por testes (TDD) e fornece um exemplo de como implementá-la usando um caixa eletrônico.
2. TDD envolve escrever testes antes de escrever código para guiar o desenvolvimento e garantir que o código funcione conforme esperado.
3. O exemplo mostra como escrever um teste para retirar dinheiro, falhar inicialmente, implementar código para fazer o teste passar, refatorar o código e garantir que os testes continuem passando.
5. O que é TDD
• Técnica e boa prática de desenvolvimento de
software
Fluxo de desenvolvimento tradicional
Design
Code
Test
6. O que é TDD
• Técnica e boa prática de desenvolvimento de
software
Com TDD
Design Test
Test Code
Refactor
7. O que é TDD
• Técnica e boa prática de desenvolvimento de
software
Design Code Test
x
Design Test Design Test Design Test
Test Code Test Code Test Code ...
Refactor Refactor Refactor
tempo
8. 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])
9. 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
10. Exemplo: Caixa Eletrônico
3. Implementar código suficiente para passar nos
testes
class CashMachine:
def draw(self, amount):
return [amount]
11. Exemplo: Caixa Eletrônico
4. Executar os testes e ver todos passarem (verde)
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
13. Exemplo: Caixa Eletrônico
6. Executar os testes e garantir que todos
continuam passando
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
14. TDD é uma das formas de
desenvolver software
TDD != 42
16. Intenção, avaliação, e feedback
“No término de um trabalho, a avaliação é
geralmente considerada uma operação óbvia, vista
por qualquer ser sensato como legítima e
desejável.”
Christophe Dejours
17. 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
18. TDD
• Ajuda a:
Programar por intenção
Evitar a "síndrome da tela em branco"
20. 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
...
21. O excesso de design prévio
https://picasaweb.google.com/rhcarvalho/Dojo25NaLapa http://bit.ly/kKEKAc
22. Conclusões
• TDD não se aplica em todos os contextos
• Use TDD com sabedoria para guiar o
desenvolvimento
• Faça design iterativo
• Não faça design prévio em excesso