{"id":1588,"date":"2023-05-09T08:29:00","date_gmt":"2023-05-09T11:29:00","guid":{"rendered":"https:\/\/www.erudio.com.br\/blog\/?p=1588"},"modified":"2023-08-04T13:20:56","modified_gmt":"2023-08-04T16:20:56","slug":"por-que-implementar-testes-unitarios","status":"publish","type":"post","link":"https:\/\/www.erudio.com.br\/blog\/por-que-implementar-testes-unitarios\/","title":{"rendered":"Por que implementar Testes Unit\u00e1rios?"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Fala Pessoal beleza! Nesse post aprenderemos, por que devemos implementar testes unit\u00e1rios? Se podemos tranquilamente executar a nossa aplica\u00e7\u00e3o e apenas fazer os testes manualmente garantindo que tudo funcione, ent\u00e3o, por que implementar testes unit\u00e1rios? Por que apenas testar manualmente n\u00e3o nos garante que o c\u00f3digo se mant\u00e9m funcionando ap\u00f3s mudan\u00e7as? Bom \u00e9 claro que existem algumas vantagens significativas em implementar testes unit\u00e1rios para testar nosso c\u00f3digo.<\/p>\n\n\n\n<p>Implementamos testes unit\u00e1rios para garantir que nosso c\u00f3digo funcione e isso \u00e9 \u00f3bvio, mas essa n\u00e3o \u00e9 a maior vantagem. Uma das raz\u00f5es pelas quais implementamos testes unit\u00e1rios \u00e9 para garantir que o m\u00e9todo que implementamos funcione bem com diferentes par\u00e2metros sejam eles v\u00e1lidos ou inv\u00e1lidos. Afinal de contas precisamos ter certeza de que tudo funciona bem com par\u00e2metros v\u00e1lidos e inv\u00e1lidos. \u00c9 claro que tamb\u00e9m podemos fazer testes manuais e fornecer manualmente par\u00e2metros v\u00e1lidos e inv\u00e1lidos. Mas se tivermos uma aplica\u00e7\u00e3o muito grande com muitas funcionalidades, \u00e9 muito f\u00e1cil esquecer de testar uma das funcionalidades com um dos par\u00e2metros inv\u00e1lidos. Principalmente quando temos muitos desenvolvedores trabalhando no projeto quando as altera\u00e7\u00f5es em nossa aplica\u00e7\u00e3o s\u00e3o feitas diariamente e quando precisamos fazer testes frequentes, o teste manual da aplica\u00e7\u00e3o que possui muitas funcionalidades torna-se muito dif\u00edcil e torna-se muito f\u00e1cil esquecer de testar a funcionalidade com um par\u00e2metro de entrada inv\u00e1lido espec\u00edfico.<\/p>\n\n\n\n<p>Outro grande motivo pelo qual precisamos implementar testes unit\u00e1rios \u00e9 garantir que nosso c\u00f3digo funcione bem agora e no futuro. Imagine que voc\u00ea escreveu um m\u00e9todo muito complexo. Este m\u00e9todo \u00e9 muito \u00fatil e outros desenvolvedores come\u00e7aram a us\u00e1-lo em suas classes tamb\u00e9m. Como podemos garantir que outros desenvolvedores que desejam fazer altera\u00e7\u00f5es em seu c\u00f3digo n\u00e3o quebrem nada? Os testes unit\u00e1rios que escrevemos para este m\u00e9todo lhe dar\u00e3o a confian\u00e7a de que altera\u00e7\u00f5es futuras neste m\u00e9todo n\u00e3o interromper\u00e3o a funcionalidade existente e que este m\u00e9todo ainda funcionar\u00e1 conforme o esperado, como costumava funcionar antes, com os par\u00e2metros v\u00e1lidos e inv\u00e1lidos predefinidos.<\/p>\n\n\n\n<p>Esses testes tamb\u00e9m s\u00e3o chamados de testes de regress\u00e3o e eles nos ajudam a nos sentirmos mais confiantes de que as novas altera\u00e7\u00f5es nas funcionalidades existentes n\u00e3o quebram outras partes da aplica\u00e7\u00e3o. Se voc\u00ea fizer altera\u00e7\u00f5es em um dos m\u00e9todos e quebrar uma funcionalidade da aplica\u00e7\u00e3o bem testada, isso ser\u00e1 chamado de regress\u00e3o. Por isso podemos dizer implementarmos testes unit\u00e1rios para garantir que n\u00e3o haja regress\u00e3o e que todas as funcionalidades ainda funcionem conforme o esperado, mesmo depois de fazermos altera\u00e7\u00e3o no c\u00f3digo existente e tudo continuar\u00e1 funcionando. Bom por esse post \u00e9 isso no pr\u00f3ximo conheceremos o conceito de FIRST.<\/p>\n\n\n\n&nbsp;\n<h2>Treinamentos relacionados com este post<\/h2>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_tests_java\" target=\"_blank\" rel=\"noopener\">\n\n<img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Unit Testing com Spring Boot 3, TDD, Junit 5 e Mockito\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/24-tests_java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ci_cd_java_aws\" target=\"_blank\" rel=\"noopener\">\n\n<img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Continuous Integration e Continuous Delivery com AWS e Github Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/27_CICD_JavaAWS.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ci_cd_java_azure\" target=\"_blank\" rel=\"noopener\">\n\n<img decoding=\"async\" style=\"max-width: 100%;\" title=\"Java Continuous Integration e Continuous Delivery com Microsoft Azure e Github Actions\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/28_CICD_JavaAzure.png\">\n<\/a>\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_java\" target=\"_blank\" rel=\"noopener\">\n\n<img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0  AWS com Spring Boot 3, Java e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/07-rest-spring-java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_asp_net\" target=\"_blank\" rel=\"noopener\">\n\n<img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 Azure com ASP.NET Core 5 e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/01-rest-asp.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_rest_spring_kotlin\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" style=\"max-width: 100%;\" title=\"REST API's RESTFul do 0 \u00e0 AWS com Spring Boot 3, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/18-rest-spring-kotlin.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices_java\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microservices do 0 com Spring Cloud, Spring Boot e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/14-microservices-java.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_microservices-dotnet\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Arquitetura de Microsservi\u00e7os do 0 com ASP.NET, .NET 6 e C#\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/15-microservices-dotnet.png\">\n<\/a>\n\n<a href=\"https:\/\/pub.erudio.com.br\/kr\/blog_ms_kotlin\" target=\"_blank\" rel=\"noopener\">\n        <img decoding=\"async\" style=\"max-width: 100%;\" title=\"Microsservi\u00e7os do 0 com Spring Cloud, Kotlin e Docker\" src=\"https:\/\/raw.githubusercontent.com\/leandrocgsi\/blog-images\/main\/22-ms-kotlin.png\">\n<\/a>\n","protected":false},"excerpt":{"rendered":"<p>Fala Pessoal beleza! Nesse post aprenderemos, por que devemos implementar testes unit\u00e1rios? Se podemos tranquilamente executar a nossa aplica\u00e7\u00e3o e apenas fazer os testes manualmente garantindo que tudo funcione, ent\u00e3o, por que implementar testes unit\u00e1rios? Por que apenas testar manualmente n\u00e3o nos garante que o c\u00f3digo se mant\u00e9m funcionando ap\u00f3s mudan\u00e7as? Bom \u00e9 claro que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1590,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[279,280,118,278],"tags":[281,284,283,282],"_links":{"self":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/1588"}],"collection":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1588"}],"version-history":[{"count":5,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/1588\/revisions"}],"predecessor-version":[{"id":1624,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/posts\/1588\/revisions\/1624"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/media\/1590"}],"wp:attachment":[{"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.erudio.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}