Appium — এটি কী, পরিচালনার নীতি এবং ক্রস-প্ল্যাটফর্ম টেস্টিং

লেখক: IT Sectr প্রকাশিত: 2026-04-09 পড়ার সময়: 8 মিনিট

Appium হল একটি ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক যা মোবাইল, ওয়েব এবং ডেস্কটপ অ্যাপ্লিকেশনের টেস্টিং অটোমেশনের জন্য WebDriver প্রোটোকলের উপর ভিত্তি করে তৈরি। এটি আপনাকে যেকোনো প্রোগ্রামিং ভাষায় টেস্ট লিখতে এবং কোড পরিবর্তন না করেই Android, iOS এবং Windows-এ চালানোর অনুমতি দেয়। Appium Foundation, 2025-এর মতে, WebDriver প্রোটোকল বিভিন্ন প্ল্যাটফর্মের অ্যাপ্লিকেশনের সাথে যোগাযোগের জন্য একটি ইউনিফাইড ইন্টারফেস প্রদান করে।

মূল বিষয়

  • Appium — WebDriver-এর উপর ভিত্তি করে একটি ক্রস-প্ল্যাটফর্ম টেস্ট অটোমেশন ফ্রেমওয়ার্ক
  • ইউনিফাইড API Java, Python, JavaScript, Ruby, C# এবং অন্যান্য ভাষায় টেস্ট লেখার অনুমতি দেয়
  • প্ল্যাটফর্ম সাপোর্ট iOS, Android, Windows এবং ওয়েব অ্যাপ্লিকেশন অন্তর্ভুক্ত করে
  • ব্ল্যাক-বক্স পদ্ধতি অ্যাপ্লিকেশনের সোর্স কোডে অ্যাক্সেসের প্রয়োজন হয় না
  • Appium সার্ভার টেস্ট এবং প্ল্যাটফর্মের নেটিভ ড্রাইভারের মধ্যে প্রক্সি হিসাবে কাজ করে

Appium কী

Appium হল একটি ওপেন-সোর্স ফ্রেমওয়ার্ক যা মোবাইল অ্যাপ্লিকেশন টেস্টিং অটোমেশনের জন্য ক্লায়েন্ট-সার্ভার আর্কিটেকচারে নির্মিত। Appium সার্ভার ক্লায়েন্টের কাছ থেকে WebDriver প্রোটোকলের মাধ্যমে কমান্ড গ্রহণ করে এবং সেগুলি নেটিভ ড্রাইভারদের কাছে অর্পণ করে: iOS-এর জন্য XCUITest, Android-এর জন্য UiAutomator2 এবং Windows-এর জন্য WinAppDriver।

ইতিহাস এবং সম্প্রদায়

Appium 2013 সালে তৈরি করা হয়েছিল এবং তারপর থেকে এটি ক্রস-প্ল্যাটফর্ম টেস্টিংয়ের জন্য শিল্প মান হয়ে উঠেছে। প্রকল্পটি Appium ফাউন্ডেশন দ্বারা পরিচালিত হয় এবং বড় কোম্পানিগুলি দ্বারা সমর্থিত: Sauce Labs, HeadSpin, Microsoft। সারা বিশ্বে প্রতি মাসে 500 হাজারেরও বেশি টেস্টার Appium ব্যবহার করে।

সমর্থিত অ্যাপ্লিকেশন প্রকার

Appium তিন ধরণের অ্যাপ্লিকেশন সমর্থন করে: নেটিভ (iOS, Android, Windows), মোবাইল ওয়েব ব্রাউজার (Safari, Chrome) এবং হাইব্রিড অ্যাপ্লিকেশন (নেটিভ শেলের ভিতরে WebView)। প্রতিটি প্রকার তার নিজস্ব কনটেক্সট ব্যবহার করে: NATIVE_APP, WEBVIEW বা CHROMIUM।

Appium এবং WebDriver-এর আর্কিটেকচার

Appium আর্কিটেকচার চারটি স্তর নিয়ে গঠিত: ক্লায়েন্ট কোড → Appium ক্লায়েন্ট লাইব্রেরি → Appium সার্ভার → নেটিভ ড্রাইভার। ক্লায়েন্ট লাইব্রেরি WebDriver প্রোটোকল বাস্তবায়ন করে এবং সার্ভারে HTTP অনুরোধ পাঠায়। সার্ভার সেগুলিকে প্ল্যাটফর্মের নেটিভ ড্রাইভার কমান্ডে রূপান্তর করে।

WebDriver প্রোটোকল

WebDriver হল ব্রাউজার অটোমেশনের জন্য W3C মান, যা Appium দ্বারা মোবাইল ডিভাইসের জন্য অভিযোজিত। প্রতিটি ক্রিয়া — এলিমেন্ট অনুসন্ধান, ট্যাপ, টেক্সট ইনপুট — সার্ভারে একটি HTTP অনুরোধ হিসাবে পাঠানো হয়। উদাহরণস্বরূপ, POST /session/{id}/element একটি নতুন টেস্টিং সেশন তৈরি করে।

সেশন এবং Desired Capabilities

প্রতিটি টেস্ট Desired Capabilities অবজেক্টের মাধ্যমে একটি সেশন তৈরি করে শুরু হয়। এটি নির্দিষ্ট করে: platformName, deviceName, appPath, automationName এবং অতিরিক্ত প্যারামিটার। Appium উপযুক্ত নেটিভ ড্রাইভার এবং ডিভাইস কনফিগারেশন নির্বাচন করতে এই ডেটা ব্যবহার করে।

python
# Android-এর জন্য Desired Capabilities উদাহরণ
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Pixel_4',
    'app': '/path/to/app.apk',
    'automationName': 'UiAutomator2',
    'appPackage': 'com.example.app',
    'appActivity': '.MainActivity'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

Appium ইনস্টলেশন এবং কনফিগারেশন

Appium npm-এর মাধ্যমে ইনস্টল করা হয়: npm install -g appium। ইনস্টলেশনের পরে, আপনাকে প্রতিটি প্ল্যাটফর্মের জন্য নেটিভ ড্রাইভার কনফিগার করতে হবে: appium driver install xcuitest এবং appium driver install uiautomator2। iOS-এর জন্য Xcode এবং Android-এর জন্য Android SDK প্রয়োজন।

Appium Inspector

Appium Inspector হল UI এলিমেন্ট পরিদর্শনের জন্য একটি গ্রাফিকাল টুল। এটি একটি চলমান Appium সার্ভারের সাথে সংযোগ করে এবং UI উপাদানগুলির শ্রেণিবিন্যাস, তাদের বৈশিষ্ট্য এবং লোকেটার দেখায়। Inspector একটি টেস্ট লেখার আগে সিলেক্টর যাচাই করার অনুমতি দেয়।

সার্ভার শুরু করা

Appium সার্ভার ঐচ্ছিক প্যারামিটার সহ appium কমান্ড দ্বারা শুরু করা হয়: পোর্ট, ঠিকানা, লগিং। ডিফল্টরূপে, সার্ভার পোর্ট 4723-এ শোনে। একাধিক ডিভাইসে সমান্তরাল নির্বাহের জন্য বিভিন্ন পোর্ট বা Appium ক্লাস্টার ব্যবহার করা হয়।

bash
# লগিং সহ Appium সার্ভার শুরু করা
appium \
  --port 4723 \
  --log-level debug \
  --use-plugins images \
  --base-path /wd/hub

Appium টেস্ট লেখা

Appium টেস্ট কোড সংগঠনের জন্য Page Object প্যাটার্ন ব্যবহার করে। প্রতিটি অ্যাপ স্ক্রিন এলিমেন্ট লোকেটার এবং ইন্টারঅ্যাকশন পদ্ধতি সহ একটি পৃথক ক্লাস দ্বারা বর্ণিত হয়। Page Object Model ইন্টারফেস পরিবর্তন হলে টেস্ট রক্ষণাবেক্ষণ সহজ করে এবং টেস্ট দৃশ্যপটের মধ্যে সিলেক্টর পুনরায় ব্যবহার করে।

এলিমেন্ট লোকেটার

Appium অনেক এলিমেন্ট অনুসন্ধান কৌশল সমর্থন করে: id, xpath, accessibilityId, className, androidUIAutomator এবং iOSClassChain। সবচেয়ে পছন্দের হল accessibilityId এবং id — এগুলি লেআউট পরিবর্তন সত্ত্বেও স্থিতিশীল। XPath শুধুমাত্র তখনই ব্যবহার করা উচিত যখন অন্য লোকেটার উপলব্ধ না থাকে।

java
// লগইন স্ক্রিনের জন্য Page Object
public class LoginPage {
    private AppiumDriver driver;

    private MobileElement emailField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("emailInput"));
    private MobileElement passwordField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("passwordInput"));
    private MobileElement loginButton =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("loginButton"));

    public void login(String email, String password) {
        emailField.sendKeys(email);
        passwordField.sendKeys(password);
        loginButton.click();
    }
}

জেসচার এবং অ্যাকশনের সাথে কাজ করা

Appium TouchAction ক্লাস বা W3C Actions API-এর মাধ্যমে জটিল জেসচার সমর্থন করে: সোয়াইপ, মাল্টি-টাচ, লং প্রেস, এলিমেন্টে স্ক্রোল। নতুন W3C Actions API নতুন প্রকল্পের জন্য সুপারিশ করা হয় কারণ এটি প্রমিত এবং বিভিন্ন প্ল্যাটফর্ম সংস্করণ জুড়ে আরও স্থিতিশীলভাবে কাজ করে।

Appium বনাম বিকল্প

Appium-এর তুলনা প্রায়শই Detox, XCUITest এবং Espresso-এর সাথে করা হয়। Appium-এর প্রধান সুবিধা হল ক্রস-প্ল্যাটফর্ম ক্ষমতা: একটি টেস্ট পরিবর্তন ছাড়াই iOS এবং Android-এ চালানো যেতে পারে। তবে, Detox React Native-এর জন্য আরও ভাল সিঙ্ক্রোনাইজেশন প্রদান করে, এবং XCUITest/Espresso নেটিভ টেস্টের জন্য দ্রুত নির্বাহ প্রদান করে।

কখন Appium বেছে নেবেন

Appium এমন প্রকল্পের জন্য উপযুক্ত যেগুলির iOS, Android এবং ওয়েবের জন্য একক ফ্রেমওয়ার্ক প্রয়োজন। এটি এমন টিমে অপরিহার্য যেখানে টেস্টাররা Java বা Python-এ লেখে। অনেক E2E টেস্ট সহ React Native প্রকল্পের জন্য, স্বয়ংক্রিয় সিঙ্ক্রোনাইজেশনের কারণে Detox বিবেচনা করুন।

ফ্রেমওয়ার্কপদ্ধতিগতিক্রস-প্ল্যাটফর্ম
Appiumব্ল্যাক-বক্সমাঝারিiOS, Android, Windows
Detoxগ্রে-বক্সউচ্চiOS + Android (React Native)
XCUITestহোয়াইট-বক্সউচ্চশুধুমাত্র iOS

Appium Grid এবং ক্লাউড টেস্টিং

Appium Grid হল একাধিক ডিভাইসে একসাথে সমান্তরালভাবে টেস্ট চালানোর জন্য একটি এক্সটেনশন। Appium Grid Selenium Grid-এর উপর নির্মিত এবং একাধিক Appium সার্ভার জুড়ে টেস্ট বিতরণের অনুমতি দেয়, প্রতিটি তার নিজস্ব ডিভাইস বা এমুলেটর সেট পরিচালনা করে। এটি বড় প্রকল্পের জন্য গুরুত্বপূর্ণ যেখানে একটি একক ডিভাইসে রিগ্রেশন টেস্টিং ঘন্টা সময় নেয় — Grid নোডের সংখ্যার অনুপাতে সময় মিনিটে হ্রাস করে।

Grid কনফিগারেশন

Grid কনফিগারেশন ডিভাইস সহ নোড বর্ণনা করে একটি JSON কনফিগারেশন ফাইল ব্যবহার করে। প্রতিটি নোড নির্দিষ্ট করে: সার্ভার পোর্ট, প্ল্যাটফর্ম সহ ডিভাইসের তালিকা, OS সংস্করণ এবং সর্বাধিক সেশন সংখ্যা। Hub মুক্ত নোডগুলিতে টেস্ট বিতরণ করে, সর্বাধিক অবকাঠামো ব্যবহার নিশ্চিত করে।

json
{
  "capabilities": [
    {
      "browserName": "android",
      "platformName": "Android",
      "deviceName": "Pixel_4",
      "platformVersion": "14.0",
      "maxInstances": 2
    }
  ],
  "configuration": {
    "port": 4724,
    "registerCycle": 5000
  }
}

ক্লাউড পরিষেবা

যদি আপনার নিজস্ব ডিভাইস অবকাঠামো উপলব্ধ না হয়, তাহলে ক্লাউড পরিষেবা রয়েছে: Sauce Labs, BrowserStack, LambdaTest। তারা ক্লাউডে শত শত বাস্তব ডিভাইস এবং এমুলেটর সরবরাহ করে। Appium-এর সাথে একীকরণ ন্যূনতম: localhost-এর পরিবর্তে Desired Capabilities-এ ক্লাউড হাব URL এবং ক্রেডেনশিয়াল নির্দিষ্ট করুন।

সমান্তরাল নির্বাহ

Appium TestNG (Java) বা pytest-xdist (Python) ব্যবহার করে সমান্তরাল টেস্ট নির্বাহ সমর্থন করে। সমান্তরালকরণ প্রতিটি সেশনের জন্য অনন্য পোর্ট এবং বিচ্ছিন্ন টেস্ট ডেটা প্রয়োজন। প্রতিটি থ্রেড একটি পৃথক ডিভাইস বা এমুলেটরে তার নিজস্ব Appium সেশন শুরু করে। ক্লাউড পরিষেবা ব্যবহার করার সময়, সমান্তরালকরণ স্বয়ংক্রিয় — প্ল্যাটফর্ম উপলব্ধ ডিভাইসগুলিতে টেস্ট বিতরণ করে এবং সমাপ্তির পরে সেগুলি মুক্ত করে।

Appium ডায়াগনস্টিক এবং ডিবাগিং

Appium-এর সাথে সমস্যার সম্মুখীন হলে, প্রথম পদক্ষেপ হল সার্ভার লগ (appium --log-level debug) পরীক্ষা করা। সাধারণ ত্রুটিগুলি: পোর্ট ব্যস্ত (অন্য --port নির্দিষ্ট করুন), অসামঞ্জস্যপূর্ণ ড্রাইভার সংস্করণ, অনুপস্থিত Android SDK বা Xcode। iOS-এর জন্য, নিশ্চিত করুন যে WebKitAgent চলছে এবং সিমুলেটরে অ্যাক্সেস রয়েছে।

এলিমেন্ট অনুসন্ধান সমস্যা

যদি Appium একটি এলিমেন্ট খুঁজে না পায়, তাহলে পরীক্ষা করুন: কনটেক্সট কি সঠিক (NATIVE_APP বনাম WEBVIEW), এলিমেন্ট কি স্ক্রিনে দৃশ্যমান, এটির কি স্ক্রোল প্রয়োজন, এবং লোকেটার কি সঠিক। টেস্টে ঢোকানোর আগে ইন্টারেক্টিভ অনুসন্ধান এবং XPath এক্সপ্রেশন পরীক্ষার জন্য Appium Inspector ব্যবহার করুন। WebDriverWait-এর মাধ্যমে এলিমেন্ট দৃশ্যমানতার জন্য অপেক্ষা সক্ষম করাও সহায়ক — এটি ধীর UI লোডিংয়ের সাথে সিঙ্ক্রোনাইজেশন সমস্যার সমাধান করে।

সেশন ব্যবস্থাপনা

অনুচিত সেশন সমাপ্তি Appium টেস্ট অস্থিরতার একটি সাধারণ কারণ। finally ব্লকে বা AutoCloseable-এর মাধ্যমে সর্বদা ড্রাইভার বন্ধ করুন। ব্যর্থতার ক্ষেত্রে, জোর করে driver.quit() ব্যবহার করুন। iOS-এর জন্য, নিশ্চিত করুন যে WebKitAgent (WDA) সেশনগুলির মধ্যে পুনরায় শুরু হয়, অন্যথায় সেশন তৈরি হয়নি ত্রুটি ঘটতে পারে। CI-তে সেশন অবস্থা পর্যবেক্ষণের জন্য, Appium Dashboard প্লাগইন সংযোগ করা সুবিধাজনক, যা রিয়েল টাইমে সমস্ত চলমান টেস্টের অবস্থা দেখায়।

স্থিতিশীলতা ফ্ল্যাগ

টেস্ট স্থিতিশীলতা উন্নত করতে, ব্যবহার করুন: shouldTerminateApp (পরীক্ষার মধ্যে অ্যাপ শেষ করুন), noReset (সেশনের মধ্যে ডেটা সংরক্ষণ করুন), autoGrantPermissions (স্বয়ংক্রিয়ভাবে সিস্টেম ডায়ালগ অনুমতি দিন)। ডেভেলপার অপশনের মাধ্যমে ডিভাইসে অ্যানিমেশন বন্ধ করারও সুপারিশ করা হয়।

সচরাচর জিজ্ঞাসিত প্রশ্ন

Appium কোন প্রোগ্রামিং ভাষা সমর্থন করে?

Appium ক্লায়েন্ট লাইব্রেরির মাধ্যমে সমস্ত জনপ্রিয় ভাষা সমর্থন করে: Java, Python, JavaScript, Ruby, C#, PHP এবং Kotlin। প্রতিটি লাইব্রেরি একই WebDriver প্রোটোকল বাস্তবায়ন করে, যা আপনাকে যেকোনো ভাষায় ক্রস-প্ল্যাটফর্ম টেস্ট লিখতে দেয়।

Appium-এর জন্য কি আসল ফোন প্রয়োজন?

না, Appium আসল ডিভাইস এবং এমুলেটর ও সিমুলেটর উভয়ের সাথেই কাজ করে। Android-এর জন্য Android Studio এমুলেটর ব্যবহার করা হয়, iOS-এর জন্য Xcode সিমুলেটর। আসল ডিভাইস শুধুমাত্র হার্ডওয়্যার ফাংশন পরীক্ষার জন্য প্রয়োজনীয়: সেন্সর, NFC, ক্যামেরা।

Appium 1 এবং Appium 2-এর মধ্যে পার্থক্য কী?

Appium 2 প্লাগইন এবং পৃথক ড্রাইভার সহ মডুলার আর্কিটেকচার দিয়ে সম্পূর্ণরূপে পুনর্লিখিত হয়েছে। Appium 1-এ, সমস্ত ড্রাইভার সার্ভারে তৈরি ছিল। Appium 2 ড্রাইভার ইনস্টল করতে appium driver install এবং প্লাগইনের জন্য appium plugin install কমান্ড ব্যবহার করে।

Appium কীভাবে স্ক্রিনে এলিমেন্ট খুঁজে পায়?

Appium অনুসন্ধান কৌশল ব্যবহার করে: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator এবং By.iOSClassChain। গতির জন্য, accessibilityId ব্যবহার করার সুপারিশ করা হয় — এটি স্থিতিশীল এবং লেআউট পরিবর্তনের উপর নির্ভর করে না।

Appium-এ ওয়েব অ্যাপ্লিকেশন পরীক্ষা করা যায়?

হ্যাঁ, Appium মোবাইল ব্রাউজার পরীক্ষা সমর্থন করে — iOS-এ Safari এবং Android-এ Chrome। এর জন্য WEBVIEW বা CHROMIUM কনটেক্সট ব্যবহার করা হয়। টেস্টগুলি Selenium-এর মতো স্ট্যান্ডার্ড WebDriver-এর মাধ্যমে ব্রাউজারে চলে।

সারসংক্ষেপ

  • Appium — iOS, Android এবং Windows সমর্থন সহ WebDriver-এর উপর ভিত্তি করে একটি ক্রস-প্ল্যাটফর্ম E2E ফ্রেমওয়ার্ক
  • ক্লায়েন্ট-সার্ভার আর্কিটেকচার Java, Python, JavaScript, Ruby এবং C#-এ টেস্ট লেখার অনুমতি দেয়
  • Desired Capabilities একটি নির্দিষ্ট প্ল্যাটফর্ম এবং ডিভাইসের জন্য টেস্টিং সেশন কনফিগার করে
  • Page Object Model টেস্ট কোড সংগঠিত করতে এবং সিলেক্টর পুনরায় ব্যবহারের জন্য সুপারিশ করা হয়
  • Appium Inspector UI এলিমেন্ট পরিদর্শন এবং লোকেটার নির্বাচনে সাহায্য করে
  • ব্ল্যাক-বক্স পদ্ধতি অ্যাপ্লিকেশনের সোর্স কোডে অ্যাক্সেসের প্রয়োজন হয় না
  • Appium 2 প্লাগযোগ্য ড্রাইভার এবং প্লাগইন সহ একটি মডুলার আর্কিটেকচার ব্যবহার করে

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

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

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

আরও পড়ুন