TDD PARTE I – Tecnologia da Informação

Por
Atualizado em
Publicado em
3 min. de leitura

O que é o TDD?

O Test-Driven Development (TDD), ou Desenvolvimento Guiado por Testes, é uma abordagem em que o desenvolvimento do código é orientado por testes previamente definidos. Nesse modelo, o programador escreve primeiro um teste automatizado para validar uma funcionalidade ainda inexistente, depois desenvolve o código suficiente para que o teste seja aprovado, e por fim refatora o código, mantendo os testes passando.

Essa técnica propõe um ciclo de desenvolvimento curto e iterativo, focado especialmente na criação de testes unitários. Apesar de seu forte vínculo com metodologias ágeis, como o Extreme Programming (XP), o TDD também pode ser utilizado em abordagens tradicionais, mais alinhadas a desenvolvimento orientado a plano.

A essência do TDD é a validação contínua do comportamento do código, tornando o desenvolvimento mais confiável e com menos regressões.

Quadro resumo:

ElementoDescrição
DefiniçãoTécnica de desenvolvimento em que o código é escrito com base em testes.
OrigemMetodologias ágeis (XP), mas aplicável a outras abordagens também.
FocoTestes unitários.
Objetivo principalGarantir confiabilidade, reduzir bugs e facilitar manutenções.

QUESTÃO INÉDITA

No desenvolvimento orientado por testes (TDD), qual das alternativas melhor representa a sequência correta do ciclo de desenvolvimento?

A) Codificação → Teste → Refatoração
B) Teste → Codificação → Integração
C) Teste → Falha → Codificação → Refatoração
D) Planejamento → Codificação → Teste
E) Codificação → Refatoração → Teste

Gabarito: C

Comentário: A sequência padrão do TDD é: escrever um teste que falha (Red), escrever o código mínimo necessário para passar o teste (Green), e refatorar (Refactor).

O Test-Driven Development (TDD) é uma técnica exclusivamente associada a metodologias ágeis, sendo inadequada para processos orientados a plano.

Comentário: Apesar de sua origem nas metodologias ágeis, o TDD pode ser adotado em abordagens tradicionais, como as orientadas a planos, desde que se mantenha o ciclo de teste–código–refatoração.

Gabarito está ERRADO.


CICLO COMPLETO

O ciclo do Test-Driven Development (TDD) inicia-se com a escrita de um teste automatizado para uma nova funcionalidade ainda não implementada. Como o código correspondente não existe, o teste naturalmente falha, indicando que há algo a ser desenvolvido. Em seguida, o programador implementa o código mínimo necessário para que esse teste passe com sucesso. Depois que o teste for aprovado, realiza-se uma refatoração do código, que consiste em melhorá-lo estruturalmente, sem alterar seu comportamento. Esse processo se repete em ciclos curtos, permitindo construir o sistema em pequenos blocos, validados continuamente.

EtapaDescrição
1. Planejar o incrementoIdentificar uma pequena parte da funcionalidade que será desenvolvida. Deve ser simples e de rápida implementação.
2. Escrever o testeCriar um teste automatizado para validar o comportamento esperado desse incremento.
3. Executar o testeComo a funcionalidade ainda não foi implementada, o teste deve falhar – isso é esperado e confirma a validade do teste.
4. Codificar e refatorarImplementar a funcionalidade, ajustando ou melhorando o código (refatoração) conforme necessário.
5. Reexecutar os testesGarantir que todos os testes passem antes de seguir para o próximo incremento.

Esse ciclo é repetido diversas vezes durante o desenvolvimento, formando um conjunto crescente de testes automatizados, que pode ser executado em poucos segundos, mesmo com centenas de casos.


Benefícios do TDD

O TDD proporciona vários ganhos ao processo de desenvolvimento de software. Ele promove alta cobertura de testes, pois cada trecho de código é acompanhado por pelo menos um teste automatizado. Isso permite que defeitos sejam identificados e corrigidos desde os estágios iniciais, além de facilitar o uso de testes de regressão a cada nova alteração no sistema. Outra vantagem é a facilidade na localização de erros, já que qualquer falha geralmente está no último código escrito.

Adicionalmente, os testes criados servem como uma documentação funcional viva, descrevendo o comportamento esperado do sistema. Por fim, ao exigir clareza na definição dos testes, o TDD contribui para um maior entendimento dos requisitos e objetivos de cada funcionalidade.

BenefícioDescrição
Clareza de objetivosPara escrever o teste, o desenvolvedor precisa compreender perfeitamente o que o código deve fazer.
Cobertura de códigoGarante que cada parte do código tenha pelo menos um teste. A execução completa assegura que nada ficou de fora.
Teste de regressãoMudanças futuras podem ser verificadas com o conjunto de testes anterior, evitando reintrodução de erros.
Facilidade de depuraçãoQuando um teste falha, a localização do erro é imediata, pois o problema está no último incremento.
Documentação vivaOs próprios testes funcionam como documentação funcional, pois descrevem o comportamento esperado do sistema.

QUESTÃO INÉDITA

Entre os benefícios do Test-Driven Development (TDD), destaca-se:

A) O uso obrigatório de ferramentas de depuração automatizadas a cada novo teste.
B) A garantia de que todas as entradas do sistema serão testadas exaustivamente.
C) A substituição da documentação técnica por testes unitários.
D) A cobertura completa do código e a possibilidade de identificar regressões rapidamente.
E) A eliminação da necessidade de compreender o problema antes de codificar.

Comentário: A letra D é correta porque o TDD, por meio dos testes automatizados escritos desde o início, garante ampla cobertura de código e permite detectar rapidamente qualquer regressão. As demais estão incorretas ou imprecisas.

Gabarito: D


CAIU NA PROVA

Ano: 2024 Banca: FGV Órgão: Prefeitura de Macaé – RJ Prova: FGV – 2024 – Prefeitura de Macaé – RJ – Analista Previdenciário – Especialidade: Analista de Sistemas

Test-Driven Development (TDD) é uma abordagem de desenvolvimento de software onde os testes são escritos antes do código que implementa a funcionalidade.
Assinale a afirmativa que melhor descreve o princípio fundamental do Test-Driven Development (TDD).

Alternativas
A) Escrever código de produção antes de criar testes para garantir que o código funcione conforme o esperado.
B) Desenvolver um conjunto de testes abrangentes apenas após a conclusão do desenvolvimento do código.
C) Criar e executar testes automatizados antes de escrever o código de produção para garantir que o código atenda aos requisitos.
D) Escrever código de produção e testes simultaneamente sem um processo definido para assegurar a funcionalidade.
E) Utilizar testes manuais para verificar o funcionamento do código antes de publicá-lo.

Comentário

O TDD (Test-Driven Development) segue um ciclo claro: escrever um teste que falha, escrever o código mínimo para passar no teste e, em seguida, refatorar o código. O teste vem antes do código de produção, e a automação é central no processo.

A) Inverte o fluxo do TDD. O código não é escrito antes dos testes.

B) Contraria o conceito de TDD, que prioriza os testes antes do desenvolvimento.

D) Não há simultaneidade sem processo definido no TDD; o ciclo é bem estruturado.

E) TDD depende de testes automatizados, não manuais.

Gabarito é a letra C.

Bons estudos!

Por
Atualizado em
Publicado em
3 min. de leitura