Questão de Engenharia de Software — TDD e BDD (Test-Driven Development e Behavior Driven Development) — INSTITUTO AOCP 2024
Engenharia de Software›TDD 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.
AApenas I e III.
BApenas I, III e IV.
CApenas II eIV.
DApenas I, II e III.
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.
❌
1Escrever teste (falha)
2Código mínimo (passa)
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.