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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন