O que é um smoke test?
Um smoke test é uma verificação rápida e superficial que confirma que as funções mais importantes de uma aplicação funcionam antes de testes mais profundos ou do release.
O termo vem do hardware: ligue um dispositivo novo e veja se ele solta fumaça. Em software, um smoke test é a primeira verificação rápida, "ele ao menos inicia e faz o básico?", que decide se vale a pena rodar a suíte completa ou prosseguir com um deploy.
O que é
Um smoke test exercita um punhado de caminhos críticos, o app inicia?, a home page carrega?, um usuário consegue fazer login?, em vez de testar tudo em profundidade. Ele é amplo e superficial por design: um pequeno conjunto de verificações que devem funcionar e que detectam falhas catastróficas e óbvias rapidamente.
Como funciona
Smoke tests rodam cedo, logo após um build ou imediatamente após um deploy. Se um smoke test falha, o pipeline para ali: não faz sentido rodar milhares de testes detalhados, ou enviar tráfego para um deploy, quando o básico está quebrado. Se os smoke tests passam, testes mais profundos ou o rollout completo prosseguem.
Um exemplo
Após fazer o deploy de um web app em staging, um smoke test acessa o endpoint de health, carrega a landing page e realiza um login. Ele termina em segundos. Se algum deles falhar, o deploy é interrompido e revertido antes mesmo de uma suíte de testes lenta e detalhada começar.
Por que economiza tempo
Rodar uma suíte de testes completa ou concluir um rollout contra um build fundamentalmente quebrado desperdiça minutos ou causa indisponibilidades. Um smoke test falha rápido nos problemas óbvios, dando feedback rápido e protegendo tanto o tempo de pipeline quanto a produção. É um seguro barato contra fazer deploy de algo completamente quebrado.
Smoke tests versus regression tests
Um smoke test pergunta "está funcionando no básico?" enquanto um regression test pergunta "quebramos algo que costumava funcionar?". Smoke tests são um subconjunto pequeno e rápido; suítes de regression são abrangentes e mais lentas. Eles se complementam em pontos diferentes do pipeline.
Principais conclusões
- Um smoke test é uma verificação rápida e superficial de funcionalidade crítica.
- Ele roda cedo e para o pipeline se o básico estiver quebrado.
- Ele economiza tempo ao falhar rápido antes de testes mais profundos ou do rollout.