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 (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.
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éter | Smoke Test | Regressziós tesztelés |
|---|---|---|
| Cél | A kritikus út gyors ellenőrzése | A teljes funkcionalitás ellenőrzése |
| Méret | 5–10% forgatókönyv | 80–100% forgatókönyv |
| Idő | 5–15 perc | 2–12 óra |
| Gyakoriság | Minden buildnél | Kiadás előtt vagy naponta |
| CI/CD | Build után, regresszió előtt | Smoke Test után |
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ó — 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.
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.
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.
# 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
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.
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.
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
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.
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?’.
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.
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.
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ó
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.
Olvassa el is