Mobil inkişafda Smoke Test — nədir, vəzifələri və necə tətbiq olunur

Müəllif: IT Sectr Dərc olunub: 2026-04-08 Oxuma vaxtı: 9 dəq

Smoke Test (tüstü testi) — mobil tətbiqin qurulmasından sonra əsas funksiyaların işlədiyini təsdiqləmək üçün yerinə yetirilən minimal yoxlama dəstidir. Smoke Test tam reqressiv dövrü keçirmədən qeyri-sabit qurğuları tez bir zamanda rədd etməyə imkan verir. Google Testing Blog (2024) məlumatına görə, Smoke Test tərtibatçı üçün geribildirim vaxtını 2–3 saatdan 10–15 dəqiqəyə endirir. Smoke Test CI/CD boru xəttində keyfiyyətin ilk filtridir və sıradan çıxmış qurğuların növbəti mərhələyə keçməsinin qarşısını alır.

Əsas məqamlar

  • Smoke Test — qeyri-sabit qurğuları rədd etmək üçün tətbiqin əsas funksiyalarının sürətli yoxlanması.
  • Vəzifələr — istifadəçinin kritik yolunun işləkliyinin təsdiqlənməsi (giriş, lent, profil).
  • Smoke Test reqressiv testdən əvvəl yerinə yetirilir və adətən 5–15 dəqiqə çəkir.
  • Avtomatlaşdırma Smoke Test-in CI/CD-də olması müasir mobil inkişaf boru xəttinin məcburi elementidir.
  • Reqressiyadan fərqi — Smoke Test yalnız “kritik yolu” yoxlayır, reqressiya bütün funksionallığı əhatə edir.

Smoke Test nədir?

Smoke Test (tüstü testi) — dərin analiz olmadan tətbiqin əsas funksiyalarını yoxlayan sürətli testlər dəstidir. Termin aparat mühəndisliyindən gəlir: qurğu yığıldıqdan sonra tüstülənirsə, tam testə göndərilmir. Mobil inkişafda Smoke Test eyni funksiyanı yerinə yetirir — əvvəlcədən işlək olmayan qurğuları ayırır. Microsoft DevOps (2024) məlumatına görə, Smoke Test-in tətbiqi QA komandasına çatan qüsurların sayını 40% azaldır.

Smoke Test hər yeni qurğuda — həm Android, həm də iOS-da yerinə yetirilir. İdeal halda Smoke Test 15 dəqiqədən çox olmamalı və uğurlu qurğudan sonra avtomatik başlamalıdır. Keçid meyarı — Smoke Test dəstindən olan testlərin 100%-i uğurla başa çatmalıdır. Ən azı bir test uğursuz olarsa, qurğu qeyri-sabit kimi qeyd olunur və sonrakı testə göndərilmir. Google Testing Blog (2024) məlumatına görə, bu yanaşma funksiyaların istifadəçilərə çatdırılma müddətini 25% azaldır.

Smoke Test həm əl ilə (5–10 bənddən ibarət yoxlama siyahısı), həm də avtomatlaşdırılmış ola bilər. Müasir mobil layihələrdə CI/CD-yə qurulmuş avtomatlaşdırılmış Smoke Test üstünlük təşkil edir. Əl ilə Smoke Test yalnız layihənin ilkin mərhələlərində, avtomatlaşdırmanın iqtisadi cəhətdən sərfəli olmadığı hallarda əsaslandırılır. Bitrise (2025) məlumatına görə, mobil inkişaf komandalarının 73%-i Smoke Test-i avtomatlaşdırır.

Smoke Test reqressiv testdən nə ilə fərqlənir

Smoke Test və reqressiv test tez-tez qarışdırılır, lakin bunlar fərqli məqsədləri olan fərqli təcrübələrdir. Reqressiv test kodda edilən dəyişikliklərin mövcud funksionallığı pozmadığını yoxlayır. O, tətbiqin bütün modullarını və ssenarilərini, o cümlədən nadir və sərhəd halları əhatə edir. Smoke Test yalnız kritik yolu — tətbiqin faydasız olduğu əsas ssenariləri yoxlayır. Əhatə dərinliyi — əsas fərq: Smoke Test funksionallığın 5–10%-ni, reqressiya isə 80–100%-ni əhatə edir.

İkinci fərq — yerinə yetirmə vaxtı. Mobil tətbiq üçün reqressiv dəst layihənin ölçüsündən və platformaların sayından asılı olaraq 2 saatdan 12 saata qədər çəkə bilər. Smoke Test 5–15 dəqiqə çəkir. Sauce Labs (2025) məlumatına görə, iOS tətbiqi üçün reqressiv dəstin orta yerinə yetirmə vaxtı 4,5 saat, Android üçün isə 3,2 saatdır. Hər iki platformada Smoke Test 10–15 dəqiqəyə uyğun gəlir.

Üçüncü fərq — boru xəttində yeri. Smoke Test qurğudan dərhal sonra, reqressiv testdən əvvəl yerinə yetirilir. Smoke Test keçilməzsə, reqressiya başlamır — bu, CI/CD resurslarına qənaət edir. Pipeline efficiency — Smoke Test reqressiyadan keçməyəcək qurğuların 30%-ə qədərini ayırır, qənaət edilmiş resurslar isə digər tapşırıqların paralel icrası üçün kifayət edir.

ParametrSmoke TestReqressiv test
MəqsədKritik yolun sürətli yoxlanmasıBütün funksionallığın yoxlanması
Həcm5–10% ssenarilər80–100% ssenarilər
Vaxt5–15 dəqiqə2–12 saat
TezlikHər qurğudaBuraxılışdan əvvəl və ya gündəlik
CI/CDQurğudan sonra, reqressiyadan əvvəlSmoke Test-dən sonra

Mobil tətbiqin Smoke Testinə nə daxildir

Tətbiqin işə salınması

Tətbiqin işə salınması — ilk və ən vacib test. Tətbiq bütün hədəf cihazlarda qəzasız işə düşməlidir. Smoke Test soyuq başlanğıcı yoxlayır: quraşdırma → açma → ilk ekranın göstərilməsi. Əgər tətbiq işə salınarkən qəzaya uğrayarsa, sonrakı test mənasızdır. XCUITest və Espresso 2–3 sətir kodda işə salma yoxlamasını avtomatlaşdırmağa imkan verir. Launch argument `-AppleLanguages (az)` başlanğıcda lokallaşdırmanı yoxlamağa kömək edir.

Avtorizasiya

Avtorizasiya — ikinci kritik ssenari. Smoke Test giriş formasının göstərildiyini, giriş sahələrinin toxunuşa reaksiya verdiyini, giriş düyməsinin sorğu göndərdiyini və uğurlu avtorizasiyadan sonra tətbiqin əsas ekrana keçdiyini yoxlamalıdır. Avtorizasiya xətası bütün digər funksiyalara girişi bloklayır, buna görə də onun yoxlanması minimal dəstə daxildir. Token refresh — OAuth 2.0 olan tətbiqlər üçün əlavə yoxlama.

Məzmun yükləmə və naviqasiya

Əsas məzmunun yüklənməsi — Smoke Test-in üçüncü testi. Tətbiqin əsas ekranı və ya lenti yüklənməli və məlumatları göstərməlidir. Əgər API cavab vermirsə və ya cavabın pars edilməsi pozulubsa, istifadəçi boş ekran görür. Smoke Test-də şəbəkə yoxlaması əsas endpoynta əsas GET sorğusu və cavabın gözlənilən struktura malik olduğunun yoxlanmasını əhatə edir. Naviqasiya — dördüncü ssenari. Smoke Test tətbiqin əsas ekranlarından keçir: əsas → axtarış → profil → parametrlər. Tab paneli və yan menyu — Smoke Test-in erkən mərhələdə aşkar etdiyi naviqasiyada tipik problem mənbələridir.

CI/CD-də Smoke Test-in avtomatlaşdırılması

Fastlane — mobil CI/CD-nin avtomatlaşdırılması üçün standart alət. Fastlane-də Smoke Test `scan` (XCUITest üçün) və ya `gradle` (Espresso üçün) vasitəsilə işə salınır. Fastlane bir neçə cihazda Smoke Test-in paralel işə salınmasını konfiqurasiya etməyə imkan verir ki, bu da ümumi vaxtı azaldır. Konfiqurasiya Fastfile-də Smoke Test dəstinə hədəf və keçid həddini əhatə edir: 100% uğurlu test.

GitHub Actions (2024) daxili Smoke Test ilə mobil CI/CD şablonu nəşr etdi. Şablona üç mərhələ daxildir: qurğu → Smoke Test → reqressiya. Smoke Test uğursuz olarsa, şablon avtomatik boru xəttini dayandırır və Slack və ya Telegram-da bildiriş göndərir. Matrix strategy eyni anda üç iOS versiyasında və beş Android modelində Smoke Test-i işə salmağa imkan verir.

Məsuliyyət bölgüsü CI/CD-də: Smoke Test sürətli geribildirimə, reqressiya isə tam əhatəyə cavabdehdir. Smoke Test reqressiyanı təkrarlamamalıdır və əksinə. Qranulyarlıq Smoke Test — hər kritik ssenari üçün bir yoxlama. Smoke Test 15 dəqiqədən çox çəkirsə, onu optimallaşdırmaq lazımdır: artıq yoxlamaları çıxarmaq və ya icranı paralelləşdirmək.

ruby
# Smoke Test üçün Fastfile konfiqurasiyası
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 üçün alətlər

XCUITest — iOS tətbiqlərinin UI testi üçün Apple freymvorku. XCUITest Smoke Test-in avtomatlaşdırılması üçün istifadə olunur: tətbiqin işə salınması, interfeys elementlərinin yoxlanması, istifadəçi hərəkətlərinin simulyasiyası. Xcode Server və ya GitHub Actions ilə birlikdə XCUITest hər kommitdə işə salınır. XCTest — məntiqi yoxlamaq üçün XCUITest-i tamamlayan əsas vahid test freymvorku.

Espresso — Android-in UI testi üçün Google freymvorku. Espresso UI axını ilə sinxronlaşır və yoxlamaya başlamazdan əvvəl bütün animasiyaların tamamlandığına zəmanət verir. Espresso `onView(withId(...)).check(matches(...))` vasitəsilə yoxlamanı dəstəkləyir. Android Test Orchestrator hər Smoke Test-i ayrı prosesdə işə salır ki, bu da əvvəlki testlərin sonrakılara təsirinin qarşısını alır.

Detox — Smoke Test və grey-box testini dəstəkləyən React Native freymvorku. Detox React Native bridge ilə sinxronlaşır və asinxron əməliyyatların tamamlanmasını avtomatik gözləyir. Grey-box testi Detox-a mənbə koduna birbaşa giriş olmadan tətbiqin vəziyyətini yoxlamağa imkan verir.

Swift və Kotlin-də Smoke Test nümunəsi

XCUITest iOS üçün iki yoxlama əhatə edir: tətbiqin işə salınması və əsas ekranın göstərilməsi. Test `XCUIApplication().launch()` vasitəsilə tətbiqi işə salır və əsas elementin (məsələn, `navigationBar`) mövcud olduğunu yoxlayır. Əgər tətbiq işə salınarkən qəzaya uğrayarsa, XCTest freymvorku xətanı qeyd edir və test FAIL ilə başa çatır. Smoke Test məzmunu yoxlamır — yalnız ekranın açıldığını yoxlayır.

Espresso Android üçün Activity-ni işə salmaq üçün `ActivityScenario` və elementləri yoxlamaq üçün `onView` istifadə edir. Platformalar arasında kritik fərq: iOS simulyatoru real cihazdan fərqli davranış göstərə bilər, buna görə də Android-də Smoke Test Firebase Test Lab və ya emulatorda işə salınması tövsiyə olunur. Firebase Test Lab 10 cihazda Smoke Test-in paralel işə salınmasını dəstəkləyir.

swift
import XCTest

class LoginSmokeTest: XCTestCase {
    let app = XCUIApplication()

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

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

Yuxarıdakı nümunə iOS-da giriş ekranı üçün Smoke Test-i göstərir. Birinci test giriş düyməsinin ekranda mövcud olduğunu yoxlayır. İkinci test tam avtorizasiya yolunu keçir və uğurlu girişdən sonra xoş gəlmisiniz mesajının göstərildiyini yoxlayır. Timeout waitForExistence üçün 5 saniyə — Smoke Test üçün standart dəyər: UI elementi bu müddət ərzində göstərilməzsə, tətbiq düzgün işləmir.

Tez-tez verilən suallar

Smoke Test-də neçə test olmalıdır?

Optimal sayı bir modul üçün 5-dən 15-ə qədər testdir. Smoke Test istifadəçinin kritik yolunu əhatə etməlidir, lakin bütün funksionallığı əhatə etməyə çalışmamalıdır. Meyar — Smoke Test-in bütün testləri keçərsə, tətbiq sonrakı test üçün QA mühitində açıla bilər.

Smoke Test sanity check-dən nə ilə fərqlənir?

Smoke Test qurğunun sabitliyini yoxlayır və hər qurğuda yerinə yetirilir. Sanity check — müəyyən dəyişikliklər edildikdən sonra yerinə yetirilən daha dar test dəstidir. Sanity check “bu dəyişiklik X funksionallığını pozdu?” sualına, Smoke Test isə “qurğu ümumiyyətlə işləyir?” sualına cavab verir.

Smoke Test-i avtomatlaşdırmaq lazımdırmı?

Bəli, Smoke Test-in avtomatlaşdırılması tez-tez buraxılışları olan layihələr üçün məcburi təcrübədir. Avtomatlaşdırma yoxlamaların ardıcıllığını və icra sürətini təmin edir. Əl ilə Smoke Test yalnız layihənin ilkin mərhələlərində, qurğuların sayı həftədə 2–3-ü keçmədikdə əsaslandırılır.

Smoke Test keçilməzsə nə etməli?

Qurğu qeyri-sabit kimi qeyd olunur və sonrakı testə göndərilmir. Tərtibatçı Smoke Test-in uğursuzluq jurnalları ilə bildiriş alır. Problem düzəldildikdən sonra yeni qurğu yaradılır və Smoke Test yenidən işə salınır. Bloklayan qüsur izləyicidə qeyd olunur.

Smoke Test nə qədər tez-tez yenilənməlidir?

Smoke Test istifadəçinin kritik yolunda hər dəyişiklikdə yenilənir. Yeni məcburi ekran (məsələn, onboarding) əlavə edilərsə, Smoke Test-ə daxil olmalıdır. Hər sprintdə Smoke Test dəstinin yoxlamaların aktuallığı baxımından nəzərdən keçirilməsi tövsiyə olunur.

Nəticə

  • Smoke Test — hər qurğudan sonra yerinə yetirilən tətbiqin kritik yolunun minimal yoxlama dəstidir.
  • Əsas yoxlamalar — tətbiqin işə salınması, avtorizasiya, məzmun yükləmə və əsas ekranlar üzrə naviqasiya.
  • Reqressiyadan fərqi — Smoke Test ssenarilərin 5–10%-ni əhatə edir və saatlarla deyil, 5–15 dəqiqəyə yerinə yetirilir.
  • Alətlər — iOS üçün XCUITest, Android üçün Espresso, React Native üçün Detox.
  • Avtomatlaşdırma Smoke Test Fastlane, GitHub Actions və ya Bitrise vasitəsilə CI/CD-yə qurulur.
  • Smoke Test reqressiv testdən əvvəl yerinə yetirilir və qeyri-sabit qurğuların 30%-ə qədərini ayırır.
  • Aktuallığı qorumaq üçün Smoke Test-in tərkibinin hər sprintdə nəzərdən keçirilməsi tövsiyə olunur.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun