TDD: Not sure if
testing or developing
   Real World Django Talks
$ whoami




                       Renato Oliveira
           Researcher @ GPRT - UFPE
              renato@labcodes.com.br
              github.com/renatooliveira
                      @_renatooliveira
Real World Django Talks! pt 2/...
Renato Oliveira




Filipe Ximenes
TDD




  Test-driven development
Oh, wait!
"Ciência da computação tem tanto a ver com o
computador como a Astronomia com o
telescópio, a Biologia com o microscópio, ou a
Química com os tubos de ensaio."
                       Edsger Dijkstra
"TDD tem tanto a ver sobre testes quanto a
Ciência da computação tem a ver sobre
computadores!"
                          Unknown!
TDD




Processo de desenvolvimento de software que
se baseia na repetição de um ciclo curto de
repetições:
Escreva um teste automatizado que define a
melhoria ou nova funcionalidade desejada.
O teste falha.
Escreva a menor quantidade de
 código para passar no teste.
O teste passa.
Refatore o código!
Ok, isto deixa o processo de
desenvolvimento um pouco lento...
Para quem não está acostumado com
      TDD, fica bastante lento!
Mas com a prática, o overhead diminui e só
            fica a parte boa!
Refactoring!



Refatoração é alterar o código sem alterar sua
funcionalidade.
   - Removendo duplicação
   - Melhorar design do código
   - Remover smells.
Refactoring!




 Refatoração sem testes pode se tornar um
                pesadelo
Mas refactoring é um assunto pra uma
          próxima palestra!
Testes
Prós
   - Asseguram uma qualidade maior no código
   - Garante que o sistema continue
funcionando após mudanças

Contra
  - Não garantem que o código é "Bug free"
  - Pequeno aumento no tempo de
desenvolvimento
Testes em python




            Doctest
Testes em python




            Unittest
TDD com Django




Quando uma app é criada o arquivo tests.py é
          criado dentro dela...
TDD com Django




     Você já deu uma olhada nele?
TDD com Django




        Show me some code!

Tdd not sure if testing or developing