21 de outubro de 2023
Regra F.I.R.S.T de boas práticas de testes
Teste de software
Testes são importantes para permitir a flexibilidade do código. Ele traz segurança para que sistemas possam crescer e continuar funcionando.
Introdução
Testes devem ser simples e principalmente legíveis. Localmente, eles têm a função de auxiliar como uma documentação do seu código para outros desenvolvedores — ou para você mesmo no futuro —, por isso é tão importante a legibilidade.
Escolha nomes intuitivos, que deixem claro o seu propósito. Divida os testes individuais em pequenas partes, e com descrições curtas e bem estruturadas.
F.I.R.S.T.
F.I.R.S.T é um acrônimo para regras para manter seus testes úteis: Fast, Independent, Repeatable, Self-validating, Timely.
Fast — Rápidos
Devem ser rápidos para executar, para serem executados mais vezes. Quando os testes demoram para finalizar, a tarefa de testar se torna maçante e os desenvolvedores têm menos incentivo para fazê-lo, ou gastam mais tempo do que deveriam nessa etapa.
Independent — Independentes
Blocos de testes jamais devem depender entre si. Caso um teste dependa do resultado de outro, pode acontecer um efeito dominó caso o primeiro falhe e, portanto, o motivo real da falha fica ofuscado. Além disso, os testes são geralmente executados de forma assíncrona, e por isso a dependência pode atrapalhar o desempenho (atente-se a regra anterior).
Repeatable — Reproduzível
Testes devem conseguir ser acionados quantas vezes quiser, em diferentes ambientes e sempre com o mesmo resultado. Um teste deve ser possível de executar no seu computador, no computador da sua empresa, no seu notebook, na sua geladeira smart, e assim por diante.
Self-validating — Autoexplicativos
Em suma, devem retornar true ou false. Ou seja, passou ou não passou, em combinação com uma boa descrição do que esta sendo testado fica mais fácil localizar quais estão falhando e, o porquê estão.
Timely — Pontualmente prévios
Devemos criá-los imediatamente antes do código em produção. Inicialmente, esperamos que falhem nos diversos casos que testemos, e só depois construiremos o código de produção, sempre consultando como estão os resultados dos testes.