Smoke Test no desenvolvimento móvel — o que é, tarefas e como é aplicado

Autor: IT Sectr Publicado: 2026-04-08 Tempo de leitura: 9 min

Smoke Test (teste de fumaça) é um conjunto mínimo de verificações executadas após uma compilação de aplicativo móvel para confirmar que as funções principais estão funcionando. Um Smoke Test permite rejeitar rapidamente compilações instáveis sem realizar um ciclo completo de regressão. De acordo com o Google Testing Blog (2024), um Smoke Test reduz o tempo de feedback para o desenvolvedor de 2–3 horas para 10–15 minutos. Smoke Test é o primeiro filtro de qualidade no pipeline CI/CD que impede que compilações quebradas cheguem ao próximo estágio.

Principais pontos

  • Smoke Test — uma verificação rápida das funções principais do aplicativo para rejeitar compilações instáveis.
  • Tarefas — confirmar o funcionamento do caminho crítico do usuário (login, feed, perfil).
  • Smoke Test é realizado antes do teste de regressão e geralmente leva de 5 a 15 minutos.
  • Automação do Smoke Test em CI/CD é um elemento obrigatório do pipeline moderno de desenvolvimento móvel.
  • Diferença da regressão — Smoke Test verifica apenas o caminho crítico, a regressão cobre toda a funcionalidade.

O que é um Smoke Test?

Smoke Test é um conjunto de testes rápidos que verificam as funções principais de um aplicativo sem análise profunda. O termo vem da engenharia de hardware: se um dispositivo começa a soltar fumaça após a montagem, ele não é enviado para testes completos. No desenvolvimento móvel, o Smoke Test cumpre a mesma função — filtrar compilações obviamente não funcionais. De acordo com a Microsoft DevOps (2024), a implementação de um Smoke Test reduz o número de defeitos que chegam à equipe de QA em 40%.

Um Smoke Test é executado em cada nova compilação — tanto Android quanto iOS. Idealmente, um Smoke Test não deve levar mais de 15 minutos e deve ser iniciado automaticamente após uma compilação bem-sucedida. Critério de aprovação — 100% dos testes do conjunto Smoke Test devem ser concluídos com sucesso. Se pelo menos um teste falhar, a compilação é marcada como instável e não é enviada para testes adicionais. De acordo com o Google Testing Blog (2024), essa abordagem reduz o tempo de entrega de funcionalidades aos usuários em 25%.

Um Smoke Test pode ser manual (uma lista de verificação de 5 a 10 itens) ou automatizado. Em projetos móveis modernos, a preferência é dada a um Smoke Test automatizado integrado ao CI/CD. Smoke Test manual é justificado apenas nos estágios iniciais do projeto, quando a automação não é economicamente viável. De acordo com a Bitrise (2025), 73% das equipes de desenvolvimento móvel automatizam seus Smoke Tests.

Como o Smoke Test difere do teste de regressão?

Smoke Test e teste de regressão são frequentemente confundidos, mas são práticas diferentes com objetivos diferentes. O teste de regressão verifica se as alterações no código não quebraram a funcionalidade existente. Ele cobre todos os módulos e cenários do aplicativo, incluindo casos raros e de borda. Um Smoke Test verifica apenas o caminho crítico — os cenários principais sem os quais o aplicativo é inútil. Profundidade de cobertura é a principal diferença: Smoke Test cobre 5–10% da funcionalidade, a regressão cobre 80–100%.

A segunda diferença é o tempo de execução. Um conjunto de regressão para um aplicativo móvel pode levar de 2 a 12 horas, dependendo do tamanho do projeto e do número de plataformas. Um Smoke Test leva de 5 a 15 minutos. De acordo com a Sauce Labs (2025), o tempo médio de execução de um conjunto de regressão para um aplicativo iOS é de 4,5 horas, e para Android — 3,2 horas. Um Smoke Test em ambas as plataformas é concluído em 10–15 minutos.

A terceira diferença é a colocação no pipeline. Um Smoke Test é executado imediatamente após a compilação, antes do teste de regressão. Se o Smoke Test falhar, a regressão não é iniciada — isso economiza recursos de CI/CD. Eficiência do pipeline — um Smoke Test filtra até 30% das compilações que teriam falhado na regressão, e os recursos economizados são suficientes para executar outras tarefas em paralelo.

ParâmetroSmoke TestTeste de regressão
ObjetivoVerificação rápida do caminho críticoVerificação de toda a funcionalidade
Escopo5–10% dos cenários80–100% dos cenários
Tempo5–15 minutos2–12 horas
FrequênciaCada compilaçãoAntes do lançamento ou diariamente
CI/CDApós compilação, antes da regressãoApós Smoke Test

O que está incluído em um Smoke Test de aplicativo móvel

Inicialização do aplicativo

Inicialização do aplicativo — o primeiro e mais importante teste. O aplicativo deve iniciar sem falhas em todos os dispositivos alvo. Um Smoke Test verifica a inicialização a frio: instalar → abrir → exibir a primeira tela. Se o aplicativo falhar ao iniciar, os testes adicionais são inúteis. XCUITest e Espresso permitem automatizar a verificação de inicialização em 2–3 linhas de código. Argumento de inicialização `-AppleLanguages (ru)` ajuda a verificar a localização na inicialização.

Autenticação

Autenticação — o segundo cenário crítico. Um Smoke Test deve verificar se o formulário de login é exibido, os campos de entrada respondem ao toque, o botão de login envia uma solicitação e o aplicativo navega para a tela principal após autenticação bem-sucedida. Um erro de autenticação bloqueia o acesso a todas as outras funções, portanto sua verificação está incluída no conjunto mínimo. Token refresh — uma verificação adicional para aplicativos com OAuth 2.0.

Carregamento de conteúdo e navegação

Carregamento de conteúdo principal — o terceiro teste do Smoke Test. A tela principal ou feed do aplicativo deve carregar e exibir dados. Se a API não responder ou a análise da resposta estiver quebrada, o usuário vê uma tela vazia. A verificação de rede em um Smoke Test inclui uma solicitação GET básica ao endpoint principal e a verificação de que a resposta tem a estrutura esperada. Navegação — o quarto cenário. Um Smoke Test navega pelas principais telas do aplicativo: início → pesquisa → perfil → configurações. A barra de guias e o menu lateral são fontes típicas de problemas de navegação que um Smoke Test detecta precocemente.

Automação do Smoke Test em CI/CD

Fastlane — a ferramenta padrão para automatizar CI/CD móvel. Um Smoke Test no Fastlane é executado via `scan` (para XCUITest) ou `gradle` (para Espresso). Fastlane permite configurar a execução do Smoke Test em vários dispositivos em paralelo, reduzindo o tempo total. Configuração no Fastfile inclui o destino do conjunto Smoke Test e um limite de aprovação: 100% de testes bem-sucedidos.

GitHub Actions (2024) publicou um modelo de CI/CD móvel com um Smoke Test integrado. O modelo inclui três estágios: compilação → Smoke Test → regressão. Se o Smoke Test falhar, o modelo encerra automaticamente o pipeline e envia uma notificação para Slack ou Telegram. Matrix strategy permite executar o Smoke Test em três versões do iOS e cinco modelos Android simultaneamente.

Divisão de responsabilidades em CI/CD: o Smoke Test fornece feedback rápido, enquanto a regressão fornece cobertura completa. O Smoke Test não deve duplicar a regressão, e vice-versa. Granularidade do Smoke Test — uma verificação por cenário crítico. Se um Smoke Test levar mais de 15 minutos, ele precisa ser otimizado: remover verificações redundantes ou paralelizar a execução.

ruby
# Configuração do Fastfile para Smoke Test
platform :ios do
    lane :smoke do
        scan(
            scheme: 'App',
            devices: ['iPhone 15', 'iPhone SE'],
            testplan: 'SmokeTest',
            output_directory: 'reports/smoke',
            fail_build: true
        )
    end

    lane :regression do
        scan(
            scheme: 'App',
            devices: ['iPhone 15', 'iPhone 14', 'iPhone SE'],
            testplan: 'FullRegression'
        )
    end
end

Ferramentas para Smoke Test

XCUITest — o framework da Apple para testes de UI em aplicativos iOS. XCUITest é usado para automatizar Smoke Tests: iniciar o aplicativo, verificar elementos da interface, simular ações do usuário. Combinado com Xcode Server ou GitHub Actions, o XCUITest é executado em cada commit. XCTest — o framework base para testes unitários que complementa o XCUITest para verificação de lógica.

Espresso — o framework do Google para testes de UI no Android. O Espresso sincroniza com a thread de UI e garante que todas as animações sejam concluídas antes de iniciar a verificação. O Espresso suporta verificação via `onView(withId(...)).check(matches(...))`. Android Test Orchestrator executa cada Smoke Test em um processo separado, evitando que testes anteriores influenciem os subsequentes.

