Teste de sanidade versus teste de fumaça: principais diferenças, exemplos e quando usar cada um.
⚡ Resumo rápido
Teste de sanidade versus teste de fumaça São dois métodos essenciais de teste de software focados em validar a estabilidade e a racionalidade do sistema após a compilação. Ambos visam evitar o desperdício de esforços de controle de qualidade, identificando compilações instáveis ou com falhas no início do ciclo de testes.
Teste de fumaça versus teste de sanidade: tabela comparativa
| Aspecto | Teste de Fumaça | Teste de Sanidade |
|---|---|---|
| Objetivo Principal | Verificar estabilidade da compilação | Verificar a funcionalidade das alterações |
| Objetivo | Ampla (aplicação completa) | Módulos específicos (estreitos) |
| Profundidade | Testes superficiais | Testes aprofundados (direcionados) |
| Executado por | Desenvolvedores ou Testadores | Apenas para testadores |
| Estado de construção | Versões iniciais/instáveis | Builds relativamente estáveis |
| Documentação | Roteirizado e documentado | Geralmente sem roteiro |
| Subconjunto de teste | Teste de aceitação | Teste de regressão |
| Automação | Altamente recomendado | Pode ser manual ou automatizado. |

O que é uma construção de software?
Se você estiver desenvolvendo um programa de computador simples, composto por apenas um arquivo de código-fonte, basta compilá-lo e vinculá-lo para gerar um arquivo executável. Esse processo é simples. Normalmente, porém, não é o caso. Um projeto de software típico consiste em centenas ou até milhares de arquivos de código-fonte. Criar um programa executável a partir desses arquivos é uma tarefa complexa e demorada. Para isso, é necessário utilizar um software de "compilação" (ou "build"), processo também conhecido como "construção de software".
O que é teste de fumaça?
O teste de fumaça (smoke testing) é uma técnica de teste de software realizada após a compilação do software para verificar se as funcionalidades críticas estão funcionando corretamente. Ele é executado antes de quaisquer testes funcionais ou de regressão detalhados. O principal objetivo do teste de fumaça é rejeitar um aplicativo de software com defeitos, para que a equipe de controle de qualidade não perca tempo testando um software com problemas.
Em testes de fumaça, os casos de teste escolhidos abrangem a funcionalidade ou o componente mais crítico do sistema. O objetivo não é realizar testes exaustivos, mas sim garantir que as principais funcionalidades do aplicativo operem corretamente. Por exemplo, um teste de fumaça típico verificaria se o aplicativo é iniciado com sucesso, se a interface gráfica responde prontamente, etc.
O que é teste de sanidade?
O teste de sanidade é um tipo de teste de software realizado após o recebimento de uma versão compilada, com pequenas alterações no código ou na funcionalidade, para verificar se os erros foram corrigidos e se não há novos problemas decorrentes dessas alterações. O objetivo é determinar se a funcionalidade proposta funciona aproximadamente como esperado. Se um teste de sanidade falhar, a versão compilada é rejeitada para evitar o desperdício de tempo e recursos em testes mais aprofundados.
O objetivo “não” é verificar a funcionalidade completa, mas sim determinar se o desenvolvedor aplicou alguma racionalidade (bom senso) ao produzir o software. Por exemplo, se sua calculadora científica resulta em 2 + 2 = 5!, então não há sentido em testar funcionalidades avançadas como sen 30 + cos 50.
História e Origem dos Termos
O termo "teste de fumaça" tem origem na indústria de hardware e eletrônica. Quando os engenheiros ligavam uma nova placa de circuito pela primeira vez, observavam se ela começava a soltar fumaça — um indicador imediato de uma falha fundamental. Se não houvesse fumaça, os testes básicos podiam prosseguir. Esse conceito foi adotado por testadores de software na década de 1980 para descrever a verificação inicial de compilação.
Por outro lado, o "teste de sanidade" refere-se à verificação da "sanidade" ou racionalidade de alterações específicas. O termo enfatiza a verificação de que o software se comporta de maneira sensata e lógica após as modificações — essencialmente perguntando: "Isso faz sentido?"
Teste de fumaça vs. Teste de sanidade vs. Teste de regressão
Compreender como esses três tipos de teste funcionam em conjunto é crucial para uma estratégia de garantia de qualidade eficaz:
- Teste de Fumaça O primeiro passo é verificar se a versão compilada está estável o suficiente para ser testada.
- Teste de Sanidade Segue (quando aplicável) — confirma que alterações ou correções específicas funcionam corretamente.
- Teste de regressão É a mais abrangente — garante que as novas alterações não tenham afetado nenhuma funcionalidade existente.
Pense nisso como um funil: o teste de fumaça é a abertura larga que filtra rapidamente as versões instáveis, o teste de sanidade restringe o foco a alterações específicas e o teste de regressão fornece uma cobertura completa de todo o sistema.
Cenário do mundo real: Aplicativo de comércio eletrônico
Considere um site de comércio eletrônico que recebe uma nova versão com a correção de um bug no carrinho de compras:
Teste de fumaça: A equipe de controle de qualidade verifica inicialmente se o site carrega, se os usuários conseguem fazer login, se os produtos são exibidos corretamente, se a busca funciona e se o processo de finalização da compra é iniciado. Essa etapa leva de 15 a 30 minutos.
Teste de sanidade: Após a aprovação nos testes de fumaça, os testadores se concentram especificamente na funcionalidade do carrinho de compras — adicionar itens, atualizar quantidades, remover itens e verificar cálculos. Este teste direcionado leva cerca de 30 a 60 minutos.
Se ambos os testes forem aprovados, a equipe passa para os testes de regressão completos, que podem levar várias horas ou dias, dependendo da complexidade da aplicação.
Quando usar testes de fumaça versus testes de sanidade
Utilize o teste de fumaça quando:
- Uma nova versão do software foi implantada no ambiente de teste.
- Você precisa verificar rapidamente funcionalidades críticas como login, navegação e fluxo de dados.
- Determinar se a versão está suficientemente estável para testes mais detalhados.
- Integração em pipelines de CI/CD para verificação automatizada de builds.
Utilize testes de sanidade quando:
- Pequenas alterações de código, correções de bugs ou melhorias de funcionalidades são implementadas.
- Verificar se as alterações específicas funcionam conforme o esperado.
- A estrutura já se mostrou relativamente estável com base em testes de fumaça anteriores.
Vantagens e Limitações
Diferenciais
- Identificação rápida de problemas críticos: Ambos os métodos identificam rapidamente problemas que poderiam interromper os testes.
- Eficiência de recursos: As equipes não perdem tempo com testes detalhados de versões fundamentalmente problemáticas.
- Detecção precoce de defeitos: Identificar problemas no início do ciclo reduz os custos gerais de reparo.
- Ciclos de lançamento mais rápidos: Um controle de acesso eficiente permite iterações e implementações mais rápidas.
Limitações
- Cobertura limitada: Nenhum dos dois tipos de teste oferece uma cobertura completa de toda a aplicação.
- Pode deixar passar erros ocultos: Problemas de integração ou casos extremos podem passar despercebidos.
- Não substitui testes completos: Eles servem como filtros rápidos, não como substitutos para testes de regressão.
Melhores Práticas para Implementação
Para teste de fumaça:
- Automatize os testes de fumaça e integre-os ao seu pipeline de CI/CD para cada build.
- Mantenha o conjunto de testes de fumaça focado apenas nas funcionalidades críticas — não deixe que ele cresça demais.
- Atualize os testes de fumaça sempre que recursos críticos forem adicionados ou modificados.
Para Teste de Sanidade:
- Sempre revise a documentação de alterações antes de criar cenários de teste de sanidade.
- Concentre os esforços de teste nas áreas alteradas e nas funcionalidades imediatamente adjacentes.
- Utilize técnicas de testes exploratórios para descobrir problemas inesperados.
Erros comuns a evitar
- Confundir os dois tipos de teste: O teste de fumaça é amplo e superficial; o teste de sanidade é restrito e profundo.
- Ignorar o teste de fumaça para economizar tempo: Isso frequentemente leva a esforços desperdiçados em compilações instáveis.
- Realizar testes de fumaça de forma excessivamente abrangente: Isso anula o propósito da verificação rápida.
- Prosseguir após falhas: Se algum dos tipos de teste falhar, pare e resolva os problemas antes de continuar.
Ferramentas recomendadas para testes de fumaça e sanidade
- Selenium WebDriver: Padrão da indústria para automação de testes de aplicações web
- TestNG/JUnit: Estruturas de teste para organizar e executar testes automatizados.
- Ações do Jenkins/GitHub: Ferramentas CI/CD para execução automatizada de compilação e teste.
- Cypress: Framework de teste ponta a ponta moderno e amigável para desenvolvedores
- Postman/Tenha certeza: Ferramentas de teste de API para testes de fumaça de backend

