Pular para o conteúdo principal

Questão de Engenharia de Software — TDD e BDD (Test-Driven Development e Behavior Driven Development) — INSTITUTO AOCP 2024

Engenharia de SoftwareTDD e BDD (Test-Driven Development e Behavior Driven Development)
Código
qa631588
Banca
INSTITUTO AOCP
Órgão
TRF 2
Ano
2024
Cargo
TJ TRF2

Sobre o desenvolvimento orientado por testes (Test-Driven Development - TDD), analise as assertivas e assinale a alternativa que aponta as corretas.

 

I. No TDD, os testes são escritos antes do código funcional.

 

II. O TDD não elimina a necessidade de testes de aceitação e de sistema.

 

III. O ciclo do TDD consiste em escrever um teste, escrever o código mínimo necessário para passar o teste e depois refatorar o código.

 

IV. TDD é utilizado somente para desenvolvimento de software ágil.


  1. AApenas I e III.
  2. BApenas I, III e IV.
  3. CApenas II e IV.
  4. DApenas I, II e III.
  5. EApenas I e II.
Revelar gabarito e comentário

GabaritoD — Apenas I, II e III.

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”.

Test-Driven Development (TDD): conceitos e ciclo

Gabarito: letra D — corretos os itens I, II e III. O TDD é uma técnica de desenvolvimento em que os testes são escritos antes do código funcional (item I), o ciclo segue a sequência escrever teste → código mínimo → refatorar (item III), e ele não elimina a necessidade de testes de aceitação e de sistema (item II). O item IV está incorreto porque o TDD não é restrito a metodologias ágeis, podendo ser aplicado em diversos contextos.

O Test-Driven Development (Desenvolvimento Orientado a Testes) é uma técnica de desenvolvimento de software criada e disseminada por Kent Beck, que se baseia em um ciclo curto e repetitivo de etapas. A ideia central é inverter a ordem tradicional: em vez de escrever o código e depois testá-lo, o desenvolvedor primeiro escreve um teste automatizado que define o comportamento desejado de uma nova funcionalidade, executa esse teste e o vê falhar (etapa vermelha), depois escreve o código mínimo necessário para fazer o teste passar (etapa verde) e, por fim, refatora o código para melhorar sua qualidade sem alterar seu comportamento (etapa de refatoração). Esse ciclo é conhecido como Red-Green-Refactor.

O TDD é frequentemente associado a metodologias ágeis, especialmente ao Extreme Programming (XP), mas isso não significa que seja exclusivo delas. O TDD é uma técnica que pode ser adotada em qualquer processo de desenvolvimento, independentemente da metodologia utilizada. A afirmação de que ele é usado "somente" para desenvolvimento ágil é uma generalização incorreta.

Outro ponto importante é que o TDD foca principalmente em testes unitários, que verificam o funcionamento de unidades isoladas de código (funções, métodos, classes). No entanto, isso não substitui os demais níveis de teste, como os testes de integração, de sistema e de aceitação. Cada nível tem um objetivo específico: o teste de sistema verifica o software como um todo, e o teste de aceitação valida se o software atende aos requisitos do usuário. O TDD não elimina a necessidade desses testes, pois eles cobrem aspectos que os testes unitários não alcançam.

A banca explora exatamente essa confusão: o candidato pode pensar que, como o TDD já testa o código, os testes de aceitação e de sistema seriam desnecessários. Mas isso é um equívoco — o TDD é uma prática de desenvolvimento, não uma estratégia completa de testes. Guarde essa distinção: TDD é sobre escrever testes antes do código para guiar o desenvolvimento; os testes de aceitação e de sistema são níveis de teste que verificam o software em um contexto mais amplo.

Item

Afirmação

Correto?

I

No TDD, os testes são escritos antes do código funcional.

II

O TDD não elimina a necessidade de testes de aceitação e de sistema.

III

O ciclo do TDD consiste em escrever um teste, escrever o código mínimo necessário para passar o teste e depois refatorar o código.

IV

TDD é utilizado somente para desenvolvimento de software ágil.

  1. 1Escrever teste (falha)
  2. 2Código mínimo (passa)
  3. 3Refatorar
LEVEL · soulevel.com.br

Item I — ✅ Correto

O TDD realmente preconiza que os testes sejam escritos antes do código funcional. O desenvolvedor, ao receber a especificação de uma nova funcionalidade, deve primeiro programar um conjunto de testes automatizados para testar um código que ainda não existe. Esses testes devem falhar inicialmente, pois a funcionalidade não foi implementada. Essa é a essência do TDD: o teste guia o desenvolvimento.

Item II — ✅ Correto

O TDD não elimina a necessidade de testes de aceitação e de sistema. O TDD foca em testes unitários, que verificam unidades isoladas de código. Já os testes de aceitação e de sistema verificam o software em um nível mais alto: o teste de sistema testa o software como um todo, e o teste de aceitação valida se o software atende aos requisitos do usuário final. São níveis de teste complementares, não substitutos.

Item III — ✅ Correto

O ciclo do TDD é exatamente: escrever um teste, escrever o código mínimo necessário para passar no teste e, depois, refatorar o código. Essa é a sequência Red-Green-Refactor: na etapa vermelha, o teste é escrito e falha; na etapa verde, o código é escrito para fazer o teste passar; na etapa de refatoração, o código é melhorado sem alterar seu comportamento. A ordem é fundamental e é um dos pontos mais cobrados em provas.

Item IV — ❌ Incorreto

O TDD não é utilizado somente para desenvolvimento de software ágil. Embora seja fortemente associado a metodologias ágeis, como o XP, o TDD é uma técnica que pode ser aplicada em qualquer contexto de desenvolvimento, independentemente da metodologia. A palavra "somente" torna a afirmação incorreta, pois generaliza indevidamente o escopo de aplicação do TDD.

NÃO CAIA NESSA!

A banca tenta fazer o candidato acreditar que o TDD é exclusivo de metodologias ágeis (item IV). Na verdade, o TDD é uma técnica independente, que pode ser usada em qualquer processo de desenvolvimento. Fique atento a palavras como "somente", "sempre" ou "nunca" — elas costumam indicar generalizações indevidas.

PEGA ESSA DICA!

Para questões sobre TDD, memorize o ciclo Red-Green-Refactor e lembre-se de que ele foca em testes unitários, não substituindo os testes de aceitação e de sistema. Se a alternativa disser que o TDD elimina outros níveis de teste ou que é exclusivo de metodologias ágeis, ela está incorreta.

Gabarito: letra D — corretos os itens I, II e III.

Link permanente: /questoes/qa631588