O que é teste de fumaça?
Um teste de fumaça é uma verificação rápida e superficial de que as partes mais importantes de um build funcionam minimamente, executada antes de investir em testes mais profundos.
O nome vem do hardware: ligue um dispositivo e veja se ele solta fumaça. Em software, um teste de fumaça é um pequeno conjunto de verificações rápidas que confirmam que o build não está fundamentalmente quebrado, que ele inicia, que a página inicial carrega, que o fluxo principal responde, antes que os testes mais lentos e minuciosos sejam executados. É um gate barato que falha rápido.
O que um teste de fumaça verifica
Os testes de fumaça cobrem amplitude, não profundidade. Eles tocam o punhado de caminhos críticos, o app inicializa, o login funciona, um endpoint chave retorna 200, sem verificar o comportamento exaustivamente. Se o teste de fumaça falhar, o build está morto na chegada e não há sentido em executar a suíte completa.
Fumaça versus a suíte completa
Uma suíte completa de regressão ou integração é minuciosa, mas lenta. Um teste de fumaça é o oposto: rápido e superficial. Os dois são complementares. Fumaça primeiro para detectar quebras catastróficas cedo, depois as suítes mais profundas se a fumaça passar.
Um exemplo rápido
Após um deploy, um teste de fumaça acessa o endpoint de saúde e uma página crítica para confirmar que o serviço está no ar antes de promovê-lo adiante.
test("app is alive", async () => {
const res = await fetch("/health");
expect(res.status).toBe(200);
});Quando os testes de fumaça rodam
- No início do CI, antes das etapas de teste mais lentas.
- Após um deploy, para confirmar que o ambiente está saudável.
- Como um gate antes de promover um build para a próxima etapa.
- Como uma verificação rápida de sanidade local antes de fazer push.
Teste de fumaça em CI
Colocar uma etapa de fumaça primeiro permite que o pipeline falhe rápido em um build quebrado, economizando o custo de executar a suíte completa. Como os testes de fumaça são minúsculos, eles terminam em segundos em runners rápidos, dando ao desenvolvedor um feedback quase instantâneo de que o build é pelo menos viável.
Principais conclusões
- Um teste de fumaça verifica rapidamente que o build não está fundamentalmente quebrado.
- É superficial e rápido, executado antes das suítes de teste mais profundas.
- Uma primeira etapa de fumaça permite que o CI falhe rápido em um build morto.