মোবাইল ডেভেলপমেন্টে টেস্টিং: এটি কী, কী কী প্রকার এবং কীভাবে সংগঠিত করবেন

লেখক: IT Sectr প্রকাশিত: 2026-03-31 পড়ার সময়: 9 মিনিট

মোবাইল অ্যাপ টেস্টিং হল যাচাই করার প্রক্রিয়া যে অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করে, ক্র্যাশ হয় না এবং প্রয়োজনীয়তা পূরণ করে। Software Testing Help (2025)-এর মতে, স্বয়ংক্রিয় টেস্টিং ম্যানুয়াল টেস্টিং-এর তুলনায় রিগ্রেশন চেকের সময় 70–80% কমিয়ে দেয়। এই নিবন্ধে, আমরা টেস্টিং লেভেল, iOS এবং Android-এর টুল, TDD এবং BDD, সেইসাথে টেস্টের জন্য CI/CD নিয়ে আলোচনা করব।

মূল বিষয়

  • Unit টেস্ট পৃথক ফাংশন এবং ক্লাস যাচাই করে; ইন্টিগ্রেশন টেস্ট মডিউল ইন্টারঅ্যাকশন যাচাই করে; E2E সম্পূর্ণ ব্যবহারকারী পরিস্থিতি কভার করে।
  • iOS: XCTest ইউনিট টেস্টের জন্য, XCUITest UI টেস্টের জন্য। Android: JUnit + Mockito + Espresso।
  • ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক: Detox (React Native), Appium (সর্বজনীন), XCUITest (iOS)।
  • TDD (টেস্ট-ড্রিভেন ডেভেলপমেন্ট) — প্রথমে টেস্ট, তারপর কোড; BDD — সরল ভাষায় পরিস্থিতি।
  • CI/CD: প্রতিটি push-এ টেস্ট স্বয়ংক্রিয়ভাবে চলে — এটি বাণিজ্যিক ডেভেলপমেন্টের জন্য বাধ্যতামূলক মান।

টেস্টিং লেভেল: Unit, Integration, E2E

ইউনিট টেস্টিং

ইউনিট টেস্ট মোবাইল অ্যাপ টেস্টিং-এর ভিত্তি। এগুলি কোডের ক্ষুদ্রতম একক — একটি একক ফাংশন, মেথড বা ক্লাস — সিস্টেমের বাকি অংশ থেকে বিচ্ছিন্ন করে যাচাই করে। মোবাইল ডেভেলপমেন্টে, ইউনিট টেস্ট JUnit (Android) এবং XCTest (iOS)-এ লেখা হয়। একটি ভাল ইউনিট টেস্ট দ্রুত, স্বাধীন এবং পুনরাবৃত্তিযোগ্য হতে হবে — এটি নেটওয়ার্ক, ডাটাবেস বা UI কম্পোনেন্টের উপর নির্ভর করবে না। বিচ্ছিন্নতার জন্য টেস্ট ডাবল ব্যবহার করা হয়: মক, স্টাব এবং ফেক।

Mockito (Java/Kotlin) এবং MockK (Kotlin-first) Android-এ মক অবজেক্ট তৈরির জন্য জনপ্রিয় লাইব্রেরি। iOS-এ, OCMock, Cuckoo বা ম্যানুয়াল প্রোটোকল ব্যবহার করা হয়। নিয়ম: ইউনিট টেস্টগুলিকে ব্যবসায়িক যুক্তি এবং ডেটা মডেল কভার করা উচিত। UI টেস্টগুলির ইউনিট টেস্টের নকল করা উচিত নয় — এগুলি ইন্টারফেসের সাথে ব্যবহারকারীর মিথস্ক্রিয়া যাচাই করে।

ইন্টিগ্রেশন টেস্টিং

ইন্টিগ্রেশন টেস্ট কম্পোনেন্টগুলির মধ্যে মিথস্ক্রিয়া যাচাই করে: ডাটাবেসের সাথে রিপোজিটরি, API সার্ভিসের সাথে ViewModel, স্ক্রিনের মধ্যে নেভিগেশন। ইউনিট টেস্টের বিপরীতে, ইন্টিগ্রেশন টেস্ট বাস্তব বা বাস্তবের কাছাকাছি নির্ভরতা ব্যবহার করে (যেমন, ইন-মেমোরি ডাটাবেস বা মক সার্ভার)। Robolectric এমুলেটর ছাড়া JVM-এ Android টেস্ট চালানোর একটি ফ্রেমওয়ার্ক, যা ইন্টিগ্রেশন টেস্ট 10 গুণ দ্রুত করে।

স্ন্যাপশট টেস্ট (গোল্ডেন টেস্ট) এক বিশেষ ধরনের ইন্টিগ্রেশন টেস্ট যা রেন্ডার করা UI কম্পোনেন্টকে একটি রেফারেন্স ইমেজ (স্ন্যাপশট) এর সাথে তুলনা করে। যদি চেহারা পরিবর্তিত হয়, টেস্ট ব্যর্থ হয় — ডেভেলপার দেখে কী পরিবর্তন হয়েছে। Facebook SnapshotTestCase (iOS) এবং Shot (Android) স্ন্যাপশট টেস্টিং-এর জনপ্রিয় টুল।

E2E এবং UI টেস্টিং

E2E টেস্ট (এন্ড-টু-এন্ড) শুরু থেকে শেষ পর্যন্ত সম্পূর্ণ ব্যবহারকারী পরিস্থিতি যাচাই করে: অ্যাপ লঞ্চ, লগইন, একটি কাজ সম্পাদন, ফলাফল যাচাই। UI টেস্ট হল E2E-এর একটি উপসেট যা ইন্টারফেসের উপর ফোকাস করে। টুল: Espresso (Android), XCUITest (iOS), Detox (React Native)। E2E টেস্ট সবচেয়ে ধীর, তাই এগুলি CI-তে আলাদাভাবে চালানো হয় — সাধারণত রাতারাতি বিল্ডে।

iOS টুল: XCTest এবং XCUITest

XCTest

XCTest মোবাইল অ্যাপের ইউনিট টেস্টিং-এর জন্য Apple-এর বিল্ট-ইন ফ্রেমওয়ার্ক। XCTestRunner সিমুলেটর বা বাস্তব ডিভাইসে টেস্ট চালায়। টেস্টগুলি XCTestCase থেকে ইনহেরিট করে, প্রস্তুতি এবং পরিষ্কারের জন্য setUp এবং tearDown অন্তর্ভুক্ত করে। XCTest-এ অ্যাসারশনের জন্য XCTAssert (XCTAssertEqual, XCTAssertNil, XCTAssertTrue) এবং অ্যাসিনক্রোনাস অপারেশনের জন্য XCTWaiter অন্তর্ভুক্ত রয়েছে।

একটি সহজ XCTest টেস্টের উদাহরণ: User মডেল তৈরি করা, ইনিশিয়ালাইজেশনের সঠিকতা, নাম ফরম্যাটিং এবং বয়স গণনা যাচাই করা। কোড কভারেজ Xcode-এ দেখায় কোডের কোন লাইন টেস্ট দ্বারা কভার হয়েছে — বাণিজ্যিক প্রকল্পের লক্ষ্য: ব্যবসায়িক যুক্তির কমপক্ষে 70–80% কভারেজ। XCTest xcodebuild test-এর মাধ্যমে Xcode Server এবং CI সিস্টেমের সাথে সংহত।

XCUITest

XCUITest UI টেস্টিং-এর জন্য Apple-এর ফ্রেমওয়ার্ক। এটি অ্যাক্সেসিবিলিটি আইডেন্টিফায়ারের মাধ্যমে কাজ করে: XCUIElementQuery বাটন, ইনপুট ফিল্ড, টেবিল label, identifier বা টাইপ অনুসারে খুঁজে পায়। XCUITest ক্রিয়ার ক্রম রেকর্ড করে (রেকর্ড/প্লেব্যাক) এবং টেস্ট কোড জেনারেট করে। গুরুত্বপূর্ণ: স্থিতিশীল টেস্ট অপারেশনের জন্য সমস্ত UI উপাদানের accessibilityIdentifier থাকা আবশ্যক।

Android টুল: JUnit, Espresso, Robolectric

