agil, como um verdadeiro ninja da programacao.Apesar de ser dificil de compreender no inicio, o desenvolvimento orientado a testes segue uma abordagem simples: codigo limpo que funciona. Ao iniciar o desenvolvimento de uma nova funcionalidade, voce deve saber qual sera o resultado em um determinado cenario e implementar algo que comprove que o seu codigo chegara ao resultado deste cenario. Um exemplo simples seria criar uma funcao ao receber o valor do raio de um circulo retorne o seu perimetro. Obs: Antes de prosseguir, vamos lembrar da formula usado para calcular o perimetro de um circulo, que e o seu raio multiplicado por dois multiplicado por PI (2 * raio * PI). Vamos considerar PI = 3,1415.Entao, pensando "ao contrario", criamos o teste para um circulo com raio igual a 5 que deve retornar 31,415:se calculaPerimetro(5) = 31,415 entao exiba "O teste passou""senao exiba "O teste nao passou"Com o teste criado, realizamos o teste e percebemos um pequeno problema, a funcao calculaPerimetro nem existe ainda, entao como poderemos testa-la? Calma, e assim mesmo, nao podemos testar algo que nem existe ainda, entao criamos a implementacao mais simples possivel da funcao em questao e fazemos nosso teste:funcao calculaPerimetro(numero raio) retorna vaziofim da funcaoAgora rodamos o nosso teste (de mesa) e ele falha miseravelmente... Choro? Tristeza? Hora de afogar as magoas em uma garrafa de cafe? Nao, jovem padawan. A falha no teste mostra que realmente o teste funciona, afinal vazio nao e igual a 31,4 em nenhum lugar desse universo. Vamos prosseguir em pequenos passos. Agora o que devemos fazer e forcar a passagem no teste com a implementacao mais simples possivel, desta forma, vamos alterar nossa funcao para retornar o valor esperado:funcao calculaPerimetro(numero raio) retorna 31,415fim da funcaoQue que isso? Trapaca? Sabotagem? Preguica?Nao amigos, apenas seguimos um dos principais preceitos do desenvolvimento guiado a testes, dar passos pequenos para podermos progredir sem medo. Ao realizarmos o nosso deste ele funciona perfeitamente e agora podemos progredir para a refatoracao,e ai entra um dos principais segredos do desenvolvimento orientado a testes.Como eu ja tenho um teste comprovadamente funcional e perfeito, qualquer alteracao que eu fizer deve satisfaze-lo, ou seja, o que eu fizer na minha funcao so estara correto ao passar no teste e por isso nos temos um norte a seguir. Vamos prosseguir:funcao calculaPerimetro(numero raio) numero PI = 3,1415 numero dobroDoRaio numero perimetro dobroDoRaio = 2 * raio perimetro = dobroDoRaio * PI retorna perimetrofim de funcaoEntao vamos la, mais uma vez rodar o nosso teste de mesa e... Rufem os tambores... Ele passa! Nosso teste continua funcionando e agora com a funcao implementada, podemos partir para outra fase, a refatoracao. Eu sei, eu sei, voce deve estar gritando ai dentro, que devemos diminuir esta funcao e usar menos variaveis, por isso vamos la, altera-la novamente, cotando essa variavel feiosa chamada dobroDoRaio e na sequencia vamos testa-la:funcao calculaPerimetro(numero raio) numero PI = 3,1415 numero perimetro perimetro = 2 * raio * PI retorna perimetrofim de funcaoRealizamos um novo teste, que tambem passa, ou seja, nossa implementacao ainda e valida, mas e claro que