Questão de Engenharia de Software — Conceitos e Tipos de Testes de Software — FUNDATEC 2023
Engenharia de Software›Conceitos e Tipos de Testes de Software
Código
qa541367
Banca
FUNDATEC
Órgão
IFC
Ano
2023
Cargo
PEBTT ( )
Dentro da área de testes de software, tem-se o conceito de “Testes Limpos”, o qual dispõe de cinco regras que formam o acrônimo em inglês F.I.R.S.T. Assinale a alternativa que contempla o significado desse acrônimo.
AFast, Independent, Recursive, Security, Time.
BFirst, Injection, Repeatable, Security, Timely.
C First, Independent, Recursive, Self-Validating, Temporary.
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”.
Testes Limpos: o acrônimo F.I.R.S.T.
Gabarito: letra D. O acrônimo F.I.R.S.T. — cunhado por Robert C. Martin (Uncle Bob) no contexto de desenvolvimento ágil e testes de unidade — significa Fast, Independent, Repeatable, Self-Validating, Timely (Rápido, Independente, Repetível, Autoverificável e Oportuno). A alternativa D é a única que traz exatamente esses cinco termos; as demais trocam um ou mais deles por palavras que não pertencem ao acrônimo (Recursive, Security, First, Injection, Temporary).
O conceito de "Testes Limpos" (Clean Tests) é um desdobramento do movimento de código limpo aplicado à suíte de testes automatizados. A ideia central é que os testes de unidade devem ser tratados como código de primeira classe — tão bem escritos e mantidos quanto o código de produção — e, para isso, precisam seguir cinco regras que garantem que a suíte seja confiável, rápida e fácil de manter. Vamos entender cada uma:
Fast (Rápido): os testes devem ser rápidos para executar. Se a suíte demora demais, os desenvolvedores param de rodá-la com frequência, e o feedback valioso se perde. Um teste que leva segundos é executado a cada alteração; um que leva minutos, talvez uma vez por dia; um que leva horas, quase nunca.
Independent (Independente): cada teste deve ser autossuficiente e não depender de outros testes para executar ou para validar seu resultado. Testes que dependem de ordem de execução ou de estado compartilhado são frágeis: um teste que falha pode derrubar uma cascata de outros, e o desenvolvedor perde tempo tentando descobrir qual é a causa raiz.
Repeatable (Repetível): o teste deve produzir o mesmo resultado em qualquer ambiente — na máquina do desenvolvedor, no servidor de integração contínua, em qualquer sistema operacional. Se um teste passa na sua máquina e falha na do colega, ele não é confiável e quebra a confiança na suíte.
Self-Validating (Autoverificável): o teste deve ter um resultado binário: passa ou falha. Não pode depender de interpretação humana, de olhar logs ou de verificar manualmente se a saída está correta. O desenvolvedor deve saber, com um único comando, se tudo está verde ou se algo quebrou.
Timely (Oportuno): o teste deve ser escrito no momento certo — idealmente, antes do código de produção (prática do TDD — Test-Driven Development). Escrever o teste depois do código, ou muito tempo depois, reduz seu valor, pois o desenvolvedor já perdeu a oportunidade de usar o teste para guiar o design e validar o comportamento esperado.
A banca explora aqui a memorização do acrônimo, mas com distratores que misturam termos de outros contextos da engenharia de software. Por exemplo, "Recursive" (recursivo) é um conceito de programação, não de teste; "Security" (segurança) é um atributo de qualidade ou um tipo de teste (teste de segurança), não uma regra dos testes limpos; "First" (primeiro) é uma palavra em inglês que começa com F, mas o correto é "Fast"; "Injection" (injeção) remete a injeção de dependência, um padrão de projeto; e "Temporary" (temporário) não faz parte do acrônimo. A pegadinha está em alternativas que começam com "First" (que parece plausível, pois o acrônimo é F.I.R.S.T.) e em trocar "Self-Validating" por "Security" ou "Repeatable" por "Recursive".
Guarde a lista exata: Fast, Independent, Repeatable, Self-Validating, Timely. É essa sequência que separa a alternativa correta das demais — qualquer variação de termo torna a alternativa incorreta.
F.I.R.S.T. (Testes Limpos): Fast (Rápido para executar); Independent (Não depende de outros testes); Repeatable (Mesmo resultado em qualquer ambiente); Self-Validating (Resultado binário: passa ou falha); Timely (Escrito no momento certo (TDD))
Alternativa A — ❌ Incorreta
Apresenta "Recursive" e "Security" no lugar de "Repeatable" e "Self-Validating". "Recursive" é um conceito de programação (função que chama a si mesma), não uma regra de teste; "Security" é um atributo de qualidade ou um tipo de teste (teste de segurança), não uma característica dos testes limpos. O correto é Repeatable (repetível) e Self-Validating (autoverificável).
Alternativa B — ❌ Incorreta
Troca "Fast" por "First" e "Self-Validating" por "Security". "First" é uma palavra que começa com F, mas o acrônimo usa "Fast" (rápido). "Security" (segurança) não é uma das cinco regras; o termo correto é "Self-Validating" (autoverificável). Além disso, "Injection" (injeção) não pertence ao acrônimo — remete a injeção de dependência, um padrão de projeto.
Alternativa C — ❌ Incorreta
Começa com "First" em vez de "Fast" e termina com "Temporary" em vez de "Timely". "First" não é o termo correto (é "Fast"), e "Temporary" (temporário) não faz parte do acrônimo — o correto é "Timely" (oportuno). "Recursive" também está errado, pois o termo correto é "Repeatable".
Alternativa D — ✅ Correta ⟵ GABARITO
Traz exatamente os cinco termos do acrônimo F.I.R.S.T.: Fast (rápido), Independent (independente), Repeatable (repetível), Self-Validating (autoverificável) e Timely (oportuno). É a única alternativa que reproduz fielmente o significado do acrônimo conforme definido por Robert C. Martin.
Alternativa E — ❌ Incorreta
Troca "Fast" por "First" e "Timely" por "Temporary". "First" não é o termo correto (é "Fast"), e "Temporary" (temporário) não pertence ao acrônimo — o correto é "Timely" (oportuno). "Injection" também está errado, pois não é uma das cinco regras.
NÃO CAIA NESSA!
Para fixar o acrônimo, associe cada letra a uma pergunta prática: o teste é Fast (rápido de rodar)? É Independent (não depende de outros)? É Repeatable (dá o mesmo resultado em qualquer ambiente)? É Self-Validating (passa ou falha sozinho)? Foi escrito no momento Timely (oportuno, idealmente antes do código)? Se alguma resposta for "não", o teste não é limpo. Na prova, desconfie de alternativas que troquem "Fast" por "First" (pegadinha clássica, pois o acrônimo começa com F) ou que usem termos de outros contextos, como "Security", "Recursive" ou "Injection".