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 Server ٹیسٹ اور پلیٹ فارم کے مقامی ڈرائیور کے درمیان پراکسی کا کام کرتا ہے

Appium کیا ہے

Appium ایک اوپن سورس فریم ورک ہے جو موبائل ایپلیکیشن ٹیسٹنگ کو خودکار بنانے کے لیے کلائنٹ-سرور فن تعمیر پر بنایا گیا ہے۔ Appium سرور کلائنٹ سے WebDriver پروٹوکول کے ذریعے کمانڈ وصول کرتا ہے اور انہیں مقامی ڈرائیوروں کو سونپتا ہے: iOS کے لیے XCUITest، Android کے لیے UiAutomator2 اور Windows کے لیے WinAppDriver۔

تاریخ اور کمیونٹی

Appium 2013 میں بنایا گیا تھا اور تب سے یہ کراس پلیٹ فارم ٹیسٹنگ کے لیے صنعتی معیار بن گیا ہے۔ پروجیکٹ کا انتظام Appium Foundation کرتا ہے اور بڑی کمپنیاں اس کی حمایت کرتی ہیں: 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 یوزر انٹرفیس عناصر کے معائنہ کے لیے ایک گرافیکل ٹول ہے۔ یہ چلنے والے 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں