Pular para o conteúdo principal

Questão de Engenharia de Software — TDD e BDD (Test-Driven Development e Behavior Driven Development) — CESPE / CEBRASPE 2025

Engenharia de SoftwareTDD e BDD (Test-Driven Development e Behavior Driven Development)
Código
ce417778
Banca
CESPE / CEBRASPE
Órgão
TRF 6
Ano
2025
Cargo
TJ TRF6
A respeito de aplicação de testes, julgue o item a seguir.   Na utilização das técnicas de desenvolvimento guiado por testes (TDD), deve ser escrito um novo código apenas quando um teste automatizado falhar.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

TDD (Test-Driven Development) — Ciclo Red-Green-Refactor

Gabarito: Certo (C). A afirmativa está correta porque, no TDD, a regra fundamental é escrever um teste automatizado que falha antes de escrever o código de produção; o novo código só é criado para fazer esse teste passar. Essa é a essência do ciclo Red-Green-Refactor, em que a etapa "Red" (vermelha) consiste em escrever um teste que inicialmente falha, e a etapa "Green" (verde) consiste em escrever o código mínimo necessário para fazê-lo passar.

O Desenvolvimento Guiado por Testes (TDD) é uma técnica de desenvolvimento de software que inverte a ordem tradicional: em vez de escrever o código e depois testá-lo, o desenvolvedor escreve primeiro o teste automatizado que define o comportamento esperado da nova funcionalidade. Esse teste, ao ser executado, deve falhar — justamente porque o código que implementa a funcionalidade ainda não existe. Essa falha inicial é proposital e serve para comprovar que o teste é eficaz, ou seja, que ele realmente detecta a ausência da funcionalidade. Se o teste passasse antes de existir o código, isso indicaria que o teste não está testando nada de útil ou que a funcionalidade já existia no sistema.

O ciclo do TDD é composto por três etapas principais, conhecidas como Red-Green-Refactor:

  1. Red (Vermelho): Escrever um teste automatizado para a nova funcionalidade e executá-lo, observando-o falhar. Essa falha confirma que o teste é válido e que a funcionalidade ainda não foi implementada.

  2. Green (Verde): Escrever o código mínimo necessário (e somente ele) para fazer o teste passar. O objetivo aqui é a simplicidade, não a perfeição.

  3. Refactor (Refatorar): Melhorar a estrutura do código recém-criado, eliminando duplicações e melhorando a qualidade, sem alterar seu comportamento externo. Após a refatoração, todos os testes devem continuar passando.

A afirmativa da questão espelha exatamente a regra da etapa Red: "deve ser escrito um novo código apenas quando um teste automatizado falhar". Ou seja, o gatilho para escrever código de produção é a existência de um teste que falha. Essa é a "regra de ouro" do TDD, que garante que todo código produzido esteja sempre coberto por um teste que o valide.

A pegadinha que a banca explora neste tema é a inversão do sentido da regra. Muitos candidatos confundem e acham que o código novo só é escrito quando o teste passa, ou que o teste é escrito depois do código. No TDD, a ordem é exatamente o oposto: primeiro o teste (que falha), depois o código (para fazer o teste passar).

NÃO CAIA NESSA!

A banca adora inverter o sentido da regra do TDD. Aqui, a afirmativa diz "deve ser escrito um novo código apenas quando um teste automatizado falhar" — e isso está certo! O candidato desatento pode achar que a palavra correta seria "passar", mas no TDD o código só é escrito para fazer um teste que falhou passar. Lembre-se: teste falha (Red) → código (Green) → refatora (Refactor). Com treino, você enxerga essa inversão de longe 💪.

  1. 1Red: escreve teste que falha
  2. 2Green: código mínimo p/ passar
  3. 3Refactor: melhora sem alterar
LEVEL · soulevel.com.br

Alternativa C — ✅ Certo ⟵ GABARITO

A afirmativa está correta. No TDD, a regra é exatamente essa: o novo código de produção só deve ser escrito quando houver um teste automatizado que esteja falhando. Essa é a essência da etapa Red do ciclo Red-Green-Refactor. O teste que falha é o "motor" que impulsiona a escrita do código mínimo necessário para fazê-lo passar (etapa Green). Portanto, a afirmativa está em perfeita consonância com a técnica de desenvolvimento guiado por testes.

Alternativa E — ❌ Errada

A afirmativa não está errada. Ela descreve corretamente a regra fundamental do TDD. Se a afirmativa dissesse que o código novo só é escrito quando o teste passa, aí sim estaria errada, pois inverteria o ciclo: no TDD, o teste é escrito antes do código e deve falhar inicialmente. A alternativa E, portanto, é incorreta como resposta, pois a afirmativa é verdadeira.

Gabarito: letra C (Certo).

Link permanente: /questoes/ce417778