JUnit এবং Mockito

JUnit Java/Kotlin-এ মোবাইল অ্যাপের মডিউলার টেস্টিং-এর মৌলিক ফ্রেমওয়ার্ক। Android-এ, JUnit 4 (সর্বশেষ স্থিতিশীল সংস্করণ 4.13.2) এবং নতুন প্রকল্পের জন্য JUnit 5 ব্যবহার করা হয়। Mockito মক অবজেক্ট তৈরির লাইব্রেরি: when(mock.method()).thenReturn(value) — টেস্ট করা ক্লাসকে নির্ভরতা থেকে বিচ্ছিন্ন করার মানক প্যাটার্ন।

Android-এর জন্য JUnit টেস্টের উদাহরণ:

java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

@RunWith(MockitoJUnitRunner.class)
public class LoginViewModelTest {

    @Mock
    AuthRepository authRepository;

    @Test
    public void login_emptyEmail_returnsError() {
        LoginViewModel vm = new LoginViewModel(authRepository);
        String result = vm.login("", "password123");
        assertEquals("Email cannot be empty", result);
        verify(authRepository, never()).authenticate(any());
    }
}

Espresso এবং UI Automator

Espresso Android UI টেস্টের জন্য Google-এর ফ্রেমওয়ার্ক। Espresso স্বয়ংক্রিয়ভাবে UI থ্রেডের সাথে সিঙ্ক্রোনাইজ হয়: onView(withId(R.id.button)).perform(click()).check(matches(isDisplayed())). Espresso লেখা সহজ এবং বিল্ট-ইন আইডল স্টেট ওয়েটিং-এর কারণে স্থিতিশীল। UI Automator ক্রস-অ্যাপ্লিকেশন টেস্টের জন্য ফ্রেমওয়ার্ক যা সিস্টেম এলিমেন্টের (অনুমতি ডায়ালগ, নোটিফিকেশন শেড) সাথে ইন্টারঅ্যাক্ট করতে পারে।

ক্রস-প্ল্যাটফর্ম টুল: Detox, Appium

React Native-এর জন্য Detox

Detox Wix-এর তৈরি React Native মোবাইল অ্যাপ টেস্টিং-এর জন্য গ্রে-বক্স E2E ফ্রেমওয়ার্ক। Detox একটি একক টেস্ট কোডবেস থেকে উভয় প্ল্যাটফর্মে কাজ করে, ভিতরে Espresso (Android) এবং XCUITest (iOS) ব্যবহার করে। Detox স্বয়ংক্রিয়ভাবে অ্যাপ আইডল হওয়া পর্যন্ত অপেক্ষা করে (কোন অ্যানিমেশন, নেটওয়ার্ক রিকোয়েস্ট, টাইমার নেই) এবং তবেই পরবর্তী কাজ করে।

Appium

Appium একটি সর্বজনীন ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক যা Android, iOS, ওয়েব এবং হাইব্রিড অ্যাপ সমর্থন করে। Appium WebDriver প্রোটোকল ব্যবহার করে এবং যেকোনো প্রোগ্রামিং ভাষা (Java, Python, JS, Ruby) সমর্থন করে। Appium Server একটি HTTP সার্ভার হিসেবে কাজ করে যা কমান্ডকে নেটিভ UI Automator / XCUITest কমান্ডে অনুবাদ করে। Appium-এর প্রধান ত্রুটি হল গতি: টেস্টগুলি নেটিভ Espresso বা XCUITest-এর তুলনায় ধীর গতিতে চলে।

iOS এবং Android টেস্টিং টুলের তুলনা
নির্ণায়ক iOS Android
ইউনিট টেস্ট XCTest JUnit 4/5 + Mockito
UI টেস্ট XCUITest Espresso, UI Automator
স্ন্যাপশট টেস্ট FBSnapshotTestCase Shot, Roborazzi
জেসচার অটোমেশন XCUIGesture UiAutomator touch
কোড কভারেজ Xcode Code Coverage Jacoco
CI ইন্টিগ্রেশন xcodebuild test Gradle connectedCheck

TDD এবং BDD: টেস্টিং পদ্ধতি