Detox — um framework para React Native que suporta Smoke Test e testes de caixa cinza. O Detox sincroniza com a ponte do React Native e aguarda automaticamente a conclusão de operações assíncronas. Testes de caixa cinza permitem que o Detox verifique o estado do aplicativo sem acesso direto ao código fonte.

Exemplo de Smoke Test em Swift e Kotlin

XCUITest para iOS contém duas verificações: iniciar o aplicativo e exibir a tela principal. O teste inicia o aplicativo via `XCUIApplication().launch()` e verifica se um elemento-chave (por exemplo, `navigationBar`) existe. Se o aplicativo falhar ao iniciar, o framework XCTest registra o erro e o teste termina com FAIL. Smoke Test não verifica o conteúdo — apenas que a tela abriu.

Espresso para Android usa `ActivityScenario` para iniciar uma Activity e `onView` para verificar elementos. Uma diferença crítica entre plataformas: o simulador iOS pode exibir um comportamento diferente de um dispositivo real, portanto, os Smoke Tests Android são recomendados para execução no Firebase Test Lab ou em um emulador. Firebase Test Lab suporta execução paralela de Smoke Tests em 10 dispositivos.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

    override func setUp() {
        continueAfterFailure = false
        app.launch()
    }

    func testLoginButtonExists() {
        XCTAssertTrue(app.buttons["Entrar"].exists)
    }

    func testLoginFlow() {
        app.textFields["email"].tap()
        app.textFields["email"].typeText("test@test.com")
        app.secureTextFields["password"].tap()
        app.secureTextFields["password"].typeText("password123")
        app.buttons["Log In"].tap()
        XCTAssertTrue(app.staticTexts["Welcome"].waitForExistence(timeout: 5))
    }
}

O exemplo acima mostra um Smoke Test para a tela de login no iOS. O primeiro teste verifica se o botão de login existe na tela. O segundo teste percorre o caminho completo de autenticação e verifica se uma mensagem de boas-vindas é exibida após o login bem-sucedido. Timeout de 5 segundos para `waitForExistence` é o valor padrão para um Smoke Test: se o elemento de UI não aparecer nesse tempo, o aplicativo não está funcionando corretamente.

Perguntas frequentes

Quantos testes devem estar em um Smoke Test?

O número ideal é de 5 a 15 testes por módulo. Um Smoke Test deve cobrir o caminho crítico do usuário sem tentar abranger toda a funcionalidade. Critério — se todos os testes do Smoke Test passarem, o aplicativo pode ser aberto em um ambiente de QA para testes adicionais.

Como o Smoke Test difere de um sanity check?

Smoke Test verifica a estabilidade da compilação e é executado em cada build. Um sanity check é um conjunto mais estreito de testes executado após alterações específicas. O sanity check responde à pergunta “essa alteração quebrou a funcionalidade X?”, enquanto o Smoke Test responde “a compilação funciona em princípio?”.

É necessário automatizar o Smoke Test?

Sim, automatizar o Smoke Test é uma prática obrigatória para projetos com lançamentos frequentes. Automação garante consistência das verificações e velocidade de execução. O Smoke Test manual é justificado apenas nos estágios iniciais do projeto, quando o número de compilações não excede 2–3 por semana.

O que fazer se um Smoke Test falhar?

A compilação é marcada como instável e não é enviada para testes adicionais. O desenvolvedor recebe uma notificação com os logs de falha do Smoke Test. Após corrigir o problema, uma nova compilação é criada e o Smoke Test é executado novamente. O defeito bloqueador é registrado no rastreador.

Com que frequência o Smoke Test deve ser atualizado?

Smoke Test é atualizado sempre que o caminho crítico do usuário muda. Se uma nova tela obrigatória for adicionada (por exemplo, onboarding), ela deve entrar no Smoke Test. Recomenda-se revisar o conjunto de Smoke Test a cada sprint para manter a relevância das verificações.

Resumo

  • Smoke Test — um conjunto mínimo de verificações do caminho crítico do aplicativo, executado após cada compilação.
  • Verificações principais — inicialização do aplicativo, autenticação, carregamento de conteúdo e navegação pelas principais telas.
  • Diferença da regressão — Smoke Test cobre 5–10% dos cenários e leva 5–15 minutos, não horas.
  • Ferramentas — XCUITest para iOS, Espresso para Android, Detox para React Native.
  • Automação do Smoke Test é integrada em CI/CD via Fastlane, GitHub Actions ou Bitrise.
  • Smoke Test é executado antes do teste de regressão e filtra até 30% das compilações instáveis.
  • Recomenda-se revisar a composição do Smoke Test a cada sprint para manter a relevância.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também