`
linguagem` `
topico` `
nome`TDD Soma`
` `
titulo`TDD Soma`
` `
descritor`apoie, apoie.org, PAM, mutirão, produzir, aprender, simplificar, inovar, pesquisar , TDD`
` `
lead`Exemplo de um TDD - desenvolvimento de programa dirigido por teste. 
` `
melhorar`Melhorar`
` `
referenciaLivro TDD Kent Beck
Simulador python,js,java
Documento de trabalho
`
` `
origem`TddSoma.xml`
` `
` `
topico` `
titulo`O problema`
` `
desc` Como reslover isso?
  __+__+__=30

Preencher as lacunas usando [1,3,5,7,9,11,13,15] .
Obs. Pode repetir o numero
Exemplos:  15+13+1=29  9+9+9=27
`
` `
` `
topico` `
titulo`Teste do programa`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
if Soma==30:
   print("***encontrou***","L1=","soma=",Soma)
print ("Fim dos testes")

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

`
` `
` `
topico` `
titulo`Alterar programa para teste funcionar`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
Soma = 30
if Soma==30:
   print("***encontrou***","soma=",Soma)
print ("Fim dos testes")


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

`
` `
` `
topico` `
titulo`Adicionar teste`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
Soma = 1
if Soma==30:
    print("***encontrou*** posição-", 0,"-",30, "soma=",Soma)
print ("Fim dos testes")

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

`
` `
` `
topico` `
titulo`Alterar programa para teste funcionar`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
Soma = 1
Npossibilidades=512
if Soma==30:
    print("***encontrou*** posição-", 0,"-",30, "soma=",Soma)
else:
    print("****Não encontrou nada***","Npossibilidades",Npossibilidades)
print ("Fim dos testes")

Resultado do teste de execução
Início da execução de testes:
****Não encontrou nada*** Npossibilidades 512
Fim dos testes

`
` `
` `
topico` `
titulo`Adicionar teste`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
lista=[1,3,5]
L1=0
L2=0
L3=0
Soma=lista[L1]+lista[L2]+lista[L3]
Npossibilidades=510
if Soma==30:
    print("***encontrou***","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
else:
    print("****Não encontrou nada***","Npossibilidades",Npossibilidades)
print ("Fim dos testes")

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

`
` `
` `
topico` `
titulo`Alterar programa para teste funcionar`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
#lista=[1,3,5,7,9,11,13,15]
lista=[1,3,5]
L1=0  #da o numero da posição na lista para lacuna 1
L2=0  #da o numero da posição na lista para lacuna 2
L3=0  #da o numero da posição na lista para lacuna 3

qtdn=8 # qtd numero da lista
R=0 #Resultado da soma
SomaEsperada=3  #Resultado a ser encontrado
chencontrou= "False"  #indica se encontrou numero
Npossibilidades=0 #numero de possiblidades pesquisadas. No maximo 512

while ( L1 < qtdn and chencontrou=="False"):
    if L2 >= qtdn:
       L2=0
    while (L2 < qtdn and chencontrou=="False"):
        if L3 >= qtdn:
           L3=0
        while (L3 < qtdn and chencontrou=="False"):
            Soma=lista[L1]+lista[L2]+lista[L3]
            print("posição-",L1,L2,L3,"-","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
            Npossibilidades= Npossibilidades + 1
            if Soma==SomaEsperada:
               print("***encontrou***","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
               print("posição-",L1,L2,L3,"-","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma,"N pesquisa",Npossibilidades)
               chencontrou = "True"
               break
            L3=L3+1;       
        L2=L2+1;  
    L1=L1+1;
if chencontrou == "False":
   print ("****Não encontrou nada***","Npossibilidades",Npossibilidades)
print ("Fim dos testes")

Resultado do teste de execução
Início da execução de testes:
posição- 0 0 0 - L1= 1 L2= 1 L3= 1 soma= 3
***encontrou*** L1= 1 L2= 1 L3= 1 soma= 3
posição- 0 0 0 - L1= 1 L2= 1 L3= 1 soma= 3 N pesquisa 1
Fim dos testes

`
` `
` `
topico` `
titulo`Adicionar teste`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
lista=[1,3,5]
L1=0  #da o numero da posição na lista para lacuna 1
L2=0  #da o numero da posição na lista para lacuna 2
L3=0  #da o numero da posição na lista para lacuna 3

qtdn=3 # qtd numero da lista
R=0 #Resultado da soma
SomaEsperada=3  #Resultado a ser encontrado
chencontrou= "False"  #indica se encontrou numero
Npossibilidades=0 #numero de possiblidades pesquisadas. No maximo 512

#Verifica se sencontrou e display as possibilidades não encontradas
while ( L1 < qtdn and chencontrou=="False"):
    if L2 >= qtdn:
       L2=0
    while (L2 < qtdn and chencontrou=="False"):
        if L3 >= qtdn:
           L3=0
        while (L3 < qtdn and chencontrou=="False"):
            Soma=lista[L1]+lista[L2]+lista[L3]
            print("posição-",L1,L2,L3,"-","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
            Npossibilidades= Npossibilidades + 1
            if Soma==SomaEsperada:
               print("***encontrou***","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
               print("posição-",L1,L2,L3,"-","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma,"N pesquisa",Npossibilidades)
               chencontrou = "True"  
            L3=L3+1;       
        L2=L2+1;  
    L1=L1+1;

#Se encontrou display os valores encontrados
if chencontrou == "False":
   print ("****Não encontrou nada***","Npossibilidades",Npossibilidades)
print ("Fim dos testes")

Resultado do teste de execução
IInício da execução de testes:
posição- 0 0 0 - L1= 1 L2= 1 L3= 1 soma= 3
posição- 0 0 1 - L1= 1 L2= 1 L3= 3 soma= 5
posição- 0 0 2 - L1= 1 L2= 1 L3= 5 soma= 7
posição- 0 1 0 - L1= 1 L2= 3 L3= 1 soma= 5
posição- 0 1 1 - L1= 1 L2= 3 L3= 3 soma= 7
posição- 0 1 2 - L1= 1 L2= 3 L3= 5 soma= 9
posição- 0 2 0 - L1= 1 L2= 5 L3= 1 soma= 7
posição- 0 2 1 - L1= 1 L2= 5 L3= 3 soma= 9
posição- 0 2 2 - L1= 1 L2= 5 L3= 5 soma= 11
posição- 1 0 0 - L1= 3 L2= 1 L3= 1 soma= 5
posição- 1 0 1 - L1= 3 L2= 1 L3= 3 soma= 7
posição- 1 0 2 - L1= 3 L2= 1 L3= 5 soma= 9
posição- 1 1 0 - L1= 3 L2= 3 L3= 1 soma= 7
posição- 1 1 1 - L1= 3 L2= 3 L3= 3 soma= 9
posição- 1 1 2 - L1= 3 L2= 3 L3= 5 soma= 11
posição- 1 2 0 - L1= 3 L2= 5 L3= 1 soma= 9
posição- 1 2 1 - L1= 3 L2= 5 L3= 3 soma= 11
posição- 1 2 2 - L1= 3 L2= 5 L3= 5 soma= 13
posição- 2 0 0 - L1= 5 L2= 1 L3= 1 soma= 7
posição- 2 0 1 - L1= 5 L2= 1 L3= 3 soma= 9
.........................................................................
posição- 2 2 2 - L1= 5 L2= 5 L3= 5 soma= 15
****Não encontrou nada*** Npossibilidades 27
Fim dos testes

`
` `
` `
topico` `
titulo`Alterar programa para teste funcionar`
` `
desc`
#execução dos testes
print ("Início da execução de testes:")
lista=[1,3,5,7,9,11,13,15]
SomaEsperada=30  #Resultado a ser encontrado
L1=0  #da o numero da posição na lista para lacuna 1
L2=0  #da o numero da posição na lista para lacuna 2
L3=0  #da o numero da posição na lista para lacuna 3

qtdn=8 # qtd numero da lista
Soma=0 #Resultado da soma
chencontrou= "False"  #indica se encontrou numero
Npossibilidades=0 #numero de possiblidades pesquisadas. No maximo 512

#Verifica se sencontrou e display as possibilidades não encontradas
while ( L1 < qtdn and chencontrou=="False"):
    if L2 >= qtdn:
       L2=0
    while (L2 < qtdn and chencontrou=="False"):
        if L3 >= qtdn:
           L3=0
        while (L3 < qtdn and chencontrou=="False"):
            Soma=lista[L1]+lista[L2]+lista[L3]
            print("posição-",L1,L2,L3,"-","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
            Npossibilidades= Npossibilidades + 1
            if Soma==SomaEsperada:
               print("***encontrou***","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma)
               print("posição-",L1,L2,L3,"-","L1=",lista[L1],"L2=",lista[L2],"L3=",lista[L3], "soma=",Soma,"N pesquisa",Npossibilidades)
               chencontrou = "True"  
            L3=L3+1;       
        L2=L2+1;  
    L1=L1+1;

#Se encontrou display os valores encontrados
if chencontrou == "False":
   print ("****Não encontrou nada***","Npossibilidades",Npossibilidades)
print ("Fim dos testes")

Resultado do teste de execução
Início da execução de testes:
posição- 0 0 0 - L1= 1 L2= 1 L3= 1 soma= 3
posição- 0 0 1 - L1= 1 L2= 1 L3= 3 soma= 5
posição- 0 0 2 - L1= 1 L2= 1 L3= 5 soma= 7
...............................................................................
posição- 7 7 5 - L1= 15 L2= 15 L3= 11 soma= 41
posição- 7 7 6 - L1= 15 L2= 15 L3= 13 soma= 43
posição- 7 7 7 - L1= 15 L2= 15 L3= 15 soma= 45
****Não encontrou nada*** Npossibilidades 512
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)

`
` `
` `
`