Mobil ishlab chiqishda Smoke Test — nima, vazifalari va qanday qo‘llaniladi

Muallif: IT Sectr Nashr etilgan: 2026-04-08 O'qish vaqti: 9 daq

Smoke Test (tutun testi) — mobil ilova qurilgandan so‘ng asosiy funksiyalar ishlayotganini tasdiqlash uchun bajariladigan minimal tekshiruvlar to‘plamidir. Smoke Test to‘liq regressiv siklini o‘tkazmasdan beqaror qurilmalarni tezda rad etish imkonini beradi. Google Testing Blog (2024) ma’lumotlariga ko‘ra, Smoke Test dasturchi uchun qayta aloqa vaqtini 2–3 soatdan 10–15 daqiqaga qisqartiradi. Smoke Test CI/CD quvuridagi sifatning birinchi filtridir va buzilgan qurilmalarning keyingi bosqichga o‘tishiga yo‘l qo‘ymaydi.

Asosiy mazmun

  • Smoke Test — beqaror qurilmalarni rad etish uchun ilovaning asosiy funksiyalarini tezkor tekshirish.
  • Vazifalar — foydalanuvchining kritik yo‘lining ishlashini tasdiqlash (kirish, lenta, profil).
  • Smoke Test regressiv testdan oldin bajariladi va odatda 5–15 daqiqa davom etadi.
  • Avtomatlashtirish Smoke Testni CI/CDda qilish zamonaviy mobil ishlab chiqish quvurining majburiy elementidir.
  • Regressiyadan farqi — Smoke Test faqat kritik yo‘lni tekshiradi, regressiya butun funksionallikni qamrab oladi.

Smoke Test nima?

Smoke Test (tutun testi) — chuqur tahlilsiz ilovaning asosiy funksiyalarini tekshiradigan tezkor testlar to‘plamidir. Atama apparat muhandisligidan keladi: agar qurilma yig‘ilgandan so‘ng tutun chiqara boshlasa, uni to‘liq testga yuborishmaydi. Mobil ishlab chiqishda Smoke Test xuddi shu vazifani bajaradi — oldindan ishlamaydigan qurilmalarni ajratadi. Microsoft DevOps (2024) ma’lumotlariga ko‘ra, Smoke Testni joriy etish QA jamoasiga yetib boradigan nuqsonlar sonini 40% ga kamaytiradi.

Smoke Test har bir yangi qurilmada — ham Androidda, ham iOSda bajariladi. Ideal holatda Smoke Test 15 daqiqadan oshmasligi va muvaffaqiyatli qurilmadan so‘ng avtomatik ravishda ishga tushishi kerak. O‘tish mezoni — Smoke Test to‘plamidagi testlarning 100% i muvaffaqiyatli yakunlanishi kerak. Agar kamida bitta test muvaffaqiyatsiz bo‘lsa, qurilma beqaror deb belgilanadi va keyingi testga yuborilmaydi. Google Testing Blog (2024) ma’lumotlariga ko‘ra, bu yondashuv funksiyalarni foydalanuvchilarga yetkazish vaqtini 25% ga qisqartiradi.

Smoke Test ham qo‘lda (5–10 banddan iborat tekshirish ro‘yxati), ham avtomatlashtirilgan bo‘lishi mumkin. Zamonaviy mobil loyihalarda CI/CDga o‘rnatilgan avtomatlashtirilgan Smoke Test afzal ko‘riladi. Qo‘lda Smoke Test faqat loyihaning dastlabki bosqichlarida, avtomatlashtirish iqtisodiy jihatdan foydali bo‘lmaganda oqlanadi. Bitrise (2025) ma’lumotlariga ko‘ra, mobil ishlab chiqish jamoalarining 73% i Smoke Testni avtomatlashtiradi.

Smoke Test regressiv testdan nima bilan farqlanadi

Smoke Test va regressiv test ko‘pincha aralashtiriladi, ammo bular turli maqsadlarga ega bo‘lgan turli amaliyotlardir. Regressiv test koddagi o‘zgarishlar mavjud funksionallikni buzganligini tekshiradi. U ilovaning barcha modullari va stsenariylarini, shu jumladan kam uchraydigan va chegaraviy holatlarni qamrab oladi. Smoke Test faqat kritik yo‘lni — ilova foydasiz bo‘lgan asosiy stsenariylarni tekshiradi. Qamrov chuqurligi — asosiy farq: Smoke Test funksionallikning 5–10% ini, regressiya esa 80–100% ini qamrab oladi.

Ikkinchi farq — bajarish vaqti. Mobil ilova uchun regressiv to‘plam loyiha hajmi va platformalar soniga qarab 2 soatdan 12 soatgacha davom etishi mumkin. Smoke Test 5–15 daqiqa davom etadi. Sauce Labs (2025) ma’lumotlariga ko‘ra, iOS ilovasi uchun regressiv to‘plamning o‘rtacha bajarish vaqti 4,5 soat, Android uchun — 3,2 soat. Ikkala platformada Smoke Test 10–15 daqiqaga mos keladi.

Uchinchi farq — quvurdagi joyi. Smoke Test qurilmadan so‘ng darhol, regressiv testdan oldin bajariladi. Agar Smoke Test o‘tmagan bo‘lsa, regressiya ishga tushmaydi — bu CI/CD resurslarini tejaydi. Pipeline efficiency — Smoke Test regressiyadan o‘tmagan qurilmalarning 30% gacha ajratadi va tejalgan resurslar boshqa vazifalarni parallel ravishda bajarish uchun yetarli.

ParametrSmoke TestRegressiv test
MaqsadKritik yo‘lning tezkor tekshiruviButun funksionallikni tekshirish
Hajm5–10% stsenariylar80–100% stsenariylar
Vaqt5–15 daqiqa2–12 soat
ChastotaHar bir qurilmadaChiqarishdan oldin yoki har kuni
CI/CDQurilmadan so‘ng, regressiyadan oldinSmoke Testdan so‘ng

Mobil ilovaning Smoke Testiga nima kiradi

Ilovani ishga tushirish

Ilovani ishga tushirish — birinchi va eng muhim test. Ilova barcha maqsadli qurilmalarda buzilmasdan ishga tushishi kerak. Smoke Test sovuq ishga tushirishni tekshiradi: o‘rnatish → ochish → birinchi ekranni ko‘rsatish. Agar ilova ishga tushirilganda buzilsa, keyingi test ma’nosizdir. XCUITest va Espresso 2–3 satr kodda ishga tushirishni tekshirishni avtomatlashtirishga imkon beradi. Launch argument `-AppleLanguages (uz)` ishga tushirishda lokalizatsiyani tekshirishga yordam beradi.

Avtorizatsiya

Avtorizatsiya — ikkinchi kritik stsenariy. Smoke Test kirish formasi ko‘rsatilganligini, kiritish maydonlari teginishga reaksiya berishini, kirish tugmasi so‘rov yuborishini va muvaffaqiyatli avtorizatsiyadan so‘ng ilova asosiy ekranga o‘tishini tekshirishi kerak. Avtorizatsiya xatosi barcha boshqa funksiyalarga kirishni bloklaydi, shuning uchun uni tekshirish minimal to‘plamga kiritilgan. Token refresh — OAuth 2.0 li ilovalar uchun qo‘shimcha tekshiruv.

Kontentni yuklash va navigatsiya

Asosiy kontentni yuklash – Smoke Testning uchinchi testi. Ilovaning asosiy ekrani yoki lentasi yuklanishi va ma’lumotlarni ko‘rsatishi kerak. Agar API javob bermasa yoki javobni tahlil qilish buzilgan bo‘lsa, foydalanuvchi bo‘sh ekranni ko‘radi. Smoke Testda tarmoq tekshiruvi asosiy endpointga asosiy GET so‘rovi va javob kutilgan tuzilishga ega ekanligini tekshirishni o‘z ichiga oladi. Navigatsiya — to‘rtinchi stsenariy. Smoke Test ilovaning asosiy ekranlaridan o‘tadi: asosiy → qidirish → profil → sozlamalar. Tab paneli va yon menyu — Smoke Test erta bosqichda aniqlaydigan navigatsiyadagi odatiy muammo manbalari.

CI/CDda Smoke Testni avtomatlashtirish

