Questão de Engenharia de Software — TDD e BDD (Test-Driven Development e Behavior Driven Development) — CESPE / CEBRASPE 2025
- Código
- ce417778
- Banca
- CESPE / CEBRASPE
- Órgão
- TRF 6
- Ano
- 2025
- Cargo
- TJ TRF6
- CCerto
- EErrado
GabaritoC — Certo
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:
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.
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.
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).
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 💪.
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.
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