os testes unitários aterrorizam muitos programadores eu tô falando desde iniciantes até programadores experientes mesmo e uma verdade que eu vou falar aqui para você é que quanto mais você procrastinar para aprender testes unitários mais difícil vai ser isso porque escrever os testes em si é relativamente simples a gente vai ver isso nesse vídeo aqui mas o difícil é que você não consegue testar um código que não esteja bem estruturado ou seja os testes vão evidenciar outros problemas no seu código e quanto mais você se acostumar com essas práticas r mais difícil fica de você conseguir
testar o seu código nesse vídeo aqui a gente vai entender o que são testes unitários né Qual que é a sua importância e vê também alguns exemplos práticos para ajudar você que tá iniciando na programação Bora pro vídeo Olá pessoal bora para mais um vídeo eu sou carota quita eu sou engenheira de software Senor eu trabalho nesse mercado há mais de 13 anos e esse é o meu canal a teita deve se essa sua primeira vez aqui seja muito bem-vinda a única coisa que eu peço pra gente já seguir pro conteúdo é que se você
gostar desse conteúdo aqui que você apoia o conteúdo aí você pode compartilhar você pode comentar você pode recomendar pro seu amigo faz o que você quiser qualquer coisa vai ajudar meu conteúdo combinado agora se você já é inscrito e acompanha os conteúdos do canal já deixa o seu comentário aqui Maroto para ajudar e dar aquela engajada antes da gente começar aqui eu preciso dizer que um bom programador Ele precisa saber testes unitários e é por isso que 10 unitários está na ementa da escola dnc porque ela busca formar profissionais que T as habilidades mais requisitadas
aí de mercado não é simplesmente escrever código mas é escrever um bom código e garantir a qualidade de software é por isso que ela tem formado profissionais ali Acima da média e tem uma taxa de empregabilidade superior a 98% esse conteúdo aqui é uma parceria com a escola dnc a gente já fez diversas parcerias aqui no canal a gente tem uma playlist completa de conteúdos para ajudar quem tá começando na programação e se você quer conhecer um pouquinho mais sobre a forma ação em tecnologia da escola dnc o link vai est aqui na descrição Bom
vamos lá primeiro preciso destacar que existem vários tipos de teste então o teste unitário ele é apenas um teste dentro da pirâmide de teste ali que a gente chama na programação que vão ter vários tipos de testes o teste unitário ele é o mais importante um dos mais importantes porque ele tá na base da pirâmide eu vou explicar o por que isso é tão importante no desenvolvimento nessa pirâmide que é a pirâmide de testes a gente tem também os testes de integração e também os testes end to end que é o teste ponto a ponto
ou seja o teste de interface que vai simular ali como se um usuário tivesse interagindo com o seu sistema te permitindo testar todas as camadas do seu sistema cada tipo de teste desse nessa pirâmide vai ter um propósito diferente Então qual que é o propósito de um teste unitário propósito de teste unitário é testar a menor unidade do seu código e quando eu falo que ele é importante porque ele tá na base é que pensando na pirâmide quanto mais próximo da base menor o curo de correção ou seja se uma se você consegue detectar um
erro ai no seu sistema logo no teste unitário o custo para corrigir esse erro é infinitamente menor do que você pegar um erro eem um teste end to end ponto a ponto ali na frente onde você tem que entender ali nas camadas Aonde que tá o problema por isso que os testes unitários eles são o requisito ali se uma empresa pensa em qualidade de software ela precisa pelo menos ser testes unitários e é por isso que é uma habilidade tão requisitada assim de mercado então o principal ponto ali que a gente vê de diferença entre
os testes unitários e os testes integração e esse teste end to end é que esse tipo de teste permite encontrar erros durante o desenvolvimento né O que acaba reduzindo esse custo ali para você poder corrigir esses erros Esse é apenas um dos benefícios o outro benefício assim como eu falei no início do vídeo é que os testes unitários eles vão exigir que você estruture melhor o seu código para que você consiga testar que você Execute as boas práticas ali melhores arquiteturas para que você consiga testar o seu teste então consequentemente um código testável ele vai
ser um código ele precisa estar bem estruturado você você precisa ter as responsabilidades bem divididas você precisa consequentemente aplicar boas práticas da programação para que você consiga testar o seu código agora vamos desmistificar de forma simples Você já sabe qual que é a importância desses testes né já falei dois pontos dois benefícios muito importantes ali quando a gente fala em testes unitários agora vamos desmistificar aqui o que seriam esses testes unitários assim como eu disse o propósito do teste unitário é testar a menor unidade do seu código mas o que que é uma unidade quando
a gente fala em código uma unidade é uma função um método da sua implementação vamos supor que você tenha criado uma calculadora uma implementação de Calculadora onde ela tem funções para executar a soma a multiplicação a divisão a subtração agora vamos concentrar ali somente na soma eu vou colocar na tela um exemplo aqui para você ver de uma calculadora que tem um método chamado soma e qual que é a função desse método ele vai somar dois números que são passados ali como parâmetro o que que eu vou fazer no meu teste unitário a ideia do
teste unitário ário é testar realmente o objetivo da minha função o objetivo da minha unidade ali do Meu método que eu estou testando então eu vou validar se o resultado que eu estou obtendo da soma é o resultado esperado então dando uma olhadinha aqui em como ficaria esse teste do método somar da nossa calculadora né Observe que os testes eles são sempre divididos em três etapas muito importantes a primeira delas é a preparação onde você prepara tudo que você precisa para você poder testar ali aquele método aquela unidade nesse caso a gente tá instanciando uma
calculadora né você não sabe o que é uma Instância eu vou recomendar que você assista um outro vídeo aqui do canal sobre programação orientada a objetos a gente tá criando a nossa calculadora ali em cima pra gente poder executar o método depois e poder validar o resultado Então a primeira parte é a preparação a segunda parte é a ação ou seja estou executando o método que eu estou testando que é o método somar e a terceira parte de um teste unitário é a afirmação então eu vou validar se a resposta que eu obtive é a
resposta esperada tá vendo não falei para você olhando pela lógica escrever testes parece muito simples eu só vou testar realmente Qual que é o objetivo da minha função algumas pessoas até vão falar poxa é ridículo escrever esse tipo de teste em funções que são óbvias né mas agora eu vou forçar a barra aqui e mudar um pouquinho a perspectiva é claro que a gente testou um cenário Óbvio a gente pegou dois números muito fáceis de serem somados mas a se a gente estressar esse teste unitário e se a gente for somar duas dízimas periódicas E
se a gente for somar dois números gigantescos que podem de repente estourar a capacidade de bytes ali que podem ser armazenados em um inteiro deu para pensar quanto que a gente pode levar esses cenários pro Extremo e a ideia de um teste unitário não é testar cenários óbvios é você realmente poder de forma automatizada poder estressar ali para realmente validar a sua implementação então teste não é sobre cobertura é sobre você realmente validar e manter a qualidade do software ainda nesse exemplo que a gente viu da calculadora testando os métodos somar ele é um método
muito simples ele só tem ali uma linha de execução mas na maioria dos cenários ali pensando você vai ter uma implementação que depende de outras implementações que é o que a gente chama de dependências na programação quando você tem uma dependência dentro da sua classe o seu objeto esse tipo de teste começa a ficar um pouco mais difícil vamos fazer isso aqui vamos colocar uma dependência de um serviço de log então toda vez que a gente precisar somar alguma coisa executar alguma operação a gente também vai logar nesse sistema ali a operação que a gente
fez ou seja a soma Então dentro do meu método da minha unidade soma eu não tenho somente a execução de somar os dois números Mas eu também tô registrando esse log no serviço de log então a gente precisa validar isso também nesse exemplo que eu tô mostrando aqui para você a gente vai conseguir testar porque esse código ele tá muito bem estruturado eu vou te explicar por primeiro no inicializador da minha calculadora eu estou injetando a minha dependência então eu não crio o serviço de l dentro da minha calculadora eu injeto ele quando eu estou
instanciando quando eu estou criando a minha calculadora Isso vai nos permitir depois substituir essa implementação por outra implementação que a gente queira no nosso teste para que a gente consiga validar esse serviço de log também Outro ponto muito importante aqui dessa implementação reparem que no serviço de log a gente não tá ali declarando ele como a implementação a gente tá declarando ele como tipo da interface Interface para quem não sabe é a abstração né é como se fosse o contrato ali daquela classe e isso vai nos permitir substituir isso por outra implementação por exemplo um
mock dentro de um teste é claro que aqui eu fui de zero a 100 em um minuto você claramente não precisa entender tudo que eu falei mas eu só tô mostrando para você que a gente só consegue testar esse tipo de implementação porque ela tá muito bem estruturada se não tivesse bem estruturada se a gente não tivesse injeção de dependência se a gente não tivesse dependendo de Abstrações você não conseguiria testar totalmente essa implementação é por isso que os testes evidenciam out outros problemas no seu código ele vai evidenciar ele a necessidade de desacoplamento essa
questão das dependências né então isso vai te fazer se tornar no programador melhor é por isso que eu acho que quanto antes você entender sobre testes unitários mais você vai pensar diferente na hora de escrever o seu código e não é que você precisa saber tudo isso para você começar mas os testes eles vão te ajudar nessa evolução você vai sentir a necessidade de aprender para conseguir testar a sua aplicação e é por isso que eu acho que é tão legal o fundamental em escrever testes é garantir a qualidade dos seus software e aí em
todos os sentidos a gente viu aqui que escrever testes faz com que a gente escreva códigos melhores mas também garante a funcionalidade daquele código e outra coisa muito importante é que ele garante que com qualquer alteração que o seu código não vai ser quebrado Imagina você trabalhando em uma equipe que compartilha sua base de código com vários times vários times trabalhando ali Imagina que uma equipe faz uma alteração no serviço de log né E você não sabe então de repente a sua implementação deixa de funcionar como deveria você passa a não ter os logs ali
da sua soma porque alguém alterou o serviço de log se você tivesse feito um teste unitário para validar tudo que você precisa pro seu método de soma você pegaria essa alteração Então na hora que eles estivessem rodando o teste eles entenderiam que eles quebraram a sua implementação eles poderiam corrigir a sua implementação e é por isso que testes são pré-requisitos para empresa que trabalham ali com desenvolvimento de software ali principalmente equipes grandes porque você precisa ter um controle de qualidade você precisa ter uma garantia de que a implementação que já tá em produção não vai
quebrar por conta de novas implementações de melhorias que você esteja fazendo no seu sistema então assim a triste verdade é que se você não souber testes unitários ali pensando que eles são pré-requisitos pra maioria das vagas que você encontra no mercado de tecnologia você vai est perdendo oportunidades então quanto antes você começar melhor uma coisa legal dos Testes unitaris é que eles também servem como uma documentação Viva do seu código Afinal através dos Testes você consegue saber para que aquele método foi proposto Qual que é a utilidade daquele método Então se algum dia você estiver
trabalhando em um código de terceiro que não tem documentação olhando pelos testes você consegue entender como que funciona aquela implementação então uma documentação Viva do seu sistema é por isso que eu acho que a gente deveria parar de colocar os testes unitários como vilões e começar a entender a importância deles na nossa evolução como profissional Se você começar isso desde já vai fazer muita diferença se você busca uma formação muito bem estruturada para se tornar um programador que vai ter teste unitário arquitetura boas práticas e esses são apenas alguns tópicos da ementa da escola dnc
não deixe de conferir o link na descrição sobre a formação completa em tecnologia da escola dnc agora eu quero saber de você você já sabe testes unitários você usa testes unitários no seu dia a dia qual que a importância que você vê nos testes unitários Não deixe de comentar aqui seu comentário é muito importante para mim e assim como é de costume eu vou responder um comentário que deixaram em outro vídeo aqui do canal comentário é do Gil Carvalho aequita Qual câmera você está usando atualmente para gravar os seus vídeos na verdade outras pessoas pediram
essa mesma informação e por isso eu vou responder aqui no canal eu tô utilizando uma Canon eu vou pegar um modelo cer tinha aqui para vocês é um modelo de entrada é uma Eos Rebel T7 e a lente que eu tô utilizando não é a lente que eu comprei ela é uma lente que eu comprei ali a parte que é uma lente 24 mm para dar um pouquinho de profundidade aqui no local que eu tô gravando que não é um lugar tão grande assim tá então por isso que eu escolhi essa lente e me serve
super bem a qualidade apesar de ser modelo de entrada né e não ser 4K acho que a qualidade é bem legal então eu super recomendo PR quem tá começando a criar conteúdo muito obrigado pelo seu comentário Gil não deixe de colocar o seu comentário aqui também que eu tô sempre olhando os comentários de vocês e antes de eu me despedir eu vou indicar outros dois conteúdos para você assistir aqui na sequência um desses conteúdos você justamente o vídeo que eu gravei sobre programação orientada a objetos que vai te ajudar a entender o que que é
uma Instância que eu falei aqui nesse vídeo e o outro conteúdo vai ser uma recomendação do YouTube agora que eu falei em câmera Eu acho que eu vou olhar alguns equipamentos aqui para poder melhorar o meu setup Não deixe de me seguir porque eu tô sempre postando conteúdo legal aqui para você