Fastlane — mobil CI/CDni avtomatlashtirish uchun standart vosita. Fastlanedagi Smoke Test `scan` (XCUITest uchun) yoki `gradle` (Espresso uchun) orqali ishga tushiriladi. Fastlane bir nechta qurilmalarda Smoke Testni parallel ravishda sozlash imkonini beradi, bu umumiy vaqtni qisqartiradi. Konfiguratsiya Fastfileda Smoke Test to‘plamiga mo‘ljallangan target va o‘tish chegarasini o‘z ichiga oladi: 100% muvaffaqiyatli testlar.

GitHub Actions (2024) o‘rnatilgan Smoke Testga ega mobil CI/CD shablonini nashr etdi. Shablon uch bosqichni o‘z ichiga oladi: qurilma → Smoke Test → regressiya. Agar Smoke Test muvaffaqiyatsiz bo‘lsa, shablon avtomatik ravishda quvurni tugatadi va Slack yoki Telegramda bildirishnoma yuboradi. Matrix strategy bir vaqtning o‘zida uchta iOS versiyasi va beshta Android modelida Smoke Testni ishga tushirish imkonini beradi.

Mas’uliyat taqsimoti CI/CDda: Smoke Test tezkor qayta aloqa uchun, regressiya to‘liq qamrov uchun javobgardir. Smoke Test regressiyani takrorlamasligi kerak va aksincha. Granulyarlik Smoke Test — har bir kritik stsenariy uchun bitta tekshiruv. Agar Smoke Test 15 daqiqadan ko‘proq davom etsa, uni optimallashtirish kerak: ortiqcha tekshiruvlarni olib tashlash yoki bajarishni parallellashtirish.

ruby
# Smoke Test uchun Fastfile konfiguratsiyasi
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

Smoke Test uchun vositalar

XCUITest — iOS ilovalarining UI testi uchun Apple freymvorki. XCUITest Smoke Testni avtomatlashtirish uchun ishlatiladi: ilovani ishga tushirish, interfeys elementlarini tekshirish, foydalanuvchi harakatlarini simulyatsiya qilish. Xcode Server yoki GitHub Actions bilan birgalikda XCUITest har bir commitda ishga tushiriladi. XCTest — mantiqni tekshirish uchun XCUITestni to‘ldiradigan asosiy unit test freymvorki.

Espresso — Android UI testi uchun Google freymvorki. Espresso UI oqimi bilan sinxronlashadi va tekshiruv boshlanishidan oldin barcha animatsiyalar tugaganligini kafolatlaydi. Espresso `onView(withId(...)).check(matches(...))` orqali tekshiruvni qo‘llab-quvvatlaydi. Android Test Orchestrator har bir Smoke Testni alohida jarayonda ishga tushiradi, bu oldingi testlarning keyingi testlarga ta‘sirini oldini oladi.

Detox — Smoke Test va grey-box testini qo‘llab-quvvatlaydigan React Native freymvorki. Detox React Native bridge bilan sinxronlashadi va asinxron operatsiyalar tugashini avtomatik kutadi. Grey-box testi Detoxga manba kodiga to‘g‘ridan-to‘g‘ri kirishsiz ilova holatini tekshirishga imkon beradi.

Swift va Kotlinda Smoke Test namunasi

XCUITest iOS uchun ikkita tekshiruvni o‘z ichiga oladi: ilovani ishga tushirish va asosiy ekranni ko‘rsatish. Test `XCUIApplication().launch()` orqali ilovani ishga tushiradi va asosiy element (masalan, `navigationBar`) mavjudligini tekshiradi. Agar ilova ishga tushirilganda buzilsa, XCTest freymvorki xatoni qayd etadi va test FAIL bilan yakunlanadi. Smoke Test kontentni tekshirmaydi — faqat ekran ochilganligini tekshiradi.

Espresso Android uchun Activityni ishga tushirishda `ActivityScenario` va elementlarni tekshirishda `onView` dan foydalanadi. Platformalar orasidagi muhim farq: iOS simulyatori haqiqiy qurilmadan farqli xatti-harakatni ko‘rsatishi mumkin, shuning uchun Androidda Smoke Test Firebase Test Lab yoki emulatorda ishga tushirish tavsiya etiladi. Firebase Test Lab 10 ta qurilmada Smoke Testni parallel ishga tushirishni qo‘llab-quvvatlaydi.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

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

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

Yuqoridagi misol iOSda kirish ekrani uchun Smoke Testni ko‘rsatadi. Birinchi test kirish tugmasi ekranda mavjudligini tekshiradi. Ikkinchi test to‘liq avtorizatsiya yo‘lini bosib o‘tadi va muvaffaqiyatli kirishdan so‘ng xush kelibsiz xabari ko‘rsatilganligini tekshiradi. Timeout waitForExistence uchun 5 soniya — Smoke Test uchun standart qiymat: agar UI elementi bu vaqt ichida ko‘rsatilmasa, ilova noto‘g‘ri ishlaydi.

Tez-tez beriladigan savollar

Smoke Testda nechta test bo‘lishi kerak?

Optimal soni bitta modul uchun 5 dan 15 gacha test. Smoke Test foydalanuvchining kritik yo‘lini qamrab olishi kerak, ammo butun funksionallikni qamrab olishga urinmasligi kerak. Mezon — agar Smoke Testning barcha testlari o‘tsa, ilova keyingi test uchun QA muhitida ochilishi mumkin.

Smoke Test sanity checkdan nima bilan farqlanadi?

Smoke Test qurilmaning barqarorligini tekshiradi va har bir qurilmada bajariladi. Sanity check — muayyan o‘zgarishlar kiritilgandan so‘ng bajariladigan torroq testlar to‘plami. Sanity check “bu o‘zgarish X funksionalligini buzdimi?” degan savolga, Smoke Test esa “qurilma umuman ishlaydimi?” degan savolga javob beradi.

Smoke Testni avtomatlashtirish kerakmi?

Ha, Smoke Testni avtomatlashtirish tez-tez chiqariladigan loyihalar uchun majburiy amaliyotdir. Avtomatlashtirish tekshiruvlarning izchilligini va bajarish tezligini ta’minlaydi. Qo‘lda Smoke Test faqat loyihaning dastlabki bosqichlarida, qurilmalar soni haftasiga 2–3 dan oshmaganda oqlanadi.

Smoke Test o‘tmagan bo‘lsa nima qilish kerak?

Qurilma beqaror deb belgilanadi va keyingi testga yuborilmaydi. Dasturchi Smoke Test muvaffaqiyatsizligi jurnallari bilan bildirishnoma oladi. Muammo tuzatilgandan so‘ng yangi qurilma yaratiladi va Smoke Test qayta ishga tushiriladi. Bloklovchi nuqson kuzatuvchida qayd etiladi.

Smoke Testni qanchalik tez-tez yangilash kerak?

Smoke Test foydalanuvchining kritik yo‘lidagi har bir o‘zgarishda yangilanadi. Agar yangi majburiy ekran (masalan, onboarding) qo‘shilsa, u Smoke Testga kiritilishi kerak. Har bir sprintda Smoke Test to‘plamini tekshiruvlarning dolzarbligi nuqtai nazaridan qayta ko‘rib chiqish tavsiya etiladi.

Xulosa

  • Smoke Test — har bir qurilmadan so‘ng bajariladigan ilovaning kritik yo‘lining minimal tekshiruvlar to‘plami.
  • Asosiy tekshiruvlar — ilovani ishga tushirish, avtorizatsiya, kontentni yuklash va asosiy ekranlar bo‘ylab navigatsiya.
  • Regressiyadan farqi — Smoke Test stsenariylarning 5–10% ini qamrab oladi va soatlarda emas, 5–15 daqiqada bajariladi.
  • Vositalar — iOS uchun XCUITest, Android uchun Espresso, React Native uchun Detox.
  • Avtomatlashtirish Smoke Test Fastlane, GitHub Actions yoki Bitrise orqali CI/CDga o‘rnatiladi.
  • Smoke Test regressiv testdan oldin bajariladi va beqaror qurilmalarning 30% gacha ajratadi.
  • Dolzarblikni saqlash uchun Smoke Test tarkibini har bir sprintda qayta ko‘rib chiqish tavsiya etiladi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing