Smoke Test (pengujian asap) adalah seperangkat pemeriksaan minimal yang dilakukan setelah build aplikasi mobile untuk memastikan bahwa fungsi-fungsi dasar berfungsi. Smoke Test memungkinkan penolakan cepat build yang tidak stabil tanpa melakukan siklus regresi penuh. Menurut Google Testing Blog (2024), Smoke Test mengurangi waktu umpan balik untuk pengembang dari 2–3 jam menjadi 10–15 menit. Smoke Test adalah filter kualitas pertama dalam pipeline CI/CD yang mencegah build yang rusak masuk ke tahap berikutnya.
Poin Utama
Smoke Test (pengujian asap) adalah sekumpulan tes cepat yang memeriksa fungsi dasar aplikasi tanpa analisis mendalam. Istilah ini berasal dari teknik perangkat keras: jika perangkat setelah perakitan mulai mengeluarkan asap, perangkat tersebut tidak dikirim ke pengujian penuh. Dalam pengembangan mobile, Smoke Test melakukan fungsi yang sama — menyaring build yang sudah jelas tidak berfungsi. Menurut Microsoft DevOps (2024), penerapan Smoke Test mengurangi jumlah cacat yang mencapai tim QA hingga 40%.
Smoke Test dilakukan pada setiap build baru — baik di Android maupun iOS. Idealnya, Smoke Test tidak boleh lebih dari 15 menit dan dimulai secara otomatis setelah build berhasil. Kriteria kelulusan — 100% tes dari set Smoke Test harus berhasil diselesaikan. Jika setidaknya satu tes gagal, build ditandai sebagai tidak stabil dan tidak dikirim ke pengujian lebih lanjut. Menurut Google Testing Blog (2024), pendekatan ini mengurangi waktu pengiriman fitur ke pengguna sebesar 25%.
Smoke Test bisa dilakukan secara manual (daftar periksa 5–10 poin) maupun otomatis. Dalam proyek mobile modern, Smoke Test otomatis yang terintegrasi dalam CI/CD lebih diutamakan. Smoke Test manual hanya dibenarkan pada tahap awal proyek, ketika otomatisasi tidak ekonomis. Menurut Bitrise (2025), 73% tim pengembangan mobile mengotomatiskan Smoke Test.
Smoke Test dan pengujian regresi sering tertukar, tetapi ini adalah praktik yang berbeda dengan tujuan yang berbeda. Pengujian regresi memeriksa apakah perubahan dalam kode tidak merusak fungsionalitas yang ada. Ini mencakup semua modul dan skenario aplikasi, termasuk kasus yang jarang dan batas. Smoke Test hanya memeriksa jalur kritis — skenario dasar tanpa aplikasi menjadi tidak berguna. Kedalaman cakupan — perbedaan utama: Smoke Test mencakup 5–10% fungsionalitas, regresi — 80–100%.
Perbedaan kedua — waktu eksekusi. Set regresi untuk aplikasi mobile dapat berlangsung dari 2 hingga 12 jam tergantung pada ukuran proyek dan jumlah platform. Smoke Test memakan waktu 5–15 menit. Menurut Sauce Labs (2025), waktu eksekusi rata-rata set regresi untuk aplikasi iOS adalah 4,5 jam, untuk Android — 3,2 jam. Smoke Test di kedua platform selesai dalam 10–15 menit.
Perbedaan ketiga — posisi dalam pipeline. Smoke Test dilakukan segera setelah build, sebelum pengujian regresi. Jika Smoke Test tidak lulus, regresi tidak dimulai — ini menghemat sumber daya CI/CD. Pipeline efficiency — Smoke Test menyaring hingga 30% build yang tidak akan lulus regresi, dan sumber daya yang dihemat cukup untuk menjalankan tugas lain secara paralel.
| Parameter | Smoke Test | Pengujian Regresi |
|---|---|---|
| Tujuan | Pemeriksaan cepat jalur kritis | Pemeriksaan seluruh fungsionalitas |
| Volume | 5–10% skenario | 80–100% skenario |
| Waktu | 5–15 menit | 2–12 jam |
| Frekuensi | Setiap build | Sebelum rilis atau setiap hari |
| CI/CD | Setelah build, sebelum regresi | Setelah Smoke Test |
Peluncuran aplikasi — tes pertama dan terpenting. Aplikasi harus berjalan tanpa crash di semua perangkat target. Smoke Test memeriksa start dingin: instalasi → buka → tampilan layar pertama. Jika aplikasi crash saat peluncuran, pengujian lebih lanjut tidak ada gunanya. XCUITest dan Espresso memungkinkan otomatisasi pemeriksaan peluncuran dalam 2–3 baris kode. Launch argument `-AppleLanguages (id)` membantu memeriksa lokalisasi saat start.
Otorisasi — skenario kritis kedua. Smoke Test harus memeriksa bahwa form login ditampilkan, kolom input merespons sentuhan, tombol login mengirim permintaan, dan aplikasi beralih ke layar utama setelah otorisasi berhasil. Kesalahan otorisasi memblokir akses ke semua fungsi lainnya, oleh karena itu pemeriksaannya termasuk dalam set minimal. Token refresh — pemeriksaan tambahan untuk aplikasi dengan OAuth 2.0.
Muat konten utama — tes ketiga Smoke Test. Layar utama atau feed aplikasi harus dimuat dan menampilkan data. Jika API tidak merespons atau parsing respons rusak, pengguna melihat layar kosong. Pemeriksaan jaringan dalam Smoke Test mencakup permintaan GET dasar ke endpoint utama dan verifikasi bahwa respons memiliki struktur yang diharapkan. Navigasi — skenario keempat. Smoke Test melalui layar utama aplikasi: utama → pencarian → profil → pengaturan. Bilah tab dan menu samping — sumber masalah navigasi yang dideteksi Smoke Test pada tahap awal.
Fastlane — alat standar untuk mengotomatiskan CI/CD mobile. Smoke Test di Fastlane dimulai melalui `scan` (untuk XCUITest) atau `gradle` (untuk Espresso). Fastlane memungkinkan konfigurasi Smoke Test di beberapa perangkat secara paralel, yang mengurangi waktu keseluruhan. Konfigurasi di Fastfile mencakup target untuk set Smoke Test dan ambang kelulusan: 100% tes berhasil.
GitHub Actions (2024) menerbitkan template CI/CD mobile dengan Smoke Test bawaan. Template ini mencakup tiga tahap: build → Smoke Test → regresi. Jika Smoke Test gagal, template secara otomatis mengakhiri pipeline dan mengirim pemberitahuan ke Slack atau Telegram. Matrix strategy memungkinkan menjalankan Smoke Test pada tiga versi iOS dan lima model Android secara bersamaan.
Pembagian tanggung jawab di CI/CD: Smoke Test bertanggung jawab atas umpan balik cepat, regresi — untuk cakupan penuh. Smoke Test tidak boleh menduplikasi regresi dan sebaliknya. Granularitas Smoke Test — satu pemeriksaan per skenario kritis. Jika Smoke Test memakan waktu lebih dari 15 menit, perlu dioptimalkan: hapus pemeriksaan berlebihan atau paralelkan eksekusi.
# Konfigurasi Fastfile untuk 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 Apple untuk pengujian UI aplikasi iOS. XCUITest digunakan untuk otomatisasi Smoke Test: meluncurkan aplikasi, memeriksa elemen antarmuka, mensimulasikan tindakan pengguna. Dikombinasikan dengan Xcode Server atau GitHub Actions, XCUITest dijalankan pada setiap commit. XCTest — framework dasar untuk unit test yang melengkapi XCUITest untuk pemeriksaan logika.
Espresso — framework Google untuk pengujian UI Android. Espresso menyinkronkan dengan thread UI dan menjamin bahwa semua animasi selesai sebelum pemeriksaan dimulai. Espresso mendukung pemeriksaan melalui `onView(withId(...)).check(matches(...))`. Android Test Orchestrator menjalankan setiap Smoke Test dalam proses terpisah, mencegah pengaruh tes sebelumnya pada tes berikutnya.
Detox — framework untuk React Native yang mendukung Smoke Test dan pengujian grey-box. Detox menyinkronkan dengan React Native bridge dan secara otomatis menunggu penyelesaian operasi asinkron. Pengujian grey-box memungkinkan Detox memeriksa status aplikasi tanpa akses langsung ke kode sumber.
XCUITest untuk iOS berisi dua pemeriksaan: meluncurkan aplikasi dan menampilkan layar utama. Tes meluncurkan aplikasi melalui `XCUIApplication().launch()` dan memeriksa apakah elemen kunci (misalnya, `navigationBar`) ada. Jika aplikasi crash saat peluncuran, framework XCTest mencatat kesalahan dan tes berakhir dengan FAIL. Smoke Test tidak memeriksa konten — hanya bahwa layar terbuka.
Espresso untuk Android menggunakan `ActivityScenario` untuk meluncurkan Activity dan `onView` untuk memeriksa elemen. Perbedaan kritis antara platform: simulator iOS dapat menunjukkan perilaku yang berbeda dari perangkat nyata, oleh karena itu Smoke Test di Android disarankan dijalankan di Firebase Test Lab atau emulator. Firebase Test Lab mendukung peluncuran paralel Smoke Test pada 10 perangkat.
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))
}
}
Contoh di atas menunjukkan Smoke Test untuk layar login di iOS. Tes pertama memeriksa apakah tombol login ada di layar. Tes kedua melalui jalur otorisasi penuh dan memeriksa bahwa setelah login berhasil, pesan selamat datang ditampilkan. Timeout 5 detik untuk waitForExistence — nilai standar untuk Smoke Test: jika elemen UI tidak ditampilkan dalam waktu ini, aplikasi tidak berfungsi dengan benar.
Pertanyaan Umum
Jumlah optimal adalah 5 hingga 15 tes per modul. Smoke Test harus mencakup jalur kritis pengguna, tetapi tidak boleh mencoba mencakup seluruh fungsionalitas. Kriteria — jika semua tes Smoke Test lulus, aplikasi dapat dibuka di lingkungan QA untuk pengujian lebih lanjut.
Smoke Test memeriksa stabilitas build dan dilakukan pada setiap build. Sanity check adalah set tes yang lebih sempit yang dilakukan setelah perubahan spesifik. Sanity check menjawab pertanyaan ‘apakah perubahan ini merusak fungsionalitas X?’, sementara Smoke Test menjawab ‘apakah build pada dasarnya berfungsi?’.
Ya, otomatisasi Smoke Test adalah praktik wajib untuk proyek dengan rilis sering. Otomatisasi memastikan konsistensi pemeriksaan dan kecepatan eksekusi. Smoke Test manual hanya dibenarkan pada tahap awal proyek, ketika jumlah build tidak melebihi 2–3 per minggu.
Build ditandai sebagai tidak stabil dan tidak dikirim ke pengujian lebih lanjut. Pengembang menerima pemberitahuan dengan log kegagalan Smoke Test. Setelah masalah diperbaiki, build baru dibuat dan Smoke Test dijalankan kembali. Cacat yang memblokir dicatat di pelacak.
Smoke Test diperbarui pada setiap perubahan jalur kritis pengguna. Jika layar wajib baru ditambahkan (misalnya, onboarding), itu harus masuk ke Smoke Test. Disarankan untuk meninjau set Smoke Test setiap sprint untuk kelayakan pemeriksaan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga