Testes limpos seguem as regras do acrônimo FIRST (Fast, Indepedent, Repeatable, Self-validation, Timely).
Rapidez: os testes devem ser rápidos para que possam ser executados diversas vezes;
Independência: quando testes são dependentes, uma falha pode causar um efeito dominó dificultando a análise individual;
Repetitividade: deve ser possível repetir o teste em qualquer ambiente;
Auto validação: bons testes possuem como resultado respostas do tipo “verdadeiro” ou “falso”. Caso contrário, a falha pode se tornar subjetiva;
Pontualidade: os testes precisam ser escritos antes do código de produção, onde os testes serão aplicados. Caso contrário, o código pode ficar complexo demais para ser testado ou até pode ser que o código não possa ser testado.
A questão cobra conhecimento sobre o momento de
execução dos testes de software conforme os preceitos do Clean Code.
Clean Code é uma vertente que direciona a escrita de um código simples, direto e inteligível, que transmita clareza e seja de fácil compreensão.
Conforme os preceitos do Clean Code, um código
limpo, além de ter que ser legível (com clareza e simplicidade), segue 5 regras
do acrônimo FIRST (fast, independent, repeatable, self-validating, timely),
vejamos:
1. Rapidez: a execução dos testes deve ser rápida.
Caso a execução seja lenta, os testes serão executados com pouca frequência e os
problemas não serão identificados cedo o bastante para serem consertados de forma
fácil [1].
2. Independência: os testes devem ser independentes um
dos outros, pois caso sejam dependentes a falha de um causará a falha de outro
[1].
3. Repetitividade: os testes devem poder ser repetidos
em qualquer ambiente (produção, teste, qualquer notebook e etc.) [1].
4. Auto validação: os testes devem ter uma saída
booleana: passou ou não passou, a fim de evitar ter que comparar arquivos ou
fazer análises para identificar se foi bem sucedido ou não [1].
5. Pontualidade: devem-se “criar os testes de unidade imediatamente
antes do código de produção no qual serão aplicados" [1], ou seja, deve-se testar
antes de colocar o sistema em ambiente de produção.
Diante disso, analisemos
as alternativas:
A) ERRADA. Vai contra a regra de rapidez, pois é
interessante que os testes sejam simples para serem executados, rapidamente,
várias vezes.
B) ERRADA. Vai contra a regra de repetitividade,
pois o teste deve ser possível de ser executado em qualquer ambiente.
C) CERTA. Está em conformidade com a regra de
pontualidade.
D) ERRADA. Vai contra a regra de auto validação,
pois as respostas dos testes devem ser objetivas.
E) ERRADA. Vai contra a regra de independência.
Gabarito
da professora: Letra C.
Referência:
[1] MARTIN, Robert C. Código Limpo:
habilidades práticas do agile software. Alta Books.