{"id":21282,"date":"2021-03-07T08:00:00","date_gmt":"2021-03-07T11:00:00","guid":{"rendered":"https:\/\/blog.locaweb.com.br\/?p=21282"},"modified":"2022-04-11T10:21:16","modified_gmt":"2022-04-11T13:21:16","slug":"diferenca-entre-bdd-tdd","status":"publish","type":"post","link":"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/diferenca-entre-bdd-tdd\/","title":{"rendered":"Saiba qual \u00e9 a diferen\u00e7a entre TDD e BDD"},"content":{"rendered":"<p>TDD e BDD s\u00e3o siglas muito parecidas e constantemente utilizadas no universo do desenvolvimento. \u00c9 muito comum existir uma confus\u00e3o sobre o significado de cada uma. Para saber a diferen\u00e7a entre TDD e BDD continue a leitura!<\/p>\n<h2>O que significa TDD?\u00a0<\/h2>\n<h3>Desenvolvimento Guiado por Testes<\/h3>\n<p>TDD (Test Driven Development) \u00e9 uma <strong>metodologia de desenvolvimento de software<\/strong> muito simples de entender. A ideia \u00e9 basicamente: Escrever um teste automatizado antes de come\u00e7ar a desenvolver o c\u00f3digo de fato.<\/p>\n<p>Temos ent\u00e3o um processo para desenvolver todo e qualquer c\u00f3digo:<\/p>\n<ol>\n<li>Escreva um teste para a funcionalidade desejada, sem nada implementado;<\/li>\n<li>Rode o teste criado e veja-o quebrando;<\/li>\n<li>Escreva o c\u00f3digo que far\u00e1 o teste passar;<\/li>\n<li>Rode novamente o teste e veja-o passando;<\/li>\n<li>Revise o c\u00f3digo feito, refatorando-o, melhorando o que for poss\u00edvel;<\/li>\n<li>Repita tudo novamente.<\/li>\n<\/ol>\n<p>A grande vantagem deste processo \u00e9 garantir uma cobertura de testes para 100% do c\u00f3digo, j\u00e1 que nada \u00e9 desenvolvido sem que um teste exista antes.<\/p>\n<p>Al\u00e9m disso, ajuda o desenvolvedor a pensar melhor sobre as implementa\u00e7\u00f5es, em como testar e garantir que algo realmente ir\u00e1 funcionar, a revisar o trabalho rec\u00e9m feito para torn\u00e1-lo ainda melhor e assim por diante.<\/p>\n<h2>O que significa BDD?<\/h2>\n<h3>Desenvolvimento Guiado por Comportamento<\/h3>\n<p>Antes de falarmos o que significa BDD, vejamos o conceito de criar c\u00f3digos baseados em descri\u00e7\u00f5es do comportamento que uma funcionalidade deve ter.<\/p>\n<p>Um exemplo de descrever uma nova demanda ao desenvolvedor poderia ser:<\/p>\n<p><strong>Novo sistema de pontua\u00e7\u00e3o:<br \/><\/strong>Agora os usu\u00e1rios ter\u00e3o uma pontua\u00e7\u00e3o em seu perfil, precisamos adicionar um campo chamado \u201cscore\u201d ao banco de dados e conseguir adicionar ou remover pontos dos usu\u00e1rios atrav\u00e9s de uma Stored Procedure.<\/p>\n<p>Passamos uma informa\u00e7\u00e3o t\u00e9cnica informando exatamente o que deve ser feito. J\u00e1 com BDD (Behavior Driven Development), a ideia \u00e9 <strong>descrever o comportamento esperado<\/strong> desta funcionalidade e n\u00e3o tentar dizer como ela deve ser implementada, exemplo:<\/p>\n<p><strong>Novo sistema de pontua\u00e7\u00e3o:<br \/><\/strong>Todo usu\u00e1rio dever\u00e1 possuir uma pontua\u00e7\u00e3o num\u00e9rica em seu perfil;<br \/>Vamos supor que um usu\u00e1rio possui 5 pontos;<br \/>Quando receber 10 pontos, ele dever\u00e1 ter 15 pontos em seu perfil;<br \/>Se ap\u00f3s isso ele perder 2 pontos, ele ter\u00e1 ent\u00e3o 13 pontos em seu perfil.<\/p>\n<p>Ambas as demandas pretendem atingir o mesmo objetivo: Criar um novo sistema de pontua\u00e7\u00e3o, mas na segunda op\u00e7\u00e3o, seguindo os <strong>conceitos de BDD<\/strong> (Behavior Driven Development)<strong>,<\/strong> temos a descri\u00e7\u00e3o de como a funcionalidade deve se comportar ao inv\u00e9s de dizer o que deve ser feito tecnicamente.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-34311\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2016\/06\/diferenca-entre-tdd-e-bdd.png\" alt=\"diferen\u00e7a entre tdd e bdd\" width=\"812\" height=\"500\" \/><\/p>\n<h2>Vantagens ao adotar o conceito de BDD (Behavior Driven Development):<\/h2>\n<h2>Melhor desenvolvimento<\/h2>\n<p>Deixamos o desenvolvedor entender do ponto de vista do usu\u00e1rio o que \u00e9 esperado da funcionalidade, dando liberdade para ele pensar na melhor solu\u00e7\u00e3o t\u00e9cnica ao inv\u00e9s de sugerir uma <strong>implementa\u00e7\u00e3o<\/strong> que pode n\u00e3o ser a ideal ou n\u00e3o resultar no comportamento esperado.<\/p>\n<h2>Maior intera\u00e7\u00e3o entre as \u00e1reas<\/h2>\n<p>Pessoas que n\u00e3o s\u00e3o da \u00e1rea t\u00e9cnica podem participar e contribuir ativamente na <strong>descri\u00e7\u00e3o das demandas<\/strong>, j\u00e1 que n\u00e3o \u00e9 preciso entender detalhes de programa\u00e7\u00e3o, mas sim o comportamento esperado do ponto de vista de outras \u00e1reas como neg\u00f3cio, marketing, usabilidade, experi\u00eancia do usu\u00e1rio, etc.<\/p>\n<p>Tudo isso ajuda a integrar as diferentes \u00e1reas de uma equipe, <a href=\"https:\/\/blog.locaweb.com.br\/temas\/codigo-aberto\/como-se-tornar-uma-pessoa-dev-mais-produtiva\/\">diminuir falhas de comunica\u00e7\u00e3o<\/a> e um poss\u00edvel desperd\u00edcio desenvolvendo algo que n\u00e3o foi exatamente o que imaginavam.<\/p>\n<p>Ent\u00e3o, o que queremos \u00e9 evitar dizer o que deve ser feito a n\u00edvel de programa\u00e7\u00e3o. Queremos descri\u00e7\u00f5es humanas, contando pequenas est\u00f3rias sobre o <strong>comportamento de uma funcionalidade<\/strong> e se basear nisso para iniciar o processo de desenvolvimento.<\/p>\n<p>Com as demandas geradas em est\u00f3rias, com descri\u00e7\u00f5es humanas sobre o comportamento esperado, a\u00ed podemos partir para um ponto de vista mais t\u00e9cnico sobre BDD que envolve quest\u00f5es sobre como criar testes automatizados que validem o <strong>c\u00f3digo desenvolvido<\/strong> baseados nessas est\u00f3rias, etc. Mas n\u00e3o vamos nos aprofundar nisso hoje.<\/p>\n<h2>Qual \u00e9 a diferen\u00e7a entre TDD e BDD?<\/h2>\n<p>O TDD busca garantir a <a href=\"https:\/\/blog.locaweb.com.br\/temas\/codigo-aberto\/como-se-tornar-uma-pessoa-dev-mais-produtiva\/\">qualidade do c\u00f3digo<\/a>, sempre pensando em 100% de cobertura de testes, melhorar o que acabou de ser feito e nunca escrever uma linha de c\u00f3digo sem antes pensar em como garantir que aquilo ir\u00e1 funcionar.<\/p>\n<p>J\u00e1 o BDD trabalha para definir como uma demanda chega ao desenvolvedor, integrar diferentes \u00e1reas da empresa e pensar a partir do ponto de vista do comportamento esperado de uma funcionalidade pelo usu\u00e1rio. Por consequ\u00eancia, ele acaba influenciando em como os testes s\u00e3o planejados e escritos.<\/p>\n<p>Podemos dizer ent\u00e3o que TDD n\u00e3o vai contra o BDD, voc\u00ea pode aplicar ambos os m\u00e9todos em conjunto ou apenas um deles. Ambos buscam melhorar o desenvolvimento de software e s\u00e3o ideias muito bacanas para se ter em qualquer empresa\/projeto.<\/p>\n<p>Agora, que voc\u00ea j\u00e1 entendeu a diferen\u00e7a entre TDD e BDD, continue acompanhando nossos conte\u00fados e esteja sempre atualizado com o que est\u00e1 rolando para alavancar a sua carreira DEV!<\/p>\n\n\n<div class=\"user-cta-block\" style=\"background-color:#2E333C;\"><p>Aumente a performance dos seus projetos com a VPS da Locaweb!<\/p><a class=\"user-cta\" style=\"background-color: #F00842\n;\" href=\"https:\/\/www.locaweb.com.br\/cloud\/vps-locaweb\/?utm_source=blog&#038;utm_medium=own&#038;utm_campaign=blog-saiba-mais-vps-locaweb-tdd-bdd&#038;utm_id=vendas-blog\" target=\"_blank\" rel=\"noopener\">SAIBA MAIS<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>TDD e BDD s\u00e3o siglas muito parecidas e constantemente utilizadas no universo do desenvolvimento. \u00c9 muito comum existir uma confus\u00e3o sobre o significado de cada uma. Para saber a diferen\u00e7a entre TDD e BDD continue a leitura! O que significa TDD?\u00a0 Desenvolvimento Guiado por Testes TDD (Test Driven Development) \u00e9 uma metodologia de desenvolvimento de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":34312,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-21282","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-aberto"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/21282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=21282"}],"version-history":[{"count":1,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/21282\/revisions"}],"predecessor-version":[{"id":34313,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/21282\/revisions\/34313"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media\/34312"}],"wp:attachment":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=21282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=21282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=21282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}