Testes Unitários, Integração e E2E: Você realmente sabe a diferença?

42 views2347 WordsCopy TextShare
Full Cycle
Neste vídeo, você vai entender de forma clara e definitiva as principais diferenças entre os três ti...
Video Transcript:
Qual é a diferença entre testes unitários ou testes de unidade testes de integração e testes end vamos falar sobre isso hoje porque tem bastante coisa que talvez você não saiba mesmo se você já tem experiência com testes vamos nessa Olá pessoal tudo bem seja muito bem-vindo e muito bem-vinda a mais um vídeo aqui no canal canal full pcho meu nome é Wesley Williams e no vídeo de hoje a gente vai falar sobre as diferenças entre diversos tipos de teste tá E é muito interessante Porque mesmo quem tem muita experiência tá para trabalhar com testes automatizados
acaba sempre ficando um pouco na dúvida qual tipo de teste ele tá fazendo e quando ele deve fazer e aplicar aquele tipo de teste Então nesse vídeo eu quero te dar aí umas dicas para você conseguir seguir nesse caminho beleza mas an Antes de a gente ir direto a assunto eu queria já pedir aqui para você tá se inscrever no nosso canal dá um like aqui nesse vídeo e também ativar as notificações assim sempre quando um vídeo que nem esse for pro ar você já vai ser notificado notificada aí Fechou então vamos lá galera Pontos
importantes aqui pra gente falar sobre testes automatizados independente do tipo de teste que você tá fazendo teste automatizado é o maior investimento que você pode fazer na sua aplicação porque esse investimento ele vai se pagar ao longo do projeto 1 2 3 anos de projeto rodando quando você rodar sua sutch de testes o que que vai acontecer aquele teste que você fez 3 anos atrás ele ainda vai ajudar garantir integridade da sua aplicação então se você não testa ainda a sua aplicação de forma automatizada saiba que você tá perdendo tempo e com certeza gerando mais
possibilidades de bugs aí na sua aplicação o grande ponto é que você precisa ter estratégias eficientes para você conseguir testar a sua aplicação Como assim estratégias o ponto que você tem que se ligar é o seguinte dependendo do tipo de teste que você for fazer e dependendo da parte da aplicação que você vai a trabalhar você pode aplicar testes que vão ter uma cobertura maior da sua aplicação e vocês vão ter testes mais específicos que apesar de ter uma cobertura Menor da sua aplicação ele garante mais integridade especificamente daquele componente que você tá testando e
é por isso que normalmente a gente tem três tipos de testes tá obviamente eu tô falando desses três principais existem outras formas de testar outros tipos de testes tá que são mas no final das contas eles acabam sendo variações desses três que eu vou te passar primeiro tipo de teste testes unitários ou de unidades normalmente todo mundo fala teste unitário já tá na boca de todo brasileiro mas em tese o correto seria falar teste de unidade tá testando uma unidade tá Ah vamos falar sobre esse cara esse tipo de teste ele é extremamente importante porque
você consegue garantir o funcionamento de um componente em específico tá vamos imaginar que eu tenho uma classe eu quero garantir o comportamento daquela classe eu quero garantir que aquelas regras de negócio estejam funcionando naquela classe esse tipo de teste ele tem que ser autossuficiente e o componente ele tem que ser autossuficiente o que que significa se essa classe ela tem uma dependência muito forte de outras classes ali naquele momento o que que isso significa o comportamento de outro componente pode afetar o comportamento do componente que você tá testando e isso vai fazer com que o
seu teste possa mudar de resultado então quando a gente tá trabalhando especificamente com testes de unidade significa que você tá conseguindo isolar completamente aquela classe aquele componente que você tá fazendo do mundo externo para garantir que o comportamento daquele cara seja adequado que consiga satisfazer os aí o seu os requisitos agora o grande ponto é que muitas vezes criar esses tipos de testes eles acabam dando muito trabalho e o por que que eu tô dizendo isso porque existem componentes que você quer testar separadamente Mas invariavelmente ele tem realmente essas dependências e daí Nesse momento você
tem que ter estratégias para manter esse teste como um teste de unidade tá ou como um teste unitário mas mesmo assim tá conseguindo garantir esse isolamento para você conseguir fazer isso no final das contas Existem algumas estratégias Como trabalhar com Mox tá que você consiga simular o comportamento dos componentes que em tese ele depende para que a sua aplicação consiga ser testada naquilo que você tá realmente querendo focar agora um ponto importante é que você começa a ver Inclusive a qualidade do seu código quando você começa a testar componentes individuais porque se ele tem uma
dependência extremamente explícita a para um componente externo significa que o seu software ele tá com dependências extremamente fortes e aí você vai complicar até a sua vida para testar e se é difícil para você testar Com certeza é difícil para você dar manutenção naquele código é um baita a caminho para você ver também o nível de acoplamento da sua aplicação então crie os seus testes de unidade e a grande sacada desse cara é que você garante especificamente um comportamento e esses testes eles são extremamente rápidos para rodar então você consegue realmente a verificar de com
uma abrangência muito grande né o comportamento específico daquele cara com uma velocidade excelente Então você sempre tem que manter uma ótima cobertura de testes em Componentes específicos por outro lado vão ter momentos que eu não quero mais isolar somente aquele teste tá eu quero fazer com que esse teste de forma geral ele possa cobrir mais do que um um componente tá E aí nesse caso a gente entra num uma outra categoria de testes que a gente chama de testes de integração o teste de integração Como o próprio nome já diz ele faz com que você
consiga testar uma featuring específico ou um conjunto de componentes que naquele momento do desenvolvimento faz sentido porque por mais que você crie diversos componentes separados e testados às vezes quando a gente junta as peças do quebra-cabeça Elas começam a não funcionar da forma como a gente precisa Então os testes de integração eles vão ajudar muito em relação a isso agora o grande ponto em relação aos testes de integração é que vai depender do nível de teste tá ah que você vai querer ter Além disso por quê vamos imaginar que eu vou testar Ah fazer um
fazer um componente onde eu quero testar até a inserção de um dado num banco de dados nesse momento eu tenho que por exemplo ter um banco de dados para inserir ou eu posso simular um banco de dados entende aí vai tá um nível tá de integração que você vai colocar naquele nível de teste dependendo da situação você pode colocar ali um banco de dados fake um banco de dados em memória ou você cria uma classe ali que vai simular um banco de dados e mesmo assim você vai est trabalhando de forma integrado dependendo do nível
de preciosismo ou a necessidade do seu código de criticidade você sim a cada teste você vai realmente fazer uma chamada no banco de dados e fazer execução para garantir que aquele que a que aquele seu código que queele seu componente funcione o grande ponto é que você tem que tomar muito cuidado para cada operação normalmente você limpar esse banco de dados criar novamente tudo certinho para garantir que um teste ah não acabe influenciando o outro uma grande sacada também é utilize ferramentas como test containers por exemplo que ele consegue subir né a ferramentas auxiliares como
bancos de dados sistemas de mensageria etc para você conseguir realizar os seus testes agora o grande ponto é que já dá para perceber que quando você tá trabalhando de forma mais integrada você tem um custo maior Ou seja demora mais um para você às vezes criar esses testes mas principalmente né Na hora que você vai rodar subir um banco de dados Ah fazer inserções todos esses tipos de coisa toma mais tempo então fica um pouco mais lento você conseguir realizar esses testes porém eles são sim necessários então esses são os testes de integração você não
consegue isolar um componente você precisa trabalhar com componentes separados mas que no conjunto eles vão conseguir trazer o comportamento esperado na sua aplicação são os testes aí de integração e agora por último eu quero falar para vocês algo bem importante são os testes end to end E aí que a gente acaba tendo ah às vezes uma certa polêmica inclusive uma zona cinzenta por quê Ah testes end to endia A ideia é que ele seja um teste de ponta a ponto ou seja que ele consiga simular realmente a sua aplicação o grande ponto é que esse
ponto ponta a ponta ele pode ser interpretado de diversas maneiras para testar algo de ponta a ponta dependendo da situação eu posso querer por exemplo subir um servidor web deixar ele numa porta rodando E aí Eu começo mandar requisições para esse cara e consigo validar se aquelas requisições estão se comportando da daquela forma e aí quando você faz isso você acaba batendo na porta você bate no servidor você cai no servidor web aí do Servidor web ok que começa a acontecer ele faz as chamadas internas vai lá no banco de dados faz tudo que tem
que fazer e acaba retornando então obviamente isso claramente é um teste end to end porém nem sempre você vai querer testar o seu software de ponta a ponta nesse nível por que que eu tô dizendo porque quando você vai testar algo batendo numa porta especificamente essa porta pode ter un um proxy reverso na frente Ah pode depender de outros fatores de infraestrutura que não seja na realidade a sua aplicação em si e aí quando você cai nesse ponto novamente né Quanto mais camadas você tem que passar né mais lento mais complexo tá e mais abrangente
é o seu teste porque realmente ele é de ponta a ponta agora a grande sacada nesses tipos de teste é você conseguir delimitar o escopo dessa abrangência por exemplo imagina que você tá fazendo um teste que vai fazer um teste end de um microsserviço mas esse microsserviço Depende de outro microsserviço e aí você vai ah fazer tudo isso de ponta a ponta subir todos os outros microsserviços para garantir que esse cara funcione Então esse tipo de não digo confusão esse tipo de complexidade é muito comum de acontecer E aí eu acho que a grande sacada
de testes emend é você conseguir delimitar um escopo eu vou dar um exemplo para você Muitas vezes eu quero testar a end points da minha Api para garantir que o meu servidor web tá funcionando e a gente vai fazer isso Sei lá com node e com Express por exemplo a gente tem isso no nosso curso de tdd a do nosso curso fus cych 4 e tudo mais então muitas vezes eu não preciso subir o Express numa porta e fazer requisições externas o que eu posso fazer é pegar ferramenta sei lá um super teste da vida
fazer com que essa ferramenta essa Lib seja um client que vá fazer chamada naquelas rotas especificamente em tempo de execução e pegar os resultados Ah que eu tenho ainda sim eu considero esse tipo de teste um teste end to end porque você tá conseguindo bater ali numa rota final para testar uma cadeia inteira de uma requisição mas novamente é uma questão de abrangência e é uma questão de escopo se estiver ok para mim fazer isso naquele momento agora A grande questão é eu acredito que para determinados tipos de sistema um teste end to end ele
tem que ser feito de uma com abrangência bem grande mesmo ou seja sobe o servidor sobe tudo isso e manda as requisições ou dependendo do tipo de sistema o que que você vai fazer você delimita esse Esopo e fala só vou testar sei lá do Express para baixo por exemplo isso fica a critério de a seu critério de uma forma geral ou de outra os testes de os testes e end to end são os mais caros porque eles dependem de mais componentes eles dependem de muito mais coisa para rodar e Normalmente eles vão ficar sempre
sendo os testes mais lentos então normalmente não vão ser os testes que você vai mais implementar no seu sistema normalmente né tem aquela famosa pirâmide de testes que você vai ter mais testes de unidade depois mais testes de integração e depois mais os testes end to end Então acho que essa acredito que são as diferenças entre esses três tipos de teste e eu queria saber aí deixa inclusive em comentário como que você vê e qual é a proporção dos Testes hoje em dia que você usa aí nas suas aplicações tá aqui né não quis deixar
esse vídeo muito grande mas eu eu acho que esses conceitos são importantes Tanto para você que tá começando a pensar a testar suas aplicações você já deveria até mesmo para você que já testa hoje em dia fala para mim como é que você organiza os testes aí beleza e somente para você saber tem um link aí na descrição caso você queira saber mais sobre o nosso curso full cycle 4 onde Inclusive a gente tem ah cursos específicos dentro dele especificamente só sobre testes tá testes automatizados tdd e etc tá então fica a dica aí para
você se você quiser fizer sentido para você clica no link a gente bate um papo para eu te apresentar tudo que esse nosso curso tem fechou de qualquer forma galera é isso espero que você tenha curtido esse vídeo Um grande abraço e até mais n
Copyright © 2025. Made with ♥ in London by YTScribe.com