[MÚSICA] [MÚSICA] Olá a todos, estamos de volta aqui! Agora com o curso de Desenvolvimento de Software Guiado por Testes. Meu nome é Eduardo Guerra e bem-vindo de volta. Nessa primeira aula do curso vamos falar, vamos conhecer o Test-Driven Development, também conhecido como TDD, entendendo pouquinho como é que ele funciona, pra que que ele serve, né, e como que a gente vai, durante o curso, aí, se aprofundar nisso. Tá? Então, pra começar, eu gostaria de fazer uma pergunta pra vocês, né? Imagina se você pudesse testar as coisas na sua vida antes de tomar uma decisão. Vamos pegar aqui, por exemplo, você escolher uma profissão, né? Imagina, você querer ver se aquela profissão serve pra você, né? Então, por exemplo, o cara escolheu ser médico, né, e aí ele, só que ele fez teste que ele queria poder dormir à noite, né, e médico tem que fazer plantão, né, tem que ficar às vezes de sobreaviso, aí "pá"! Já falhou esse teste. Ou então, o cara às vezes decidiu ir, sei lá, pra uma consultoria e ganhar muito dinheiro, mas também falhou lá nas horas, né, ou então o cara decidiu trabalhar com programação e aí falhou no teste do dinheiro, né? Então se você pudesse fazer os testes antes pra saber, né, como que a sua vida seria com uma profissão, imagina que beleza, né? Como seria mais fácil a gente escolher o que fazer da vida, né? Dentro, ali, do que a gente quer. Imagina, por exemplo, pra você escolher uma casa. Né? Comprar casa é uma coisa que às vezes faz uma grande diferença da nossa vida, né? A gente não compra e vende casas todo dia, né? Pelo menos a maioria das pessoas, né? Quando elas vão pra uma casa, elas precisam, né, ter uma certa certeza se vão gostar da vizinhança, né, se o tamanho da casa vai atender as necessidades da família, né? Por exemplo, imagina aí que você tem teste do barulho, né, e aí você rodar. " vou comprar uma casa". Imagina se você pudesse fazer o teste antes e aí você ia pegar de cara que você tem lá vizinho que tem uma banda de garagem. E outra vantagem, né, de você ter os testes, seria não só você você poder rodar esses testes antes de tomar uma decisão, mas pra você verificar, né, se aqueles testes continuariam passando, né, depois de você tomar uma nova decisão, ou fazer uma mudança na sua vida, né? Imagina lá, o casal feliz, vem a esposa e diz, né: "A mamãe tá vindo morar com a gente". Certo? Que que você ia fazer? Você pegava todos os testes e mostrava: "Ó, olha aí o que que vai acontecer. Olha aí o que vai acontecer se a sua mãe vier morar com a gente". Tá? Então, seria muito bom se a gente pudesse, na vida da gente, testar antes. Bom, infelizmente, isso não é possível, né? Tem coisas que só mesmo quando acontecem que a gente vai perceber quais são as consequências, ou que aquela coisa que a gente gostaria que fosse não tá acontecendo. Né? Bom, na vida infelizmente não dá, só que no código a gente consegue fazer isso. No código é possível conseguir fazer o teste antes. E é sobre que isso que se trata o Test-Driven Development. Também conhecido como TDD pros íntimos, aí, tá? O TDD é uma técnica de desenvolvimento e projeto de software que os testes, eles são criados antes do código de produção. Tá? Então, assim, como é que é isso, né? Uma coisa que muita gente confunde é que acha que o TDD é uma técnica de testes, e não é, tá? Ele é uma técnica de desenvolvimento e projeto de software que usa testes como ferramenta. Tá? Então fala assim: " eu preciso testar software; eu vou usar o TDD". Não! Eu preciso desenvolver software. Então eu vou usar o TDD. Tá? Então, o TDD não é uma técnica de teste, é uma técnica de desenvolvimento. Nessa técnica de desenvolvimento, que que acontece? Você cria o teste antes de criar o seu código. Então, antes de você fazer o código, você sabe qual teste que ele, que teste ele precisa passar pra ele funcionar. Tá? Então, falando brevemente aqui, ó: peguei o meu o quadro aqui, certo? Então que que acontece? Você começa com teste, né? Depois você vai implementar, né, criar uma implementação pra fazer aquele teste passar, depois você vai, refatora o código, ou seja, você tenta melhorar a estrutura dele, o teste tem que continuar passando, e aí você vai, cria mais teste, cria novo có-- implementa, melhora o seu código, né, depois você vai, melhora pouco mais a estrutura, cria novo teste e esse é o ciclo, né, do TDD, que você vai seguindo, que a gente vai entrar detalhes na próxima aula. Você vai seguindo esse ciclo até você implementar tudo que você queria. Tá? Eu termino essa aula deixando aqui uma frase do criador do TDD, o Kent Beck. Ele disse aí no "Software Engineering Radio Podcast", tá, que eu gosto, aí, de escutar de vez quando, ele participou de uma edição e aí perguntaram pra ele o que era o TDD. E ele falou o seguinte: "TDD is a crazy idea that works". Ou seja, é uma ideia maluca que funciona. Tá? E eu acho isso muito legal porque muitas vezes você, pelo menos a primeira vez que me falaram que o TDD, você cria o teste antes do código, eu falei: "Como assim?! Como esse negócio funciona?", né? E a princípio, né, pra quem não conhece, pode parecer uma ideia inusitada, maluca, né, que não vai funcionar. Só que o TDD é uma técnica de desenvolvimento e design, como a gente falou, que funciona e tem, tá sendo cada vez mais adotada pelo mercado. Independente do tipo de metodologia que se utiliza. O TDD surgiu nas metodologias ágeis mas, digamos assim, ganhou vida própria e mesmo, às vezes, empresas que usam abordagens mais tradicionais, às vezes acabam utilizando o TDD também. Tá certo? Então, nessa aula a gente falou pouquinho sobre o TDD, né, fez ali uma brincadeira no comecinho pra motivar, né, mas entendemos aí o que é TDD, vimos brevemente como ele funciona. Na próxima aula a gente vai entrar aí no ciclo de TDD. Até mais, muito obrigado por assistir. [MÚSICA]