Questão nº 51
Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2024 (nº 51)
Durante o desenvolvimento de um projeto de software em uma empresa de tecnologia, foram identificados diversos problemas relacionados à falta de testes adequados. Muitas funcionalidades do software estavam com bugs, o que gerou retrabalho e atrasos na entrega do projeto. Para resolver esses problemas, a equipe responsável decidiu adotar a prática de Desenvolvimento Orientado por Testes (Test-Driven Development—TDD).
Quais são as etapas do ciclo de TDD que essa equipe deve seguir para garantir a implementação correta das funcionalidades e a redução de bugs no projeto?
- AEscrever todos os testes, implementar todo o código, executar todos os testes e, depois, corrigir o código a partir do relatório de falhas.
- BEscrever todos os testes, garantir que todos falham, implementar todo o código, executar cada teste um a um e corrigir imediatamente o código até tudo funcionar.
- CEscrever um teste, executá-lo e vê-lo falhar, implementar o código necessário para passar em todos os testes já criados, refatorar o código e, em seguida, repetir todo o processo. (alternativa correta)
- DEscrever todos os testes de unidade, implementar todo o código, executar todos os testes de unidade, corrigir todos os erros encontrados nas unidades, escrever todos os testes de integração, executar todos os testes e corrigir o código a partir do relatório de falhas.
- ERefatorar o código existente com foco na qualidade, escrever todos os testes para o novo código, testar todo o código e corrigi-lo a partir do relatório de falhas.
Resposta comentada
Gabarito Alternativa C
O TDD é um ciclo curto e repetitivo: primeiro você escreve um teste que falha (porque a função ainda não existe), depois escreve o mínimo de código para fazê-lo passar e, por fim, refatora (melhora o código sem mudar o comportamento). O segredo é ir de passo em passo, não escrever tudo de uma vez.
- (A) Incorreta: Escrever todos os testes e todo o código antes de executar quebra o ciclo do TDD, que exige feedback imediato de cada pequena etapa; isso gera retrabalho e não reduz bugs.
- (B) Incorreta: A armadilha aqui é "escrever todos os testes" e "implementar todo o código" de uma vez — isso é o oposto do TDD, que trabalha com um teste por vez, garantindo foco e simplicidade.
- (C) Correta: É exatamente o ciclo do TDD: Red (escrever um teste e vê-lo falhar), Green (implementar o código mínimo para passar), Refactor (melhorar o código) e repetir — isso garante cobertura incremental e menos bugs.
- (D) Incorreta: Mistura TDD com uma abordagem em cascata (testes unitários e de integração separados), o que não é o ciclo iterativo do TDD e aumenta o risco de erros acumulados.
- (E) Incorreta: Refatorar antes de escrever testes não é TDD; o TDD exige que o teste seja escrito antes do código, não depois, e que a refatoração ocorra após o teste passar.
Fonte: CESGRANRIO BASA 01/2024 Técnico Científico - Área de Formação: Tecnologia da Informação (Caderno Prova B). Reproduzida para fins de estudo.