TDD: টেস্ট-ড্রিভেন ডেভেলপমেন্ট

TDD একটি মোবাইল অ্যাপ টেস্টিং পদ্ধতি যেখানে ইমপ্লিমেন্টেশন কোডের আগে টেস্ট লেখা হয়। Red-Green-Refactor চক্র: (1) একটি টেস্ট লিখুন যা ব্যর্থ হয় (Red), (2) টেস্ট পাস করার জন্য ন্যূনতম কোড লিখুন (Green), (3) টেস্ট পাস রেখে কোড রিফ্যাক্টর করুন। TDD নতুন কার্যকারিতার জন্য 100% টেস্ট কভারেজ এবং পরিষ্কার আর্কিটেকচার দেয়, কারণ টেস্ট হল প্রয়োজনীয়তার প্রথম স্পেসিফিকেশন।

BDD: বিহেভিয়ার-ড্রিভেন ডেভেলপমেন্ট

BDD TDD-এর একটি সম্প্রসারণ যেখানে টেস্ট প্রাকৃতিক ভাষায় Given-When-Then ফরম্যাটে লেখা হয়। Given (প্রসঙ্গ) — When (কাজ) — Then (প্রত্যাশিত ফলাফল)। BDD টেস্ট দলের সকল সদস্যের জন্য বোধগম্য: ডেভেলপার, টেস্টার, বিশ্লেষক এবং ক্লায়েন্ট। Mock vs Stub vs Fake: Mock মিথস্ক্রিয়া যাচাই করে (মেথড কল করা হয়েছিল কিনা), Stub নির্দিষ্ট ডেটা ফেরত দেয়, Fake একটি সরলীকৃত কার্যকরী ইমপ্লিমেন্টেশন (যেমন, ইন-মেমোরি DB)। IT Sectr-এ, আমরা গুরুত্বপূর্ণ ব্যবসায়িক যুক্তির জন্য TDD এবং গ্রহণযোগ্যতা পরিস্থিতির জন্য BDD ব্যবহার করি।

টেস্ট ডাবল হল বস্তুর সাধারণ নাম যা টেস্টে বাস্তব নির্ভরতা প্রতিস্থাপন করে। চার প্রকার: Dummy (প্যারামিটার পূরণের বস্তু, ব্যবহৃত হয় না), Stub (নির্দিষ্ট মান ফেরত দেয়), Spy (যাচাইয়ের জন্য কল রেকর্ড করে), Mock (প্রত্যাশিত কল পূর্বনির্ধারণ করে)। পার্থক্য বোঝা সঠিক টেস্ট ডিজাইনের জন্য গুরুত্বপূর্ণ।

CI/CD এবং Device Farm

CI/CD-তে টেস্ট অটোমেশন

CI/CD — ক্রমাগত ইন্টিগ্রেশন এবং ক্রমাগত ডেলিভারি: প্রতিটি কোড পরিবর্তনে স্বয়ংক্রিয়ভাবে মোবাইল অ্যাপ বিল্ড এবং টেস্ট করার অনুশীলন। মোবাইল ডেভেলপমেন্টে, CI/CD পাইপলাইনে অন্তর্ভুক্ত: লিন্টিং, ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট, APK/IPA বিল্ড এবং UI টেস্ট। GitHub Actions এবং Bitrise মোবাইল CI/CD-র জনপ্রিয় প্ল্যাটফর্ম। টেস্টগুলি দ্রুত চালানো উচিত: ইউনিট টেস্ট 1–2 মিনিটে, ইন্টিগ্রেশন 5–10-এ, UI টেস্ট 15–30 মিনিটে।

Device Farm

Device Farm টেস্টিং-এর জন্য বাস্তব ডিভাইসের একটি ফার্ম। Firebase Test Lab (Android) এবং Xcode Cloud (iOS) শত শত ডিভাইস মডেলে ক্লাউড অ্যাক্সেস প্রদান করে। Device Farm এমুলেটরে দৃশ্যমান না হওয়া সমস্যাগুলি প্রকাশ করে: বিভিন্ন স্ক্রিন সাইজ, পুরানো ডিভাইসে পারফরম্যান্স, সামঞ্জস্য সমস্যা। IT Sectr-এ, আমরা নিয়মিতভাবে Android-এর জন্য Firebase Test Lab এবং iOS-এর জন্য Xcode Cloud ব্যবহার করি।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

টেস্ট কভারেজের কত শতাংশ স্বাভাবিক বলে মনে করা হয়?

বাণিজ্যিক প্রকল্পের জন্য, ব্যবসায়িক যুক্তির কমপক্ষে 70–80% কভারেজ। UI কোড কভার করা কঠিন — এর জন্য 50% যথেষ্ট। মূল বিষয় শতাংশ নয় বরং টেস্টের গুণমান: গুরুত্বপূর্ণ পরিস্থিতি, সীমান্ত ক্ষেত্র এবং ত্রুটি ব্যবস্থাপনা পরীক্ষা করুন।

Mock এবং Stub-এর মধ্যে পার্থক্য কী?

Mock মিথস্ক্রিয়া যাচাই করে — নির্দিষ্ট প্যারামিটার সহ একটি নির্দিষ্ট মেথড কল করা হয়েছিল কিনা। Stub পূর্বনির্ধারিত ডেটা ফেরত দেয়। Mock আচরণ যাচাই করে, Stub অবস্থা যাচাই করে।

UI-র জন্য টেস্ট লেখা উচিত?

হ্যাঁ, তবে শুধুমাত্র গুরুত্বপূর্ণ পরিস্থিতির জন্য: লগইন, নিবন্ধন, অর্ডার সম্পূর্ণকরণ, পেমেন্ট। UI টেস্ট ধীর এবং ভঙ্গুর — প্রতিটি স্ক্রিনের জন্য টেস্ট লিখবেন না। ব্যবহারকারীর E2E পরিস্থিতিতে ফোকাস করুন।

স্ন্যাপশট টেস্ট কী?

স্ন্যাপশট টেস্ট (গোল্ডেন টেস্ট) একটি রেন্ডার করা UI কম্পোনেন্টকে রেফারেন্স ইমেজের সাথে তুলনা করে। যদি চেহারা পরিবর্তিত হয় (ফন্ট, প্যাডিং, রং), টেস্ট ব্যর্থ হয় — ডেভেলপার পরীক্ষা করে পরিবর্তনটি ইচ্ছাকৃত কিনা। কম্পোনেন্ট লাইব্রেরির জন্য আদর্শ।

E2E টেস্ট কীভাবে দ্রুত করবেন?

একাধিক ডিভাইসে E2E টেস্ট সমান্তরালভাবে চালান, Cloud Device Farm ব্যবহার করুন এবং টেস্টগুলিকে স্বাধীন গ্রুপে বিভক্ত করুন। টেস্ট অপ্টিমাইজ করুন: অপেক্ষা কমিয়ে দিন, নেটওয়ার্ক অনুরোধের জন্য মক ব্যবহার করুন।

সারাংশ

  • ইউনিট টেস্ট — টেস্টিং পিরামিডের ভিত্তি: দ্রুত, বিচ্ছিন্ন, ব্যবসায়িক যুক্তি কভার করে।
  • iOS: ইউনিটের জন্য XCTest, UI-র জন্য XCUITest। Android: JUnit + Mockito, UI-র জন্য Espresso, দ্রুত ইন্টিগ্রেশন টেস্টের জন্য Robolectric।
  • ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক: Detox (React Native), Appium (সর্বজনীন), XCUITest (iOS-নেটিভ)।
  • TDD — কোডের আগে টেস্ট, BDD — ব্যবসায়িক ভাষায় পরিস্থিতি (Given-When-Then)।
  • CI/CD — প্রতিটি push-এ স্বয়ংক্রিয় টেস্ট নির্বাহ আধুনিক ডেভেলপমেন্টের জন্য বাধ্যতামূলক।
  • Device Farm — হার্ডওয়্যার সমস্যা সনাক্ত করতে ক্লাউডে বাস্তব ডিভাইসে টেস্টিং।
  • টেস্টিং পিরামিড: বেশি ইউনিট, কম ইন্টিগ্রেশন, আরও কম E2E — গতি এবং কভারেজের সর্বোত্তম ভারসাম্য।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন