Questão de Engenharia de Software — Geral — FUNDATEC 2025
Engenharia de Software›Geral
Código
qa700030
Banca
FUNDATEC
Órgão
IF Sertão PE
Ano
2025
Cargo
AnaTI ( )
Considere um desenvolvedor que adota a prática de Desenvolvimento Dirigido por Testes (TDD). Inicialmente, ele escreve um teste de unidade que falha, baseando-se unicamente na especificação de uma nova funcionalidade. Após implementar o código mínimo para que o teste passe, o desenvolvedor analisa a estrutura interna e a lógica do código recém-criado para se inspirar e decidir qual será o próximo teste a ser escrito, buscando cobrir caminhos lógicos específicos. Essa abordagem de teste , considerando o ciclo TDD descito, é melhor caracteriza como:
AUm processo que inicia como caixa-preta, guiado pela especificação, e evolui para incorporar aspectos de caixa-branca ao usar a estrutura do código para guiar novos testes.
BUma aplicação exclusiva de teste de caixa-branca, visto que a análise da estrutura interna do código é o principal fator para a elaboração de todos os testes no ciclo de desenvolvimento.
CUm método predominantemente de teste de caixa-preta, pois a definição original do que será testado se baseia nos requisitos funcionais, sendo a implementação um fator secundário.
DUm tipo de teste de unidade focado no comportamento, que supera as classificações de caixa-preta e caixa-branca, pois o objetivo é apenas a verificação funcional externa.
EUma forma de teste de regressão estrutural, pois a análise do código implementado visa prioritariamente validar se as alterações recentes afetaram a estrutura de componentes existentes.
Revelar gabarito e comentário▾
GabaritoA — Um processo que inicia como caixa-preta, guiado pela especificação, e evolui para incorporar aspectos de caixa-branca ao usar a estrutura do código para guiar novos testes.
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 e as técnicas de teste: caixa-preta e caixa-branca
Gabarito: letra A. O TDD começa com um teste escrito a partir da especificação — sem conhecer a implementação, portanto caixa-preta — e, após o código passar, o desenvolvedor usa a estrutura interna do código para guiar os próximos testes, incorporando aspectos de caixa-branca. É exatamente essa evolução que a alternativa A descreve.
O Desenvolvimento Dirigido por Testes (TDD) é uma prática de desenvolvimento em que os testes são escritos antes do código. O ciclo clássico é conhecido como Red-Green-Refactor: primeiro escreve-se um teste que falha (Red), depois implementa-se o código mínimo para fazê-lo passar (Green) e, por fim, refatora-se o código para melhorar sua estrutura sem alterar o comportamento (Refactor). O ponto central do TDD é que o teste é a especificação executável da funcionalidade — ele define o que o código deve fazer antes de o código existir.
A questão explora a relação entre o TDD e as duas grandes técnicas de teste: caixa-preta e caixa-branca. O teste de caixa-preta (também chamado de funcional ou comportamental) verifica o software a partir de sua interface externa, sem conhecer a estrutura interna — o testador se baseia nos requisitos e especificações. Já o teste de caixa-branca (estrutural) exige conhecimento da estrutura interna do código — o testador analisa caminhos lógicos, condições, fluxos de dados e ramificações para criar casos de teste.
No TDD, o primeiro teste de uma funcionalidade é escrito unicamente com base na especificação, ou seja, sem olhar para o código — isso é caixa-preta. Porém, após implementar o código mínimo para o teste passar, o desenvolvedor analisa a estrutura interna e a lógica do código recém-criado para decidir o próximo teste, buscando cobrir caminhos lógicos específicos — isso é caixa-branca. Portanto, o TDD não é exclusivamente caixa-preta nem caixa-branca: ele começa como caixa-preta e evolui para incorporar aspectos de caixa-branca ao longo do ciclo. Essa é a caracterização mais precisa e completa.
A pegadinha da questão está em forçar o candidato a escolher um único rótulo (caixa-preta OU caixa-branca), quando o TDD, na verdade, combina as duas abordagens em momentos diferentes do ciclo. A alternativa A é a única que captura essa dualidade temporal.
Técnica de teste
Momento no ciclo TDD
Base para elaboração do teste
Caixa-preta
Primeiro teste (Red)
Especificação/requisitos funcionais
Caixa-branca
Testes subsequentes (após Green)
Estrutura interna e caminhos lógicos do código
1Escreve teste (caixa-preta)
2Implementa código mínimo
3Analisa estrutura (caixa-branca)
4Escreve próximo teste
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Descreve com precisão o fenômeno: o processo inicia como caixa-preta (teste guiado pela especificação, sem conhecer o código) e evolui para incorporar aspectos de caixa-branca (ao usar a estrutura do código para guiar novos testes). É exatamente o que o enunciado descreve: primeiro o teste falha baseado na especificação; depois, com o código implementado, o desenvolvedor analisa a estrutura interna para decidir o próximo teste. A alternativa espelha os termos-chave do enunciado: "especificação" (caixa-preta) e "estrutura interna" (caixa-branca).
Alternativa B — ❌ Incorreta
Afirma que o TDD é uma aplicação exclusiva de caixa-branca, pois a análise da estrutura interna seria o principal fator para todos os testes. Isso é falso: o primeiro teste de cada funcionalidade é escrito antes do código existir, baseado apenas na especificação — não há estrutura interna para analisar nesse momento. A caixa-branca entra apenas depois, para guiar os testes subsequentes. A palavra "exclusiva" e "todos" tornam a alternativa incorreta.
Alternativa C — ❌ Incorreta
Diz que o TDD é um método predominantemente de caixa-preta, pois a definição original se baseia nos requisitos funcionais, sendo a implementação um fator secundário. Embora o primeiro teste seja de caixa-preta, a análise da estrutura interna não é secundária — ela é parte essencial do ciclo para decidir os próximos testes e cobrir caminhos lógicos. A alternativa ignora a fase de caixa-branca que o próprio enunciado descreve.
Alternativa D — ❌ Incorreta
Afirma que o TDD é um tipo de teste de unidade focado no comportamento que supera as classificações de caixa-preta e caixa-branca. Isso é um equívoco conceitual: o TDD não supera essas classificações — ele as combina em momentos diferentes. As técnicas de caixa-preta e caixa-branca continuam sendo os eixos que descrevem como os testes são elaborados; o TDD apenas as utiliza de forma sequencial. Além disso, o TDD não se limita a "verificação funcional externa" — ele também usa a estrutura interna.
Alternativa E — ❌ Incorreta
Caracteriza o TDD como uma forma de teste de regressão estrutural, cujo objetivo seria validar se alterações recentes afetaram a estrutura de componentes existentes. Isso confunde o TDD com o teste de regressão, que é uma prática de reexecutar testes para garantir que mudanças não introduziram novos defeitos. No TDD, a análise da estrutura interna serve para criar novos testes que cobrem caminhos lógicos — não para validar alterações em componentes existentes. A finalidade é diferente.
NÃO CAIA NESSA!
A banca tenta fazer você escolher um único rótulo — caixa-preta OU caixa-branca — quando o TDD, na verdade, combina as duas em momentos diferentes. O primeiro teste é caixa-preta (especificação); os testes seguintes incorporam caixa-branca (estrutura interna). Se a alternativa usar "exclusivamente", "predominantemente" ou "supera", desconfie: o TDD é uma evolução de caixa-preta para caixa-branca.
PEGA ESSA DICA!
Para questões sobre TDD e técnicas de teste, lembre-se do ciclo Red-Green-Refactor e pergunte: "em que momento do ciclo o teste foi escrito?" Se foi antes do código, é caixa-preta; se foi depois, analisando a estrutura, é caixa-branca. O TDD faz os dois — por isso a alternativa que descreve a transição entre as duas é quase sempre a correta.