`
linguagem` `
topico` `
nome`TDD `
` `
titulo`TDD`
` `
descritor`apoie, apoie.org, PAM, mutirão, produzir, aprender, simplificar, inovar, pesquisar , TDD individual`
` `
lead`TDD desenvolvimento de programa dirigido por teste. O programa nasce com o teste da saida. 
` `
melhorar`Melhorar`
` `
referencia` Como otimizar um produto usando a série de Fibonacci
 Design grafico 
`
` `
origem`TddResumo.xml`
` `
` `
topico` `
titulo`Design do teste do programa`
` `
desc`
  • Problema:
    Verificar o enésimo valor da serie de fibonnaci: 0, 1, 1, 2, 3, 5, 8
    fib(0)= 0 fib(1)= 1 fib(2)= 1 fib(3)= 2 fib(4)= 3 fib(5)= 5 fib(6)= 8

  • Teste: Verificar se o resultado esperado é igual ao obtido. Caso não seja mostrar resultados.
    Variar n de 1 a 8.
`
` `
` `
topico` `
titulo`Programa pronto após TDD`
` `
desc`

#definição da função
def fib(n): 
    return  n if n < 2 else fib(n - 1) + fib(n - 2)

# execução dos testes
def teste(esperado, n): 
    if esperado != fib(n):
       print("resultado esperado fib(", n, ")=", esperado, "resultado obtido:", fib(n))
   
print ("Início da execução de testes:")
teste (0, 0)
teste (1, 1)
teste (1, 2)
teste (2, 3)
teste (8, 6)
print ("Fim dos testes")


Resultado do teste de execução
Início da execução de testes:
Fim dos testes


`
` `
` `

topico` `
titulo`Dicas`
` `
desc`
Sequência do TDD - sempre começa pelo teste

Repetir enquanto necessário:
  1. Adicionar teste (deve dar erro!)
  2. Alterar programa para teste funcionar (com o minimo de código)
  3. Refatorar programa ou teste (melhorar compreensão, tirar duplicatas, simplificar)




Resultado do teste de execução
Início da execução de testes:
Fim dos testes


`
` `
` `
topico` `
titulo`Como começar`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
if 0 != fib(0):
    print('resultado esperado fib(0)=0', 'resultado obtido:', fib(0))
print ("Fim dos testes")

Resultado do teste de execução
Início da execução de testes:
NameError: name 'fib' is not defined


`
` `
` `
topico` `
titulo`Como fazer funcionar o programa`
` `
desc`
#definição da função
def fib(n):
    return 0

#execução dos testes
print ("Início da execução de testes:")
if 0 != fib(0):
    print('resultado esperado fib(0)=0', 'resultado obtido:', fib(0))
print ("Fim dos testes")

Resultado do teste de execução
Início da execução de testes:
Fim dos testes


`
` `
` `
topico` `
titulo`Como refatorar a função e o teste`
` `
desc`

#definição da função
def fib(n):   
    if (n==2):  return 1
    return n

#execução dos testes
def teste(esperado, n):
    if esperado != fib(n):
       print("resultado esperado fib(", n, ")=", esperado, "resultado obtido:", fib(n))

print ("Início da execução de testes:")
teste (0,0)
teste (1,1)
teste (1,2)
print ("Fim dos testes")


Resultado do teste de execução
Início da execução de testes:
Fim dos testes


`
` `
` `
topico` `
id`feedback`
` `
titulo`Melhoria constante`
` `
desc`
Smile.jpegInforme o que gostou
SmileTriste.jpgo que pode melhorar
  • A simplicidade do método
  • Facilidade de uso da linguagem




  • O que foi positivo no mutirão
  • O que pode melhorar
  • possíveis continuações sobre o assunto:
  • sugestões de novos dojos
`
` `
` `
`