Smoke Test (स्मोक टेस्टिंग) जाँचों का एक न्यूनतम सेट है जो मोबाइल एप्लिकेशन बिल्ड के बाद यह पुष्टि करने के लिए किया जाता है कि मुख्य कार्य काम कर रहे हैं। Smoke Test पूर्ण रिग्रेशन चक्र चलाए बिना अस्थिर बिल्ड को जल्दी से खारिज करने की अनुमति देता है। Google Testing Blog (2024) के अनुसार, Smoke Test डेवलपर के लिए फीडबैक समय को 2–3 घंटे से घटाकर 10–15 मिनट कर देता है। Smoke Test CI/CD पाइपलाइन में गुणवत्ता का पहला फिल्टर है जो टूटे हुए बिल्ड को अगले चरण में जाने से रोकता है।
मुख्य बिंदु
Smoke Test त्वरित परीक्षणों का एक सेट है जो गहन विश्लेषण के बिना एप्लिकेशन के मुख्य कार्यों की जाँच करता है। यह शब्द हार्डवेयर इंजीनियरिंग से आया है: यदि कोई उपकरण असेंबली के बाद धुआँ देने लगता है, तो उसे पूर्ण परीक्षण के लिए नहीं भेजा जाता। मोबाइल डेवलपमेंट में, Smoke Test वही कार्य करता है — यह स्पष्ट रूप से अनुपयोगी बिल्ड को छानता है। Microsoft DevOps (2024) के अनुसार, Smoke Test लागू करने से QA टीम तक पहुँचने वाले दोषों की संख्या 40% कम हो जाती है।
Smoke Test हर नए बिल्ड पर चलाया जाता है — Android और iOS दोनों पर। आदर्श रूप में, Smoke Test को 15 मिनट से अधिक नहीं लेना चाहिए और सफल बिल्ड के बाद स्वचालित रूप से शुरू होना चाहिए। पास मापदंड — Smoke Test सेट के 100% परीक्षण सफलतापूर्वक पूरे होने चाहिए। यदि कम से कम एक परीक्षण विफल होता है, तो बिल्ड को अस्थिर चिह्नित किया जाता है और आगे के परीक्षण के लिए नहीं भेजा जाता। Google Testing Blog (2024) के अनुसार, यह दृष्टिकोण उपयोगकर्ताओं तक फीचर डिलीवरी समय को 25% कम करता है।
Smoke Test मैनुअल (5–10 बिंदुओं की चेकलिस्ट) या ऑटोमेटेड हो सकता है। आधुनिक मोबाइल प्रोजेक्ट्स में, CI/CD में निर्मित ऑटोमेटेड Smoke Test को प्राथमिकता दी जाती है। मैनुअल Smoke Test केवल प्रोजेक्ट के शुरुआती चरणों में उचित है जब ऑटोमेशन आर्थिक रूप से व्यवहार्य नहीं है। Bitrise (2025) के अनुसार, 73% मोबाइल डेवलपमेंट टीमें अपने Smoke Test को ऑटोमेट करती हैं।
Smoke Test और रिग्रेशन टेस्टिंग को अक्सर भ्रमित किया जाता है, लेकिन ये अलग-अलग उद्देश्यों वाली अलग-अलग प्रथाएँ हैं। रिग्रेशन टेस्टिंग जाँच करती है कि कोड में बदलावों ने मौजूदा कार्यक्षमता को नहीं तोड़ा है। यह एप्लिकेशन के सभी मॉड्यूल और परिदृश्यों को कवर करती है, जिसमें दुर्लभ और सीमांत मामले शामिल हैं। Smoke Test केवल क्रिटिकल पथ की जाँच करता है — मुख्य परिदृश्य जिनके बिना एप्लिकेशन बेकार है। कवरेज गहराई मुख्य अंतर है: Smoke Test 5–10% कार्यक्षमता को कवर करता है, रिग्रेशन 80–100% को कवर करता है।
दूसरा अंतर निष्पादन समय है। मोबाइल एप्लिकेशन के लिए रिग्रेशन सेट प्रोजेक्ट के आकार और प्लेटफ़ॉर्म की संख्या के आधार पर 2 से 12 घंटे ले सकता है। Smoke Test 5–15 मिनट लेता है। Sauce Labs (2025) के अनुसार, iOS एप्लिकेशन के लिए रिग्रेशन सेट का औसत निष्पादन समय 4.5 घंटे और Android के लिए — 3.2 घंटे है। दोनों प्लेटफ़ॉर्म पर Smoke Test 10–15 मिनट में पूरा हो जाता है।
तीसरा अंतर पाइपलाइन में स्थान है। Smoke Test बिल्ड के तुरंत बाद, रिग्रेशन टेस्टिंग से पहले किया जाता है। यदि Smoke Test विफल होता है, तो रिग्रेशन शुरू नहीं किया जाता — इससे CI/CD संसाधन बचते हैं। पाइपलाइन दक्षता — Smoke Test 30% तक बिल्ड को छानता है जो रिग्रेशन में विफल होते, और बचाए गए संसाधन अन्य कार्यों को समानांतर चलाने के लिए पर्याप्त होते हैं।
| पैरामीटर | Smoke Test | रिग्रेशन टेस्टिंग |
|---|---|---|
| उद्देश्य | क्रिटिकल पथ की त्वरित जाँच | पूर्ण कार्यक्षमता की जाँच |
| दायरा | 5–10% परिदृश्य | 80–100% परिदृश्य |
| समय | 5–15 मिनट | 2–12 घंटे |
| आवृत्ति | हर बिल्ड पर | रिलीज़ से पहले या दैनिक |
| CI/CD | बिल्ड के बाद, रिग्रेशन से पहले | Smoke Test के बाद |
एप्लिकेशन लॉन्च — पहला और सबसे महत्वपूर्ण परीक्षण। एप्लिकेशन को सभी लक्ष्य उपकरणों पर बिना क्रैश के लॉन्च होना चाहिए। Smoke Test कोल्ड स्टार्ट की जाँच करता है: इंस्टॉल → खोलें → पहली स्क्रीन प्रदर्शित करें। यदि एप्लिकेशन लॉन्च पर क्रैश होता है, तो आगे का परीक्षण व्यर्थ है। XCUITest और Espresso 2–3 लाइनों में लॉन्च जाँच को ऑटोमेट करने की अनुमति देते हैं। लॉन्च आर्गुमेंट `-AppleLanguages (ru)` स्टार्टअप पर स्थानीयकरण की जाँच में मदद करता है।
प्रमाणीकरण — दूसरा क्रिटिकल परिदृश्य। Smoke Test को जाँचना चाहिए कि लॉगिन फ़ॉर्म प्रदर्शित होता है, इनपुट फ़ील्ड स्पर्श पर प्रतिक्रिया करते हैं, लॉगिन बटन अनुरोध भेजता है और सफल प्रमाणीकरण के बाद एप्लिकेशन मुख्य स्क्रीन पर जाता है। प्रमाणीकरण त्रुटि सभी अन्य कार्यों तक पहुँच को अवरुद्ध करती है, इसलिए इसकी जाँच न्यूनतम सेट में शामिल है। टोकन रिफ्रेश — OAuth 2.0 वाले एप्लिकेशन के लिए अतिरिक्त जाँच।
मुख्य सामग्री लोडिंग — तीसरा Smoke Test परीक्षण। एप्लिकेशन की मुख्य स्क्रीन या फीड लोड होनी चाहिए और डेटा प्रदर्शित करना चाहिए। यदि API प्रतिक्रिया नहीं देती या प्रतिक्रिया पार्सिंग टूट गई है, तो उपयोगकर्ता को एक खाली स्क्रीन दिखती है। Smoke Test में नेटवर्क जाँच में मुख्य एंडपॉइंट पर एक बुनियादी GET अनुरोध और प्रतिक्रिया की अपेक्षित संरचना की पुष्टि शामिल है। नेविगेशन — चौथा परिदृश्य। Smoke Test एप्लिकेशन की मुख्य स्क्रीन पर नेविगेट करता है: होम → खोज → प्रोफ़ाइल → सेटिंग्स। टैब बार और साइड मेनू नेविगेशन समस्याओं के विशिष्ट स्रोत हैं जिन्हें Smoke Test शुरुआती चरण में पकड़ लेता है।
Fastlane — मोबाइल CI/CD को ऑटोमेट करने के लिए मानक उपकरण। Fastlane पर Smoke Test `scan` (XCUITest के लिए) या `gradle` (Espresso के लिए) के माध्यम से चलाया जाता है। Fastlane कई उपकरणों पर समानांतर Smoke Test निष्पादन को कॉन्फ़िगर करने की अनुमति देता है, जिससे कुल समय कम होता है। कॉन्फ़िगरेशन Fastfile में Smoke Test सूट को लक्षित करना और पास थ्रेशोल्ड शामिल है: 100% सफल परीक्षण।
GitHub Actions (2024) ने अंतर्निहित Smoke Test के साथ एक मोबाइल CI/CD टेम्पलेट प्रकाशित किया। टेम्पलेट में तीन चरण शामिल हैं: बिल्ड → Smoke Test → रिग्रेशन। यदि Smoke Test विफल होता है, तो टेम्पलेट स्वचालित रूप से पाइपलाइन समाप्त करता है और Slack या Telegram को सूचना भेजता है। मैट्रिक्स रणनीति एक साथ तीन iOS संस्करणों और पाँच Android मॉडलों पर Smoke Test चलाने में सक्षम बनाती है।
CI/CD में जिम्मेदारी विभाजन: Smoke Test त्वरित प्रतिक्रिया प्रदान करता है, जबकि रिग्रेशन पूर्ण कवरेज प्रदान करता है। Smoke Test को रिग्रेशन की नकल नहीं करनी चाहिए, और इसके विपरीत। Smoke Test की ग्रैनुलरिटी — प्रति क्रिटिकल परिदृश्य एक जाँच। यदि Smoke Test 15 मिनट से अधिक लेता है, तो इसे अनुकूलित करने की आवश्यकता है: अनावश्यक जाँचें हटाएँ या निष्पादन को समानांतर करें।
# Smoke Test के लिए Fastfile कॉन्फ़िगरेशन
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 — iOS एप्लिकेशन के UI परीक्षण के लिए Apple का ढाँचा। XCUITest का उपयोग Smoke Tests को ऑटोमेट करने के लिए किया जाता है: एप्लिकेशन लॉन्च करना, UI तत्वों की जाँच करना, उपयोगकर्ता क्रियाओं का अनुकरण करना। Xcode Server या GitHub Actions के साथ संयुक्त, XCUITest हर कमिट पर चलता है। XCTest — यूनिट परीक्षणों के लिए आधार ढाँचा जो तर्क जाँच के लिए XCUITest का पूरक है।
Espresso — Android के UI परीक्षण के लिए Google का ढाँचा। Espresso UI थ्रेड के साथ सिंक्रोनाइज़ होता है और सुनिश्चित करता है कि जाँच शुरू होने से पहले सभी एनिमेशन पूरे हो जाएँ। Espresso `onView(withId(...)).check(matches(...))` के माध्यम से जाँच का समर्थन करता है। Android Test Orchestrator प्रत्येक Smoke Test को एक अलग प्रक्रिया में चलाता है, जो पिछले परीक्षणों को बाद के परीक्षणों को प्रभावित करने से रोकता है।
Detox — React Native के लिए एक ढाँचा जो Smoke Test और ग्रे-बॉक्स परीक्षण का समर्थन करता है। Detox React Native ब्रिज के साथ सिंक्रोनाइज़ होता है और स्वचालित रूप से अतुल्यकालिक संचालन के पूरा होने की प्रतीक्षा करता है। ग्रे-बॉक्स परीक्षण Detox को स्रोत कोड तक सीधी पहुँच के बिना एप्लिकेशन की स्थिति की जाँच करने की अनुमति देता है।
XCUITest iOS के लिए दो जाँचें शामिल करता है: एप्लिकेशन लॉन्च करना और मुख्य स्क्रीन प्रदर्शित करना। परीक्षण `XCUIApplication().launch()` के माध्यम से एप्लिकेशन लॉन्च करता है और जाँचता है कि एक मुख्य तत्व (जैसे `navigationBar`) मौजूद है। यदि एप्लिकेशन लॉन्च पर क्रैश होता है, तो XCTest ढाँचा त्रुटि रिकॉर्ड करता है और परीक्षण FAIL के साथ समाप्त होता है। Smoke Test सामग्री की जाँच नहीं करता — केवल यह कि स्क्रीन खुली।
Espresso Android के लिए Activity लॉन्च करने के लिए `ActivityScenario` और तत्वों की जाँच के लिए `onView` का उपयोग करता है। प्लेटफ़ॉर्म के बीच एक महत्वपूर्ण अंतर: iOS सिम्युलेटर वास्तविक उपकरण से भिन्न व्यवहार दिखा सकता है, इसलिए Android Smoke Tests को Firebase Test Lab या एम्युलेटर पर चलाने की सिफारिश की जाती है। Firebase Test Lab 10 उपकरणों पर Smoke Tests के समानांतर निष्पादन का समर्थन करता है।
import XCTest
class LoginSmokeTest: XCTestCase {
let app = XCUIApplication()
override func setUp() {
continueAfterFailure = false
app.launch()
}
func testLoginButtonExists() {
XCTAssertTrue(app.buttons["लॉग इन"].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))
}
}
उपरोक्त उदाहरण iOS पर लॉगिन स्क्रीन के लिए Smoke Test दिखाता है। पहला परीक्षण जाँचता है कि लॉगिन बटन स्क्रीन पर मौजूद है। दूसरा परीक्षण पूर्ण प्रमाणीकरण पथ से गुजरता है और जाँचता है कि सफल लॉगिन के बाद एक स्वागत संदेश प्रदर्शित होता है। `waitForExistence` के लिए 5 सेकंड का टाइमआउट Smoke Test के लिए मानक मान है: यदि UI तत्व उस समय में प्रकट नहीं होता है, तो एप्लिकेशन सही ढंग से काम नहीं कर रहा है।
अक्सर पूछे जाने वाले प्रश्न
इष्टतम संख्या प्रति मॉड्यूल 5 से 15 परीक्षण है। Smoke Test को उपयोगकर्ता के क्रिटिकल पथ को कवर करना चाहिए लेकिन पूरी कार्यक्षमता को शामिल करने का प्रयास नहीं करना चाहिए। मापदंड — यदि सभी Smoke Test परीक्षण पास होते हैं, तो एप्लिकेशन को आगे के परीक्षण के लिए QA वातावरण में खोला जा सकता है।
Smoke Test बिल्ड स्थिरता की जाँच करता है और हर बिल्ड पर चलता है। Sanity check परीक्षणों का एक संकीर्ण सेट है जो विशिष्ट परिवर्तनों के बाद किया जाता है। Sanity check प्रश्न का उत्तर देता है "क्या इस परिवर्तन ने कार्यक्षमता X को तोड़ा?", जबकि Smoke Test उत्तर देता है "क्या बिल्ड मूल रूप से काम कर रहा है?"।
हाँ, Smoke Test को ऑटोमेट करना बार-बार रिलीज़ वाली परियोजनाओं के लिए अनिवार्य अभ्यास है। ऑटोमेशन जाँचों की स्थिरता और निष्पादन गति सुनिश्चित करता है। मैनुअल Smoke Test केवल प्रोजेक्ट के शुरुआती चरणों में उचित है जब बिल्ड की संख्या प्रति सप्ताह 2–3 से अधिक नहीं होती।
बिल्ड को अस्थिर चिह्नित किया जाता है और आगे के परीक्षण के लिए नहीं भेजा जाता। डेवलपर को Smoke Test विफलता लॉग के साथ एक सूचना प्राप्त होती है। समस्या ठीक करने के बाद, एक नया बिल्ड बनाया जाता है और Smoke Test फिर से चलाया जाता है। अवरुद्ध करने वाला दोष ट्रैकर में दर्ज किया जाता है।
Smoke Test को हर बार अपडेट किया जाता है जब उपयोगकर्ता का क्रिटिकल पथ बदलता है। यदि कोई नई अनिवार्य स्क्रीन जोड़ी जाती है (जैसे ऑनबोर्डिंग), तो इसे Smoke Test में शामिल किया जाना चाहिए। जाँचों की प्रासंगिकता बनाए रखने के लिए हर स्प्रिंट Smoke Test सेट की समीक्षा करने की सिफारिश की जाती है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें