Smoke Test a mobilfejlesztésben — mi ez, feladatok és hogyan alkalmazzák

Szerző: IT Sectr Megjelenés: 2026-04-08 Olvasási idő: 9 perc

Smoke Test (füsttesztelés) egy minimális ellenőrzéskészlet, amelyet a mobilalkalmazás buildje után végeznek el annak megerősítésére, hogy az alapvető funkciók működnek. A Smoke Test lehetővé teszi az instabil buildek gyors elutasítását a teljes regressziós ciklus elvégzése nélkül. A Google Testing Blog (2024) szerint a Smoke Test 2–3 óráról 10–15 percre csökkenti a fejlesztő számára a visszajelzési időt. Smoke Test az első minőségi szűrő a CI/CD csœvezetékben, amely megakadályozza, hogy a hibás buildek a következő szakaszba kerüljenek.

Főbb pontok

  • Smoke Test — az alkalmazás alapvető funkcióinak gyors ellenőrzése az instabil buildek elutasításához.
  • Feladatok — a felhasználó kritikus útjának működőképességének megerősítése (bejelentkezés, hírfolyam, profil).
  • Smoke Test a regressziós tesztelés előtt történik, általában 5–15 percig tart.
  • Automatizálás A Smoke Test CI/CD-ben kötelező eleme a modern mobilfejlesztési csœvezetéknek.
  • Különbség a regressziótól — a Smoke Test csak a kritikus útvonalat ellenőrzi, a regresszió a teljes funkcionalitást lefedi.

Mi az a Smoke Test?

Smoke Test (füsttesztelés) gyors tesztek gyűjteménye, amelyek az alkalmazás alapvető funkcióit ellenőrzik mélyreható elemzés nélkül. A kifejezés a hardvermérnöki tárgykörből származik: ha egy eszköz összeszerelés után füstölni kezd, nem küldik teljes tesztelésre. A mobilfejlesztésben a Smoke Test ugyanazt a funkciót tölti be — kiszűri az előre nem működő buildeket. A Microsoft DevOps (2024) szerint a Smoke Test bevezetése 40%-kal csökkenti a QA csapathoz érkező hibák számát.

A Smoke Test minden új buildnél elvégzésre kerül — mind Androidon, mind iOS-en. Ideális esetben a Smoke Test nem tarthat tovább 15 perc nél, és automatikusan elindul a sikeres build után. Átmeneti kritérium — a Smoke Test készlet 100%-ának sikeresen kell végződnie. Ha legalább egy teszt megbukik, a build instabilnak jelölődik, és nem kerül további tesztelésre. A Google Testing Blog (2024) szerint ez a megközelítés 25%-kal csökkenti a funkciók felhasználókhoz való eljuttatásának idejét.

A Smoke Test lehet kézi (5–10 pontból álló ellenőrzőlista) és automatizált is. A modern mobilprojektekben az előnyben részesül a CI/CD-be ágyazott automatizált Smoke Test. Kézi Smoke Test csak a projekt korai szakaszaiban indokolt, amikor az automatizálás gazdaságilag nem kifizetődő. A Bitrise (2025) szerint a mobilfejlesztő csapatok 73%-a automatizálja a Smoke Testet.

Miben különbözik a Smoke Test a regressziós teszteléstől

Smoke Test és regressziós tesztelés gyakran összekeverik, de ezek különböző célú gyakorlatok. A regressziós tesztelés azt ellenőrzi, hogy a kódváltoztatások nem törték meg a meglévő funkcionalitást. Lefedi az alkalmazás összes modulját és forgatókönyvét, beleértve a ritka és határeseteket is. A Smoke Test csak a kritikus útvonalat ellenőrzi — az alapvető forgatókönyveket, amelyek nélkül az alkalmazás használhatatlan. Lefedettségi mélység — a fő különbség: a Smoke Test a funkcionalitás 5–10%-t, a regresszió 80–100%-t fedi le.

A második különbség — végrehajtási idő. A regressziós készlet egy mobilalkalmazáshoz 2 órától 12 óráig is tarthat a projekt méretétől és a platformok számától függően. A Smoke Test 5–15 percig tart. A Sauce Labs (2025) szerint a regressziós készlet átlagos végrehajtási ideje iOS-alkalmazás esetén 4,5 óra, Android esetén 3,2 óra. A Smoke Test mindkét platformon 10–15 percbe belefér.

A harmadik különbség — hely a csœvezetékben. A Smoke Test közvetlenül a build után, a regressziós tesztelés előtt történik. Ha a Smoke Test nem sikerül, a regresszió nem indul el — ez CI/CD erőforrásokat takarít meg. Pipeline efficiency — a Smoke Test kiszűri a buildek akár 30%-t, amelyek nem mennének át a regresszión, a megtakarított erőforrások pedig elegendőek más feladatok párhuzamos futtatásához.

ParaméterSmoke TestRegressziós tesztelés
CélA kritikus út gyors ellenőrzéseA teljes funkcionalitás ellenőrzése
Méret5–10% forgatókönyv80–100% forgatókönyv
Idő5–15 perc2–12 óra
GyakoriságMinden buildnélKiadás előtt vagy naponta
CI/CDBuild után, regresszió előttSmoke Test után

Mi tartozik a mobilalkalmazás Smoke Testjébe

Alkalmazás indítása

Alkalmazás indítása — az első és legfontosabb teszt. Az alkalmazásnak minden céleszközön összeomlás nélkül kell elindulnia. A Smoke Test ellenőrzi a hidegindítást: telepítés → megnyitás → első képernyő megjelenítése. Ha az alkalmazás indításkor összeomlik, a további tesztelés értelmetlen. Az XCUITest és Espresso 2–3 sornyi kóddal automatizálhatóvá teszi az indítás ellenőrzését. Launch argument `-AppleLanguages (hu)` segít ellenőrizni a lokalizációt indításkor.

Autorizáció

Autorizáció — a második kritikus forgatókönyv. A Smoke Testnek ellenőriznie kell, hogy a bejelentkezési űrlap megjelenik, a beviteli mezők reagálnak az érintésre, a bejelentkezési gomb elküldi a kérést, és az alkalmazás a sikeres autorizáció után átlép a főképernyőre. Az autorizációs hiba blokkolja a hozzáférést az összes többi funkcióhoz, ezért annak ellenőrzése a minimális készlet része. Token refresh — kiegészítő ellenőrzés OAuth 2.0-s alkalmazásokhoz.

Tartalom betöltése és navigáció

Fő tartalom betöltése — a Smoke Test harmadik tesztje. Az alkalmazás főképernyőjének vagy hírfolyamának be kell töltődnie és meg kell jelenítenie az adatokat. Ha az API nem válaszol, vagy a válasz értelmezése megszakadt, a felhasználó üres képernyőt lát. A hálózati ellenőrzés a Smoke Testben magában foglal egy alap GET kérést a fő végpontra és annak ellenőrzését, hogy a válasz a várt szerkezettel rendelkezik. Navigáció — a negyedik forgatókönyv. A Smoke Test végighalad az alkalmazás fő képernyőin: fő → keresés → profil → beállítások. A lapfül sáv és az oldalsáv mentü — a navigáció tipikus problémaforrásai, amelyeket a Smoke Test korai szakaszban észlel.

Smoke Test automatizálása CI/CD-ben

Fastlane — a mobil CI/CD automatizálásának szabványos eszköze. A Smoke Test Fastlane-ben a `scan` (XCUITest esetén) vagy `gradle` (Espresso esetén) segítségével indul. A Fastlane lehetővé teszi a Smoke Test több eszközön történő párhuzamos beállítását, ami csökkenti a teljes időt. Konfiguráció a Fastfile-ban tartalmazza a Smoke Test készlet célját és az átmeneti küszöböt: 100% sikeres teszt.

GitHub Actions (2024) közzétett egy mobil CI/CD sablont beépített Smoke Testtel. A sablon három szakaszból áll: build → Smoke Test → regresszió. Ha a Smoke Test megbukik, a sablon automatikusan befejezi a csœvezetéket és üzenetet küld Slackbe vagy Telegramba. Matrix strategy lehetővé teszi a Smoke Test egyidejű futtatását három iOS verzión és öt Android modellen.

Felelősségi körök megosztása CI/CD-ben: a Smoke Test a gyors visszajelzésért, a regresszió a teljes lefedettségért felelős. A Smoke Test nem duplikálhatja a regressziót és fordítva. Granularitás Smoke Test — egy ellenőrzés kritikus forgatókönyvenként. Ha a Smoke Test több mint 15 percig tart, optimalizálni kell: távolítsa el a felesleges ellenőrzéseket vagy parallelizálja a végrehajtást.

ruby
# Fastfile-konfiguráció a Smoke Testhez
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

Eszközök a Smoke Testhez

XCUITest — az Apple keretrendszere iOS alkalmazások UI teszteléséhez. Az XCUITest a Smoke Test automatizálására szolgál: alkalmazás indítása, interfész elemek ellenőrzése, felhasználói műveletek szimulálása. Az Xcode Server vagy GitHub Actions kombinációjában az XCUITest minden commitnál fut. XCTest — az alapvető keretrendszer egységtesztekhez, amely kiegészíti az XCUITestet a logikai ellenőrzéshez.

Espresso — a Google keretrendszere Android UI teszteléséhez. Az Espresso szinkronizál az UI szállal és garantálja, hogy az összes animáció befejeződjön az ellenőrzés megkezdése előtt. Az Espresso támogatja az ellenőrzést `onView(withId(...)).check(matches(...))` segítségével. Android Test Orchestrator minden Smoke Testet külön folyamatban futtat, megakadályozva az előző tesztek hatását a következőkre.

Detox — keretrendszer React Native-hoz, amely támogatja a Smoke Testet és a grey-box tesztelést. A Detox szinkronizál a React Native bridge-szel és automatikusan vár az aszinkron műveletek befejeződésére. Grey-box tesztelés lehetővé teszi a Detox számára az alkalmazás állapotának ellenőrzését a forráskódhoz való közvetlen hozzáférés nélkül.

Smoke Test példa Swiftben és Kotlinban

XCUITest iOS esetén két ellenőrzést tartalmaz: az alkalmazás indítását és a főképernyő megjelenítését. A teszt elindítja az alkalmazást `XCUIApplication().launch()` segítségével és ellenőrzi, hogy a kulcselem (pl. `navigationBar`) létezik. Ha az alkalmazás indításkor összeomlik, az XCTest keretrendszer rögzíti a hibát és a teszt FAIL-lel ér véget. Smoke Test nem ellenőrzi a tartalmat — csak azt, hogy a képernyő megnyílt.

Espresso Android esetén az `ActivityScenario`-t használja az Activity elindításához és az `onView`-t az elemek ellenőrzéséhez. A kritikus különbség a platformok között: az iOS szimulátor eltérő viselkedést mutathat a valós eszköztől, ezért Androidon a Smoke Testet Firebase Test Labben vagy emulátorban ajánlott futtatni. Firebase Test Lab támogatja a Smoke Test párhuzamos futtatását 10 eszközön.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

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

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

A fenti példa a Smoke Testet mutatja be a bejelentkezési képernyőn iOS-en. Az első teszt ellenőrzi, hogy a bejelentkezési gomb létezik a képernyőn. A második teszt végighalad a teljes autorizációs útvonalon és ellenőrzi, hogy sikeres bejelentkezés után megjelenik egy üdvözlő üzenet. Timeout 5 másodperc a waitForExistence számára — standard érték a Smoke Testhez: ha az UI elem nem jelenik meg ezalatt az idő alatt, az alkalmazás nem működik megfelelően.

Gyakran Ismételt Kérdések

Hány tesztnek kell lennie egy Smoke Testben?

Az optimális szám 5 és 15 teszt között van modulonként. A Smoke Testnek le kell fednie a felhasználó kritikus útját, de nem szabad megpróbálnia az összes funkcionalitást lefednie. Kritérium — ha a Smoke Test összes tesztje átmegy, az alkalmazás megnyitható a QA környezetben további tesztelésre.

Miben különbözik a Smoke Test a sanity checktől?

Smoke Test ellenőrzi a build stabilitását és minden buildnél elvégzésre kerül. A Sanity check egy szűkebb teszthalmaz, amelyet konkrét változtatások után végeznek el. A Sanity check arra a kérdésre válaszol, hogy ‘vajon ez a változtatás megtörte-e az X funkcionalitást?’, míg a Smoke Test arra, hogy ‘működik-e a build alapvetően?’.

Automatizálni kell a Smoke Testet?

Igen, a Smoke Test automatizálása kötelező gyakorlat a gyakori kiadású projektek számára. Automatizálás biztosítja az ellenőrzések konzisztenciáját és a végrehajtás gyorsaságát. A kézi Smoke Test csak a projekt korai szakaszaiban indokolt, amikor a buildek száma nem haladja meg a heti 2–3-t.

Mit kell tenni, ha a Smoke Test nem sikerül?

A build instabilnak jelölődik és nem kerül további tesztelésre. A fejlesztő értesítést kap a Smoke Test sikertelenségének naplóival. A probléma javítása után új build jön létre, amelyen a Smoke Test újra fut. A blokkoló hibát rögzítik a trackerben.

Milyen gyakran kell frissíteni a Smoke Testet?

Smoke Test minden alkalommal frissül, amikor a felhasználó kritikus útja változik. Ha új kötelező képernyő kerül hozzáadásra (pl. onboarding), annak be kell kerülnie a Smoke Testbe. Javasolt a Smoke Test készlet sprintenkénti felülvizsgálata az ellenőrzések aktualitása érdekében.

Összefoglaló

  • Smoke Test az alkalmazás kritikus útjának minimális ellenőrzéskészlete, minden build után elvégezve.
  • Alapvető ellenőrzések — alkalmazás indítása, autorizáció, tartalom betöltése és navigáció a fő képernyőkön.
  • Különbség a regressziótól — a Smoke Test a forgatókönyvek 5–10%-t fedi le és 5–15 perc alatt végrehajtható, nem órák alatt.
  • Eszközök — XCUITest iOS-hez, Espresso Androidhoz, Detox React Native-hoz.
  • Automatizálás A Smoke Test Fastlane, GitHub Actions vagy Bitrise segítségével CI/CD-be ágyazódik.
  • Smoke Test a regressziós tesztelés előtt történik és kiszűri az instabil buildek akár 30%-t.
  • Javasolt a Smoke Test összetételének sprintenkénti felülvizsgálata az aktualitás megőrzése érdekében.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is