Smoke Test (pagsusuri ng usok) ay isang minimal na hanay ng mga pagsusuri na isinasagawa pagkatapos ng build ng mobile application upang kumpirmahin na ang mga pangunahing function ay gumagana. Pinapayagan ng Smoke Test na mabilis na tanggihan ang mga hindi matatag na build nang hindi nagsasagawa ng buong regression cycle. Ayon sa Google Testing Blog (2024), binabawasan ng Smoke Test ang oras ng feedback para sa developer mula 2–3 oras hanggang 10–15 minuto. Smoke Test ay ang unang filter ng kalidad sa pipeline ng CI/CD na pumipigil sa mga sirang build na makapasok sa susunod na yugto.
Mga Pangunahing Punto
Smoke Test (pagsusuri ng usok) ay isang hanay ng mabilis na mga pagsusuri na sumusuri sa mga pangunahing function ng application nang walang malalim na pagsusuri. Ang termino ay nagmula sa hardware engineering: kung ang isang device pagkatapos ng assembly ay nagsimulang manigarilyo, hindi ito ipinapadala sa buong pagsubok. Sa mobile development, ang Smoke Test ay gumaganap ng parehong function — sinasala ang mga build na hindi gagana. Ayon sa Microsoft DevOps (2024), ang pagpapatupad ng Smoke Test ay nagbabawas ng bilang ng mga depekto na nakakarating sa QA team ng 40%.
Ang Smoke Test ay isinasagawa sa bawat bagong build — pareho sa Android at iOS. Sa ideal na kaso, ang Smoke Test ay hindi dapat tumagal ng higit sa 15 minuto at awtomatikong magsisimula pagkatapos ng matagumpay na build. Kriterya ng pagpasa — 100% ng mga pagsusuri mula sa Smoke Test set ay dapat magtagumpay. Kung hindi bababa sa isang test ang bumagsak, ang build ay minarkahan bilang hindi matatag at hindi ipinapadala sa karagdagang pagsubok. Ayon sa Google Testing Blog (2024), ang pamamaraang ito ay nagbabawas ng oras ng paghahatid ng mga feature sa mga user ng 25%.
Ang Smoke Test ay maaaring manual (checklist ng 5–10 puntos) o automated. Sa modernong mobile projects, ang automated Smoke Test na naka-embed sa CI/CD ay mas pinipili. Manual Smoke Test ay nabibigyang-katwiran lamang sa mga unang yugto ng proyekto, kapag ang automation ay hindi ekonomiko. Ayon sa Bitrise (2025), 73% ng mga mobile development team ay nag-automate ng Smoke Test.
Smoke Test at regression testing ay madalas na napagkakamalan, ngunit ito ay magkaibang mga kasanayan na may magkaibang layunin. Ang regression testing ay sumusuri kung ang mga pagbabago sa code ay hindi sumira sa umiiral na functionality. Sinasaklaw nito ang lahat ng module at scenario ng application, kabilang ang mga bihirang at boundary cases. Ang Smoke Test ay sumusuri lamang ng kritikal na landas — ang mga pangunahing scenario kung wala ang application ay walang silbi. Lalim ng saklaw — pangunahing pagkakaiba: Smoke Test ay sumasaklaw ng 5–10% ng functionality, regression — 80–100%.
Pangalawang pagkakaiba — oras ng pagpapatupad. Ang regression set para sa mobile application ay maaaring tumagal mula 2 hanggang 12 oras depende sa laki ng proyekto at bilang ng mga platform. Ang Smoke Test ay tumatagal ng 5–15 minuto. Ayon sa Sauce Labs (2025), ang average na oras ng pagpapatupad ng regression set para sa iOS application ay 4.5 oras, para sa Android — 3.2 oras. Ang Smoke Test sa parehong platform ay umaabot sa 10–15 minuto.
Pangatlong pagkakaiba — posisyon sa pipeline. Ang Smoke Test ay isinasagawa kaagad pagkatapos ng build, bago ang regression testing. Kung ang Smoke Test ay hindi pumasa, ang regression ay hindi sinisimulan — ito ay nakakatipid ng mga mapagkukunan ng CI/CD. Pipeline efficiency — Smoke Test ay sumasala ng hanggang 30% ng mga build na hindi papasa sa regression, at ang naipon na mga mapagkukunan ay sapat para sa parallel na pagpapatakbo ng iba pang mga gawain.
| Parameter | Smoke Test | Regression Testing |
|---|---|---|
| Layunin | Mabilis na pagsusuri ng kritikal na landas | Pagsusuri ng buong functionality |
| Saklaw | 5–10% ng mga scenario | 80–100% ng mga scenario |
| Oras | 5–15 minuto | 2–12 oras |
| Dalas | Bawat build | Bago ang release o araw-araw |
| CI/CD | Pagkatapos ng build, bago ang regression | Pagkatapos ng Smoke Test |
Pag-lunch ng application — una at pinakamahalagang pagsusuri. Ang application ay dapat mag-lunch nang walang crash sa lahat ng target na device. Sinusuri ng Smoke Test ang cold start: pag-install → pagbukas → pagpapakita ng unang screen. Kung ang application ay nag-crash sa pag-lunch, ang karagdagang pagsubok ay walang kabuluhan. Ang XCUITest at Espresso ay nagbibigay-daan sa automation ng pagsusuri ng pag-lunch sa 2–3 linya ng code. Launch argument `-AppleLanguages (fil)` ay tumutulong upang suriin ang localization sa start.
Authorization — pangalawang kritikal na scenario. Dapat suriin ng Smoke Test na ang login form ay ipinapakita, ang mga input field ay tumutugon sa pagpindot, ang login button ay nagpapadala ng request, at ang application ay pumupunta sa home screen pagkatapos ng matagumpay na authorization. Ang error sa authorization ay humaharang sa access sa lahat ng iba pang function, kaya ang pagsusuri nito ay kasama sa minimal na set. Token refresh — karagdagang pagsusuri para sa mga application na may OAuth 2.0.
Pag-load ng pangunahing content — ikatlong pagsusuri ng Smoke Test. Ang home screen o feed ng application ay dapat mag-load at magpakita ng data. Kung ang API ay hindi tumugon o ang pag-parse ng response ay sira, makikita ng user ang isang blangkong screen. Ang pagsusuri ng network sa Smoke Test ay kasama ang basic GET request sa pangunahing endpoint at pagsusuri na ang response ay may inaasahang structure. Navigation — ikaapat na scenario. Ang Smoke Test ay dumadaan sa mga pangunahing screen ng application: home → search → profile → settings. Ang tab bar at side menu — tipikal na mga pinagmumulan ng problema sa navigation na natutuklasan ng Smoke Test sa maagang yugto.
Fastlane — karaniwang tool para sa pag-automate ng mobile CI/CD. Ang Smoke Test sa Fastlane ay sinisimulan sa pamamagitan ng `scan` (para sa XCUITest) o `gradle` (para sa Espresso). Pinapayagan ng Fastlane ang configuration ng Smoke Test sa maraming device nang magkakasabay, na nagbabawas ng kabuuang oras. Configuration sa Fastfile ay may kasamang target para sa Smoke Test set at threshold ng pagpasa: 100% matagumpay na mga test.
GitHub Actions (2024) ay nag-publish ng template ng mobile CI/CD na may built-in na Smoke Test. Ang template ay may tatlong yugto: build → Smoke Test → regression. Kung ang Smoke Test ay bumagsak, ang template ay awtomatikong magtatapos sa pipeline at magpapadala ng notification sa Slack o Telegram. Matrix strategy ay nagpapahintulot sa pagpapatakbo ng Smoke Test sa tatlong bersyon ng iOS at limang modelo ng Android nang sabay-sabay.
Paghahati ng responsibilidad sa CI/CD: Smoke Test ay responsable para sa mabilis na feedback, regression — para sa buong saklaw. Ang Smoke Test ay hindi dapat duplicate ang regression at vice versa. Granularity ng Smoke Test — isang pagsusuri bawat kritikal na scenario. Kung ang Smoke Test ay tumatagal ng higit sa 15 minuto, kailangan itong i-optimize: alisin ang mga labis na pagsusuri o i-parallelize ang execution.
# Fastfile configuration para sa 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
XCUITest — framework ng Apple para sa UI testing ng iOS applications. Ang XCUITest ay ginagamit para sa automation ng Smoke Test: pag-lunch ng application, pagsusuri ng mga elemento ng interface, pag-simulate ng mga aksyon ng user. Sa kombinasyon sa Xcode Server o GitHub Actions, ang XCUITest ay tumatakbo sa bawat commit. XCTest — pangunahing framework para sa unit test na nagpupuno sa XCUITest para sa pagsusuri ng logic.
Espresso — framework ng Google para sa UI testing ng Android. Ang Espresso ay nag-synchronize sa UI thread at ginagarantiyahan na ang lahat ng animation ay natapos bago magsimula ang pagsusuri. Ang Espresso ay sumusuporta sa pagsusuri sa pamamagitan ng `onView(withId(...)).check(matches(...))`. Android Test Orchestrator ay nagpapatakbo ng bawat Smoke Test sa isang hiwalay na proseso, na pumipigil sa impluwensya ng mga nakaraang test sa mga susunod na test.
Detox — framework para sa React Native na sumusuporta sa Smoke Test at grey-box testing. Ang Detox ay nag-synchronize sa React Native bridge at awtomatikong naghihintay para sa pagkumpleto ng mga asynchronous na operasyon. Grey-box testing ay nagpapahintulot sa Detox na suriin ang estado ng application nang walang direktang access sa source code.
XCUITest para sa iOS ay naglalaman ng dalawang pagsusuri: pag-lunch ng application at pagpapakita ng home screen. Ang test ay nag-lunch ng application sa pamamagitan ng `XCUIApplication().launch()` at sinusuri kung ang key element (hal. `navigationBar`) ay umiiral. Kung ang application ay nag-crash sa pag-lunch, ang XCTest framework ay nagtatala ng error at ang test ay nagtatapos sa FAIL. Smoke Test ay hindi sumusuri ng content — lamang na ang screen ay bumukas.
Espresso para sa Android ay gumagamit ng `ActivityScenario` para sa pag-lunch ng Activity at `onView` para sa pagsusuri ng mga elemento. Ang kritikal na pagkakaiba sa pagitan ng mga platform: ang iOS simulator ay maaaring magpakita ng ibang pag-uugali mula sa totoong device, kaya ang Smoke Test sa Android ay inirerekomenda na patakbuhin sa Firebase Test Lab o emulator. Firebase Test Lab ay sumusuporta sa parallel na pagpapatakbo ng Smoke Test sa 10 device.
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))
}
}
Ang halimbawa sa itaas ay nagpapakita ng Smoke Test para sa login screen sa iOS. Ang unang test ay sumusuri kung ang login button ay umiiral sa screen. Ang pangalawang test ay dumadaan sa buong authorization path at sinusuri na pagkatapos ng matagumpay na pag-login, ang welcome message ay ipinapakita. Timeout ng 5 segundo para sa waitForExistence — karaniwang halaga para sa Smoke Test: kung ang UI element ay hindi ipinapakita sa oras na ito, ang application ay hindi gumagana nang tama.
Mga Madalas na Itanong
Ang optimal na bilang ay 5 hanggang 15 test bawat modyul. Ang Smoke Test ay dapat sumaklaw sa kritikal na landas ng user, ngunit hindi dapat subukang saklawin ang buong functionality. Kriterya — kung ang lahat ng test ng Smoke Test ay pumasa, ang application ay maaaring buksan sa QA environment para sa karagdagang pagsubok.
Smoke Test ay sumusuri sa stability ng build at isinasagawa sa bawat build. Ang Sanity check ay isang mas makitid na hanay ng mga test na isinasagawa pagkatapos ng mga partikular na pagbabago. Ang Sanity check ay sumasagot sa tanong na ‘sinira ba ng pagbabagong ito ang functionality X?’, habang ang Smoke Test ay sumasagot sa ‘gumagana ba ang build sa prinsipyo?’.
Oo, ang automation ng Smoke Test ay isang mandatoryong kasanayan para sa mga proyektong may madalas na release. Automation ay nagsisiguro ng consistency ng mga pagsusuri at bilis ng pagpapatupad. Ang manual Smoke Test ay nabibigyang-katwiran lamang sa mga unang yugto ng proyekto, kapag ang bilang ng mga build ay hindi lalampas sa 2–3 bawat linggo.
Ang build ay minarkahan bilang hindi matatag at hindi ipinapadala sa karagdagang pagsubok. Ang developer ay tumatanggap ng notification na may mga log ng pagkabigo ng Smoke Test. Pagkatapos ayusin ang problema, isang bagong build ay nilikha kung saan ang Smoke Test ay muling pinapatakbo. Ang blocking defect ay naitala sa tracker.
Smoke Test ay ina-update sa bawat pagbabago ng kritikal na landas ng user. Kung ang isang bagong mandatoryong screen ay idinagdag (hal. onboarding), dapat itong pumasok sa Smoke Test. Inirerekomenda na suriin ang Smoke Test set bawat sprint para sa pagiging napapanahon ng mga pagsusuri.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din