Test Driven Development: TDD Parte II

Por
Atualizado em
Publicado em
4 min. de leitura

Ciclo Red → Green → Refactor no TDD

O ciclo Red–Green–Refactor é o núcleo da abordagem de desenvolvimento orientado por testes (TDD). Ele organiza o processo de criação de software em pequenos ciclos de verificação e evolução incremental. Esse fluxo garante que o código seja construído com base em testes, aumentando a confiabilidade e a qualidade do sistema desde as etapas iniciais.

  • RED (vermelho): O desenvolvedor começa escrevendo um teste automatizado para uma funcionalidade ainda inexistente. Como não há implementação, o teste falha, indicando que o comportamento desejado ainda não está presente.
  • GREEN (verde): Em seguida, o programador escreve o código mínimo necessário para que o teste passe. O foco aqui é apenas fazer o teste funcionar, sem se preocupar, neste momento, com qualidade de código ou estrutura ideal.
  • REFACTOR (refatorar): Com o teste passando, o código é melhorado internamente, ajustando nomes, extraindo métodos, eliminando duplicações, sem alterar o comportamento externo. Todos os testes devem continuar passando após essa refatoração.

Esse ciclo é repetido inúmeras vezes ao longo do desenvolvimento. A grande vantagem dessa abordagem é que cada pequena mudança é validada imediatamente, tornando os erros mais fáceis de localizar e corrigir.

EtapaDescrição
RedEscreve-se um teste que falha, pois o recurso ainda não existe.
GreenImplementa-se o código mínimo para fazer o teste passar.
RefactorO código é refatorado para melhorar sua qualidade, mantendo todos os testes funcionando.
ObjetivoGarantir que o código só evolua quando estiver devidamente testado e que seja mantido de forma limpa.

QUESTÃO INÉDITA

No ciclo Red–Green–Refactor do Test-Driven Development (TDD), a etapa “Green” consiste em refatorar o código para que todos os testes passem, adicionando melhorias funcionais sempre que necessário.

Comentário: 

A etapa Green é dedicada apenas a escrever o código mínimo necessário para que o teste passe. A refatoração ocorre depois, na etapa “Refactor”, e não deve incluir novas funcionalidades.

Gabarito está ERRADO


Teste de Regressão e TDD

Um dos maiores benefícios do desenvolvimento orientado por testes (TDD) é a redução significativa dos custos com testes de regressão. Esse tipo de teste consiste em executar novamente todos os testes que já haviam passado anteriormente, após qualquer alteração no sistema, com o objetivo de garantir que nenhuma nova falha tenha sido introduzida. 

Quando realizado manualmente, o teste de regressão pode ser extremamente caro e demorado, tornando-se inviável em muitos projetos. No entanto, com testes automatizados, como os adotados no TDD, o custo e o tempo de execução desses testes são reduzidos drasticamente. 

Isso permite que eles sejam executados constantemente, oferecendo feedback rápido ao desenvolvedor, e aumentando a confiabilidade das mudanças. Para que o desenvolvedor continue adicionando novas funcionalidades, é essencial que todos os testes anteriores continuem passando sem falhas, o que garante maior estabilidade do sistema.

Aplicabilidade, Limitações e Ferramentas

Embora o TDD traga diversos benefícios, como feedback rápido, aumento de produtividade, menor acoplamento e código mais coeso, ele apresenta limitações em determinados contextos. 

É mais eficaz no desenvolvimento de software novo, em que a funcionalidade é construída do zero ou com bibliotecas padrão bem testadas. Em sistemas legados ou com código reutilizado, o desenvolvedor precisa escrever testes adicionais para validar componentes já existentes. 

Em sistemas multi-threaded, por exemplo, o TDD pode ser ineficaz, pois diferentes execuções podem gerar comportamentos não determinísticos, dificultando a validação via testes automatizados. Além disso, o TDD não substitui os testes de sistema, que são necessários para validar desempenho, confiabilidade e conformidade com os requisitos dos usuários. Quanto às ferramentas, destacam-se JUnit, TestNG, NUnit, PHPUnit, Jasmine, PyUnit, entre outras, utilizadas para implementar testes unitários, testes de integração e testes de aceitação.

PULO DO GATO

Código limpo tende a propiciar mais segurança na correção de bug´s, melhora a eficiência da equipe, código fica mais flexível, mais coeso e menos acoplado.

SE LIGA

Embora o nome possa sugerir o contrário, o Test Driven Development (TDD) não é apenas uma estratégia para testar sistemas. Na verdade, trata-se de uma abordagem completa de desenvolvimento de software, em que os testes orientam o processo de codificação. Em muitos contextos, o TDD pode inclusive ser considerado uma técnica de programação estruturada, já que influencia diretamente a forma como o código é pensado, escrito e evoluído ao longo do tempo.


QUESTAO INÉDITA

A) O TDD é um conjunto de técnicas de teste voltadas exclusivamente para a validação de sistemas prontos.
B) Embora com foco em testes, o TDD é fundamentalmente uma abordagem de desenvolvimento de software.
C) O uso do TDD limita-se à criação de suítes de testes de regressão manual.
D) O TDD não interfere na forma de programação, apenas na fase de verificação do sistema.
E) O TDD substitui completamente os testes de sistema e de aceitação.

Comentário:
O TDD é, antes de tudo, uma estratégia de desenvolvimento, não apenas de teste. Sua lógica propõe que o código seja escrito com base em testes criados antecipadamente, o que o torna uma técnica de programação guiada por testes. As demais opções confundem escopo ou função da abordagem.

Gabarito é a letra B.


Uma Abordagem Guiada por Testes

O Test-Driven Development (TDD) se destaca por uma série de características que o tornam mais do que uma técnica de teste: ele é uma abordagem completa de desenvolvimento orientado à qualidade. Ao colocar os testes como ponto de partida e de sustentação do código, o TDD influencia diretamente o design, a organização e a manutenção do software. Cada funcionalidade é desenvolvida a partir de testes automatizados, que definem o comportamento esperado do sistema

CAIU NA PROVA

Ano: 2024 Banca: FGV Órgão: AL-SC Prova: FGV – 2024 – AL-SC – Analista Legislativo III – Analista de Sistemas 

A prática de Test Driven Development (TDD, ou Desenvolvimento Orientado por Testes) se relaciona com o conceito de verificação e validação e se baseia em um ciclo para garantir a qualidade do código. Entre as características do TDD, é correto o que se afirma em

A prática de Test Driven Development (TDD, ou Desenvolvimento Orientado por Testes) se relaciona com o conceito de verificação e validação e se baseia em um ciclo para garantir a qualidade do código.
Entre as características do TDD, é correto o que se afirma em


A) Trata-se de desenvolvimento orientado para os comportamentos, sendo o desenvolvedor responsável por escrever os testes e validá-los de forma que eles funcionem.
B) Trata-se de desenvolvimento orientado para os testes, sendo atribuição do programador escrever como o problema deve se comportar.
C) Na prática, se refere a escrever um teste automatizado durante o desenvolvimento do código de fato.
D) O ciclo do TDD se inicia com a criação de um teste, para auxiliar a codificação, segue com a realização da codificação para passar no teste, e finaliza com a eliminação das redundâncias, ao se refatorar o código.
E) No desenvolvimento de programas são intercalados testes, elicitação de requisitos e desenvolvimento de código, tendo os testes embutidos em um programa separado que os executa e invoca o sistema que está sendo testado.

Comentário

A alternativa D descreve corretamente o ciclo TDD (Red – Green – Refactor):

Red – escrever um teste que inicialmente falha;

Green – escrever o código necessário para fazer o teste passar;

Refactor – melhorar o código, eliminando duplicações ou melhorando estrutura sem alterar funcionalidade.

A) Descreve parcialmente o BDD (Behavior Driven Development), não o TDD.

B) Mistura conceitos e não expressa com clareza a prática do TDD.

C) Errado: o teste é escrito antes do código, não durante.

E) Mistura práticas gerais de testes com requisitos, mas não define corretamente o ciclo do TDD.

Gabarito é a letra D.

Bons estudo

Por
Atualizado em
Publicado em
4 min. de leitura