Afinal, o que é TDD? \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 08 Horas 

 56 Min 

 42 Seg 

   Tempo restante da oferta: 08 56 42 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Afinal, o que é TDD?  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

# Afinal, o que é TDD?

 Veja nesse artigo como funciona o TDD e quais seus benefícios.

 [ Marylene Guedes ](https://www.treinaweb.com.br/blog/autor/marylene-guedes) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/04105137/tdd.png)  

Durante o desenvolvimento de um software, é essencial aos desenvolvedores entregarem um software que funcione corretamente, com qualidade e no prazo. Para garantir estes pontos, é importante testarmos nossos softwares com o intuito de encontrar possíveis falhas. Dessa maneira, poderemos corrigir possíveis problemas antes de chegar ao usuário final.

Mas, testar um software corretamente não é algo tão simples como pode parecer. Por isso, existem diversas metodologias que visam testar os diferentes componentes de uma solução de software de maneira correta. Algumas destas metodologias visam testar a integração entre os componentes de um software, enquanto outras visam testar cada um dos componentes de maneira isolada.

Uma das metodologias que auxiliam a aplicar testes em nosso código de maneira mais granular é o TDD, que tem ficado cada vez mais popular. No TDD, você codifica o teste antes mesmo do código existir.

### O que vem a ser a sigla TDD?

**TDD** é uma sigla para **Test Driven Development**, ou *Desenvolvimento Orientado a Testes*. A ideia do TDD é que você trabalhe em ciclos. Estes ciclos ocorrem na seguinte ordem:

- Primeiro, escreva um teste unitário que inicialmente irá falhar, tendo em vista que o código ainda não foi implementado;
- Crie o código que satisfaça esse teste, ou seja: implemente a funcionalidade em questão. Essa primeira implementação deverá satisfazer imediatamente o teste que foi escrito no ciclo anterior;
- Quando o código estiver implementado e o teste satisfeito, refatore o código para melhorar pontos como legibilidade. Logo após, execute o teste novamente. A nova versão do código também deverá passar sem que seja necessário modificar o teste escrito inicialmente.

Vale ressaltar que TDD não é uma forma de escrever teste: ele é uma metodologia para desenvolvimento e escrita código.

[  ![C# (C Sharp) - TDD](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/csharp-tdd.svg)   Curso C# (C Sharp) - TDD Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-avancado-tdd)

### Ciclo do TDD

Os ciclos do TDD podem ser melhor visualizados na imagem abaixo:

![Ilustração do ciclo do TDD](https://dkrn4sk0rn31v.cloudfront.net/2019/11/04105020/img-tdd.png)

Perceba a existência dos três ciclos:

- **Red:** escreva um pequeno teste automatizado que, ao ser executado, irá falhar;
- **Green:** implemente um código que seja suficiente para ser aprovado no teste recém-escrito;
- **Refactor:** refatore o código, a fim dele ser melhorado, deixando-o mais funcional e mais limpo.

Para realizar o teste em cada funcionalidade do seu código, você sempre irá seguir estes ciclos. Estes ciclos são comumente referenciados como **red-green-refactor** ou **red-green-blue**.

A ideia é que você utilize estes ciclos para testes unitários - testes estes que visam avaliar o comportamento de classes e métodos em específico. Você irá identificar quais são os comportamentos esperados dos métodos a serem desenvolvidos. Ao invés de implementar o código inicialmente, você irá criar o código de teste ligado a essas classes e métodos que você deseja implementar. Como esse código ainda não estará devidamente implementado, o teste irá falhar (**red**), para que em seguida você faça a implementação dessa funcionalidade. Com a implementação, é esperado que esse teste passe (**green**). No final, você pode melhorar esse código, evitando duplicidade e trechos de código desnecessários (**refactor**) e irá fazer o teste novamente, onde ele deve passar. Assim você terá um código funcional e já devidamente testado.

### Quais os benefícios?

Existem diversos benefícios ao escrevermos os testes antes mesmo de realizar uma implementação. Um dos benefícios é que, como você vai saber o que o código precisa fazer antecipadamente, você acaba evitando de escrever código demasiadamente complexo ou que não siga os pré-requisitos de negócio.

Além disso, se você for deixar para testar as funcionalidades do seu código depois, você pode acabar não realizando os testes como deveria. Isso aumenta o risco de, por exemplo, realizarmos alterações no código por conta de testes que não passaram, aumentando substancialmente a possibilidade de introduzirmos problemas com estas alterações. Escrevendo os testes na etapa inicial, pode até parecer que acabamos tendo uma tarefa a mais a ser desempenhada; porém, no fim, seu software terá menos possibilidade de falhas, além de você acabar desenvolvendo código com mais qualidade.

Para facilitar ainda mais, existem diversas ferramentas que nos fazem ganhar ainda mais tempo. Alguns exemplos para diferentes linguagens são:

- **.NET** - *NUnit*
- **[PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "O que é PHP?")** - *PHPUnit*
- **[Node](https://www.treinaweb.com.br/blog/node-js-por-que-voce-deve-conhecer-essa-tecnologia/ "Node.js: por que você deve conhecer essa tecnologia?") ou [Javascript](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-javascript/ "O que é e como começar com JavaScript?")** - *Jasmine*
- **[Java](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-java/ "O que é e como começar com Java?")** - *JUnit*
- **[Python](https://www.treinaweb.com.br/blog/o-que-e-python/ "O que é Python?")** - *PyUnit*

[  ![JavaScript - Testes automatizados com Jasmine](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/jasmine.svg)   Curso JavaScript - Testes automatizados com Jasmine Conhecer o curso ](https://www.treinaweb.com.br/curso/testes-automatizados-em-javascript-com-jasmine)

Até a próxima =)

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/BANNER-BLOG-2-2.jpg) ](https://api.whatsapp.com/send/?phone=5544988609539&text=Olá,+li+o+artigo+no+blog+e+gostaria+de+saber+mais+sobre+a+TreinaWeb.)

Autor

 ![Marylene Guedes](//secure.gravatar.com/avatar/5b0ba52b3705f298802db58782656bbc?d=mm)

## Marylene Guedes

 Responsável pelo sucesso do cliente na TreinaWeb. Graduada em Gestão de Tecnologia da Informação pela FATEC Guaratinguetá, além de estudante de UX/UI. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/marylene-guedes)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/afinal-o-que-e-um-container-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     6 anos atrás

    ##  [ Afinal, o que é um container? ](https://www.treinaweb.com.br/blog/afinal-o-que-e-um-container) 

     Confira neste artigo o que vem a ser um container.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/02/10171338/AUP-400x280.png)  [ Engenharia de Software ](https://www.treinaweb.com.br/blog/categoria/engenharia-de-software) 

     7 anos atrás

    ##  [ Afinal, o que é AUP - Processo Unificado Ágil? ](https://www.treinaweb.com.br/blog/afinal-o-que-e-aup-processo-unificado-agil) 

     Vamos abordar neste artigo mais uma metodologia: AUP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/01/07093212/PYTHON-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     7 anos atrás

    ##  [ Afinal, por que devo aprender Python para 2020? ](https://www.treinaweb.com.br/blog/afinal-por-que-devo-aprender-python-para-2020) 

     Veja neste artigo os motivos para aprender Python neste ano de 2020.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/03/08160445/capa-linq-400x280.jpg)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     8 anos atrás

    ##  [ Afinal: o que é de fato o LINQ? ](https://www.treinaweb.com.br/blog/afinal-o-que-e-de-fato-o-linq) 

     O LINQ é uma das features mais legais e poderosas do .NET. Porém, você sabe exatamente o que é o LINQ afinal? Sabe como o LINQ trabalha para tornar suas consultas agnósticas? Vamos responder a estas perguntas neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/09/12180648/dev-ops-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     8 anos atrás

    ##  [ Afinal, o que é DevOps? ](https://www.treinaweb.com.br/blog/afinal-o-que-e-devops) 

     Você sabe o que é DevOps? Confira neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/15120239/capa-facade--400x280.png)  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) 

     7 anos atrás

    ##  [ O que é uma aplicação multitenant? ](https://www.treinaweb.com.br/blog/o-que-e-uma-aplicacao-multitenant) 

     Quando falamos de Software as a Service (SaaS) e cloud computing, é inevitável que o termo "multitenant" surja. Mas, afinal, o que é multitenancy?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/10/22104451/LOGICA-PROGRAMACAO-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     8 anos atrás

    ##  [ O que é de fato a lógica de programação? ](https://www.treinaweb.com.br/blog/o-que-e-de-fato-a-logica-de-programacao) 

     O termo pode parecer confuso ou muito genérico, principalmente para quem é iniciante. Mas o que é, afinal, a tal lógica de programação?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/09/soft-skills-o-que-as-empresas-buscam-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     6 anos atrás

    ##  [ Soft Skills - O que as empresas buscam? ](https://www.treinaweb.com.br/blog/soft-skills-o-que-as-empresas-buscam) 

     Confira neste artigo as 5 soft skills mais valorizadas no mercado atualmente, segundo o LinkedIn.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/08/23104200/PRINCIPAIS-COMANDOS-SQL-400x280.png)  [ Bancos de Dados ](https://www.treinaweb.com.br/blog/categoria/bancos-de-dados) 

     7 anos atrás

    ##  [ Principais comandos SQL ](https://www.treinaweb.com.br/blog/principais-comandos-sql) 

     Neste artigo abordaremos os principais comandos do SQL: DQL, DLL e DML.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/como-se-destacar-da-concorrencia-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Como se destacar no mercado de TI? ](https://www.treinaweb.com.br/blog/como-se-destacar-no-mercado-de-ti) 

     Confira neste artigo com se destacar no mercado de TI com algumas dicas super importantes que vão te colocar na frente da concorrência.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/oportunidades-TI-min-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Como aumentar suas oportunidades na área de TI ](https://www.treinaweb.com.br/blog/como-aumentar-suas-oportunidades-na-area-de-ti) 

     Veremos neste artigo algumas dicas que você pode colocar em prática para criar suas próprias oportunidades na área de TI.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/09/TAILWIND-CSS-400x280.jpg)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     4 anos atrás

    ##  [ O que é Tailwind CSS e como instalar via CDN? ](https://www.treinaweb.com.br/blog/o-que-e-tailwind-css-e-como-instalar-via-cdn) 

     Neste artigo aprenderemos a criar um navbar usando Tailwind CSS, e entender melhor como funciona seus componentes de estilização.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **08h 56min 42s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
