Smoke Test în dezvoltarea mobilă — ce este, sarcini și cum se aplică

Autor: IT Sectr Publicat: 2026-04-08 Timp de citire: 9 min

Smoke Test (testarea fumului) este un set minim de verificări executate după build-ul aplicației mobile pentru a confirma că funcțiile de bază funcționează. Smoke Test permite respingerea rapidă a build-urilor instabile fără a efectua un ciclu complet de regresie. Conform Google Testing Blog (2024), Smoke Test reduce timpul de feedback pentru dezvoltator de la 2–3 ore la 10–15 minute. Smoke Test este primul filtru de calitate în conducta CI/CD care împiedică intrarea build-urilor defecte în etapa următoare.

Principalele puncte

  • Smoke Test — verificarea rapidă a funcțiilor de bază ale aplicației pentru respingerea build-urilor instabile.
  • Sarcini — confirmarea funcționării căii critice a utilizatorului (autentificare, feed, profil).
  • Smoke Test se execută înainte de testarea de regresie și durează de obicei 5–15 minute.
  • Automatizarea Smoke Test în CI/CD este un element obligatoriu al conductei moderne de dezvoltare mobilă.
  • Diferența față de regresie — Smoke Test verifică doar „calea critică“, regresia acoperă toată funcționalitatea.

Ce este Smoke Test?

Smoke Test (testarea fumului) este un set de teste rapide care verifică funcțiile de bază ale aplicației fără o analiză profundă. Termenul provine din ingineria hardware: dacă un dispozitiv după asamblare începe să fumeze, nu este trimis la testare completă. În dezvoltarea mobilă, Smoke Test îndeplinește aceeași funcție — elimină build-urile de la bun început nefuncționale. Conform Microsoft DevOps (2024), implementarea Smoke Test reduce numărul de defecte care ajung la echipa QA cu 40%.

Smoke Test se execută pe fiecare build nou — atât pe Android, cât și pe iOS. În mod ideal, Smoke Test nu ar trebui să dureze mai mult de 15 minute și să se lanseze automat după un build reușit. Criteriul de promovare — 100% din testele setului Smoke Test trebuie să se încheie cu succes. Dacă cel puțin un test eșuează, build-ul este marcat ca instabil și nu este trimis la testare ulterioară. Conform Google Testing Blog (2024), această abordare reduce timpul de livrare a funcțiilor către utilizatori cu 25%.

Smoke Test poate fi atât manual (lista de verificare din 5–10 puncte), cât și automatizat. În proiectele mobile moderne, se preferă Smoke Test automatizat integrat în CI/CD. Smoke Test manual este justificat doar în etapele incipiente ale proiectului, când automatizarea nu este economică. Conform Bitrise (2025), 73% dintre echipele de dezvoltare mobilă automatizează Smoke Test.

Cu ce se deosebește Smoke Test de testarea de regresie

Smoke Test și testarea de regresie sunt adesea confundate, dar sunt practici diferite cu scopuri diferite. Testarea de regresie verifică dacă modificările din cod nu au stricat funcționalitatea existentă. Acoperă toate modulele și scenariile aplicației, inclusiv cazurile rare și limită. Smoke Test verifică doar calea critică — scenariile de bază fără de care aplicația este inutilă. Adâncimea de acoperire — principala diferență: Smoke Test acoperă 5–10% din funcționalitate, regresia — 80–100%.

A doua diferență — timpul de execuție. Setul de regresie pentru o aplicație mobilă poate dura de la 2 la 12 ore, în funcție de dimensiunea proiectului și numărul de platforme. Smoke Test durează 5–15 minute. Conform Sauce Labs (2025), timpul mediu de execuție al setului de regresie pentru o aplicație iOS este de 4,5 ore, pentru Android — 3,2 ore. Smoke Test pe ambele platforme se încadrează în 10–15 minute.

A treia diferență — locul în conductă. Smoke Test se execută imediat după build, înainte de testarea de regresie. Dacă Smoke Test nu este promovat, regresia nu este lansată — aceasta economisește resursele CI/CD. Pipeline efficiency — Smoke Test elimină până la 30% din build-urile care nu ar fi trecut de regresie, iar resursele economisite sunt suficiente pentru lansarea paralelă a altor sarcini.

ParametruSmoke TestTestarea de regresie
ScopVerificarea rapidă a căii criticeVerificarea întregii funcționalități
Volum5–10% scenarii80–100% scenarii
Timp5–15 minute2–12 ore
FrecvențăLa fiecare buildÎnainte de lansare sau zilnic
CI/CDDupă build, înainte de regresieDupă Smoke Test

Ce include Smoke Test al aplicației mobile

Lansarea aplicației

Lansarea aplicației — primul și cel mai important test. Aplicația trebuie să se lanseze fără crash pe toate dispozitivele țintă. Smoke Test verifică pornirea la rece: instalare → deschidere → afișarea primului ecran. Dacă aplicația se blochează la lansare, testarea ulterioară este inutilă. XCUITest și Espresso permit automatizarea verificării lansării în 2–3 linii de cod. Launch argument `-AppleLanguages (ro)` ajută la verificarea localizării la pornire.

Autentificare

Autentificarea — al doilea scenariu critic. Smoke Test trebuie să verifice că formularul de autentificare se afișează, câmpurile de introducere reacționează la atingere, butonul de autentificare trimite cererea și aplicația trece la ecranul principal după autentificare reușită. Eroarea de autentificare blochează accesul la toate celelalte funcții, de aceea verificarea sa face parte din setul minim. Token refresh — verificare suplimentară pentru aplicațiile cu OAuth 2.0.

Încărcarea conținutului și navigarea

Încărcarea conținutului principal — al treilea test Smoke Test. Ecranul principal sau feed-ul aplicației trebuie să se încarce și să afișeze date. Dacă API-ul nu răspunde sau parsarea răspunsului este defectă, utilizatorul vede un ecran gol. Verificarea rețelei în Smoke Test include o cerere GET de bază către endpoint-ul principal și verificarea că răspunsul are structura așteptată. Navigarea — al patrulea scenariu. Smoke Test parcurge ecranele principale ale aplicației: principal → căutare → profil → setări. Bara de file-uri și meniul lateral — surse tipice de probleme în navigare pe care Smoke Test le detectează devreme.

Automatizarea Smoke Test în CI/CD

Fastlane — instrumentul standard pentru automatizarea CI/CD mobil. Smoke Test pe Fastlane se lansează prin `scan` (pentru XCUITest) sau `gradle` (pentru Espresso). Fastlane permite configurarea lansării Smoke Test pe mai multe dispozitive în paralel, ceea ce reduce timpul total. Configurația în Fastfile include targetul pentru setul Smoke Test și pragul de promovare: 100% teste reușite.

GitHub Actions (2024) a publicat un șablon de CI/CD mobil cu Smoke Test încorporat. Șablonul include trei etape: build → Smoke Test → regresie. Dacă Smoke Test eșuează, șablonul finalizează automat conducta și trimite o notificare în Slack sau Telegram. Matrix strategy permite lansarea Smoke Test pe trei versiuni de iOS și cinci modele de Android simultan.

Împărțirea responsabilităților în CI/CD: Smoke Test răspunde pentru feedback rapid, regresia — pentru acoperire completă. Smoke Test nu trebuie să dubleze regresia și invers. Granularitatea Smoke Test — o verificare per scenariu critic. Dacă Smoke Test durează mai mult de 15 minute, trebuie optimizat: eliminarea verificărilor redundante sau paralelizarea execuției.

ruby
# Configurația Fastfile pentru 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

Instrumente pentru Smoke Test

XCUITest — framework-ul Apple pentru testarea UI a aplicațiilor iOS. XCUITest este utilizat pentru automatizarea Smoke Test: lansarea aplicației, verificarea elementelor de interfață, simularea acțiunilor utilizatorului. În combinație cu Xcode Server sau GitHub Actions, XCUITest se lansează la fiecare commit. XCTest — framework-ul de bază pentru teste unitare care completează XCUITest pentru verificarea logicii.

Espresso — framework-ul Google pentru testarea UI pe Android. Espresso se sincronizează cu firul UI și garantează că toate animațiile sunt finalizate înainte de începerea verificării. Espresso suportă verificarea prin `onView(withId(...)).check(matches(...))`. Android Test Orchestrator lansează fiecare Smoke Test într-un proces separat, prevenind influența testelor anterioare asupra celor următoare.

Detox — framework pentru React Native care suportă Smoke Test și testarea grey-box. Detox se sincronizează cu React Native bridge și așteaptă automat finalizarea operațiilor asincrone. Testarea grey-box permite Detox să verifice starea aplicației fără acces direct la codul sursă.

Exemplu de Smoke Test în Swift și Kotlin

XCUITest pentru iOS conține două verificări: lansarea aplicației și afișarea ecranului principal. Testul lansează aplicația prin `XCUIApplication().launch()` și verifică dacă elementul cheie (de exemplu, `navigationBar`) există. Dacă aplicația se blochează la lansare, framework-ul XCTest înregistrează eroarea și testul se încheie cu FAIL. Smoke Test nu verifică conținutul — doar că ecranul s-a deschis.

Espresso pentru Android folosește `ActivityScenario` pentru lansarea Activity și `onView` pentru verificarea elementelor. Diferența critică între platforme: simulatorul iOS poate afișa un comportament diferit de dispozitivul real, de aceea Smoke Test pe Android se recomandă a fi lansat pe Firebase Test Lab sau emulator. Firebase Test Lab suportă lansarea paralelă a Smoke Test pe 10 dispozitive.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

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

    func testLoginButtonExists() {
        XCTAssertTrue(app.buttons["Autentificare"].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))
    }
}

Exemplul de mai sus arată Smoke Test pentru ecranul de autentificare pe iOS. Primul test verifică dacă butonul de autentificare există pe ecran. Al doilea test parcurge calea completă de autentificare și verifică dacă după autentificarea reușită se afișează un mesaj de bun venit. Timeout de 5 secunde pentru waitForExistence — valoare standard pentru Smoke Test: dacă elementul UI nu se afișează în acest timp, aplicația funcționează incorect.

Întrebări frecvente

Câte teste ar trebui să fie în Smoke Test?

Numărul optim este de la 5 la 15 teste per modul. Smoke Test trebuie să acopere calea critică a utilizatorului, dar să nu încerce să acopere întreaga funcționalitate. Criteriu — dacă toate testele Smoke Test trec, aplicația poate fi deschisă în mediul QA pentru testare ulterioară.

Cu ce se deosebește Smoke Test de sanity check?

Smoke Test verifică stabilitatea build-ului și se execută pe fiecare build. Sanity check este un set mai restrâns de teste care se execută după introducerea unor modificări specifice. Sanity check răspunde la întrebarea „a stricat această modificare funcționalitatea X“, iar Smoke Test — „funcționează build-ul în principiu“.

Este necesar să automatizăm Smoke Test?

Da, automatizarea Smoke Test este o practică obligatorie pentru proiectele cu lansări frecvente. Automatizarea asigură consistența verificărilor și viteza de execuție. Smoke Test manual este justificat doar în etapele incipiente ale proiectului, când numărul de build-uri nu depășește 2–3 pe săptămână.

Ce faci dacă Smoke Test nu este promovat?

Build-ul este marcat ca instabil și nu este trimis la testare ulterioară. Dezvoltatorul primește o notificare cu logurile eșecului Smoke Test. După remedierea problemei, se creează un build nou pe care Smoke Test este lansat din nou. Defectul blocant este înregistrat în tracker.

Cât de des trebuie actualizat Smoke Test?

Smoke Test se actualizează la fiecare modificare a căii critice a utilizatorului. Dacă se adaugă un ecran obligatoriu nou (de exemplu, onboarding), acesta trebuie să intre în Smoke Test. Se recomandă revizuirea setului Smoke Test la fiecare sprint pentru actualitatea verificărilor.

Concluzii

  • Smoke Test este un set minim de verificări ale căii critice a aplicației, executat după fiecare build.
  • Verificări de bază — lansarea aplicației, autentificare, încărcarea conținutului și navigarea pe ecranele principale.
  • Diferența față de regresie — Smoke Test acoperă 5–10% din scenarii și se execută în 5–15 minute, nu în ore.
  • Instrumente — XCUITest pentru iOS, Espresso pentru Android, Detox pentru React Native.
  • Automatizarea Smoke Test este integrată în CI/CD prin Fastlane, GitHub Actions sau Bitrise.
  • Smoke Test se execută înainte de testarea de regresie și elimină până la 30% din build-urile instabile.
  • Se recomandă revizuirea compoziției Smoke Test la fiecare sprint pentru menținerea actualității.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și