Appium — bu nima, ishlash tamoyillari va kross-platforma testlash

Muallif: IT Sectr Nashr etilgan: 2026-04-09 O'qish vaqti: 8 daq

Appium — WebDriver protokoliga asoslangan mobil, veb va desktop ilovalarini testlashni avtomatlashtirish uchun kross-platforma freymvorkidir. U istalgan dasturlash tilida testlar yozish va ularni Android, iOS va Windows da kodni o'zgartirmasdan ishga tushirish imkonini beradi. Appium Foundation, 2025 ma'lumotlariga ko'ra, WebDriver protokoli turli platformalarda ilovalar bilan o'zaro aloqa qilish uchun yagona interfeysni ta'minlaydi.

Asosiy ma'lumotlar

  • Appium — WebDriver asosida testlashni avtomatlashtirish uchun kross-platforma freymvorki
  • Yagona API Java, Python, JavaScript, Ruby, C# va boshqa tillarda testlar yozish imkonini beradi
  • Platformalarni qo'llab-quvvatlash iOS, Android, Windows va veb-ilovalarni o'z ichiga oladi
  • Black-box yondashuvi ilovaning manba kodiga kirishni talab qilmaydi
  • Appium Server test va platformaning mahalliy drayveri o'rtasida proksi vazifasini bajaradi

Appium nima

Appium — mijoz-server arxitekturasida qurilgan mobil ilovalarni testlashni avtomatlashtirish uchun ochiq manbali freymvorkdir. Appium serveri mijozdan WebDriver protokoli orqali buyruqlarni qabul qiladi va ularni mahalliy drayverlarga topshiradi: iOS uchun XCUITest, Android uchun UiAutomator2 va Windows uchun WinAppDriver.

Tarix va jamoa

Appium 2013 yilda yaratilgan va shundan beri kross-platforma testlashda sanoat standartiga aylandi. Loyiha Appium Foundation tomonidan boshqariladi va yirik kompaniyalar tomonidan qo'llab-quvvatlanadi: Sauce Labs, HeadSpin, Microsoft. Har oy dunyo bo'ylab 500 mingdan ortiq tester Appium dan foydalanadi.

Qo'llab-quvvatlanadigan ilova turlari

Appium uch turdagi ilovalarni qo'llab-quvvatlaydi: mahalliy (iOS, Android, Windows), mobil veb brauzerlar (Safari, Chrome) va gibrid ilovalar (mahalliy qobiq ichidagi WebView). Har bir tur o'z kontekstidan foydalanadi: NATIVE_APP, WEBVIEW yoki CHROMIUM.

Appium va WebDriver arxitekturasi

Appium arxitekturasi to'rt darajadan iborat: mijoz kodi → Appium Client Library → Appium Server → mahalliy drayver. Mijoz kutubxonasi WebDriver protokolini amalga oshiradi va serverga HTTP so'rovlarini yuboradi. Server ularni platformaning mahalliy drayveri buyruqlariga aylantiradi.

WebDriver protokoli

WebDriver — Appium tomonidan mobil qurilmalar uchun moslashtirilgan W3C brauzer avtomatlashtirish standartidir. Har bir harakat — elementni qidirish, bosish, matn kiritish — serverga HTTP so'rovi sifatida yuboriladi. Masalan, POST /session/{id}/element yangi test seansini yaratadi.

Seanslar va Desired Capabilities

Har bir test Desired Capabilities obyekti orqali seans yaratish bilan boshlanadi. Unda ko'rsatiladi: platformName, deviceName, appPath, automationName va qo'shimcha parametrlar. Appium bu ma'lumotlardan mos mahalliy drayverni tanlash va qurilmani sozlash uchun foydalanadi.

python
# Android uchun Desired Capabilities namunasi
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 ni o'rnatish va sozlash

Appium npm orqali o'rnatiladi: npm install -g appium. O'rnatishdan so'ng har bir platforma uchun mahalliy drayverlarni sozlash kerak: appium driver install xcuitest va appium driver install uiautomator2. iOS bilan ishlash uchun Xcode, Android uchun esa Android SDK talab qilinadi.

Appium Inspector

Appium Inspector — interfeys elementlarini tekshirish uchun grafik vositadir. U ishlayotgan Appium serveriga ulanadi va UI komponentlarining iyerarxiyasini, ularning atributlari va lokatorlarini ko'rsatadi. Inspector test yozishdan oldin selektorni tekshirish imkonini beradi.

Serverni ishga tushirish

Appium serveri appium buyrug'i bilan ixtiyoriy parametrlar bilan ishga tushiriladi: port, manzil, loglash. Odatiy bo'lib server 4723 portini tinglaydi. Bir nechta qurilmalarni parallel ishga tushirish uchun turli portlar yoki Appium klasterlari ishlatiladi.

bash
# Appium serverini loglash bilan ishga tushirish
appium \
  --port 4723 \
  --log-level debug \
  --use-plugins images \
  --base-path /wd/hub

Appium da test yozish

Appium testlari kodni tashkil qilish uchun Page Object namunasidan foydalanadi. Ilovaning har bir ekrani element lokatorlari va o'zaro ta'sir usullari bilan alohida sinf sifatida tavsiflanadi. Page Object Model interfeys o'zgarishlarida testlarni saqlashni osonlashtiradi va selektorlarni test stsenariylari o'rtasida qayta ishlatadi.

Element lokatorlari

Appium elementlarni qidirishning ko'plab strategiyalarini qo'llab-quvvatlaydi: id, xpath, accessibilityId, className, androidUIAutomator va iOSClassChain. Eng ko'p accessibilityId va id tavsiya etiladi — ular tartib o'zgarishlarida barqaror. XPath faqat boshqa lokatorlar bo'lmaganda ishlatilishi kerak.

java
// Kirish ekrani uchun 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();
    }
}

Imo-ishoralar va harakatlar bilan ishlash

Appium TouchAction sinfi yoki W3C Actions API orqali murakkab imo-ishoralarni qo'llab-quvvatlaydi: surish, multitouch, uzoq bosish, elementga aylantirish. Yangi W3C Actions API yangi loyihalar uchun tavsiya etiladi, chunki u standartlashtirilgan va turli platforma versiyalarida barqaror ishlaydi.

Appium ni alternativlar bilan solishtirish

Appium ko'pincha Detox, XCUITest va Espresso bilan solishtiriladi. Appium ning asosiy ustunligi kross-platformalilikdir: bitta testni iOS va Android da o'zgartirishsiz ishga tushirish mumkin. Biroq Detox React Native uchun yaxshiroq sinxronizatsiyani ta'minlaydi, XCUITest/Espresso esa mahalliy testlar uchun tezroq bajarishni beradi.

Qachon Appium ni tanlash kerak

Appium iOS, Android va veb uchun yagona freymvork talab qilinadigan loyihalar uchun mos keladi. Java yoki Python da yozadigan testerlari bo'lgan jamoalar uchun ajralmasdir. Ko'p sonli E2E testlari bo'lgan React Native loyihalari uchun avtomatik sinxronizatsiya tufayli Detox ni ko'rib chiqish yaxshiroqdir.

FreymvorkYondashuvTezlikKross-platformalilik
AppiumBlack-boxO'rtaiOS, Android, Windows
DetoxGray-boxYuqoriiOS + Android (React Native)
XCUITestWhite-boxYuqoriFaqat iOS

Appium Grid va bulutli testlash

Appium Grid — testlarni bir vaqtning o'zida bir nechta qurilmalarda parallel ishga tushirish uchun kengaytmadir. Appium Grid Selenium Grid asosida qurilgan va testlarni bir nechta Appium serverlari o'rtasida taqsimlash imkonini beradi, ularning har biri o'z qurilmalar yoki emulyatorlar to'plamini boshqaradi. Bu bitta qurilmada regressiya testi soatlab davom etadigan yirik loyihalar uchun juda muhimdir — Grid vaqtni tugunlar soniga mutanosib ravishda daqiqalarga qisqartiradi.

Grid sozlamalari

Grid ni sozlash uchun qurilmalari bo'lgan tugunlarni (nodes) tavsiflovchi JSON formatidagi konfiguratsiya fayli ishlatiladi. Har bir tugun ko'rsatadi: server porti, platformali qurilmalar ro'yxati, OT versiyasi va maksimal seanslar soni. Hub testlarni bo'sh tugunlarga taqsimlab, infratuzilmaning maksimal yuklanishini ta'minlaydi.

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

Bulutli xizmatlar

Agar o'z qurilma infratuzilmangiz mavjud bo'lmasa, bulutli xizmatlar mavjud: Sauce Labs, BrowserStack, LambdaTest. Ular bulutda yuzlab real qurilmalar va emulyatorlarni taqdim etadi. Appium bilan integratsiya minimal: localhost o'rniga Desired Capabilities da bulut hub URL va hisob ma'lumotlarini ko'rsatish kifoya.

Parallel ishga tushirish

Appium TestNG (Java) yoki pytest-xdist (Python) yordamida testlarni parallel ishga tushirishni qo'llab-quvvatlaydi. Parallellik har bir seans uchun noyob portlar va izolyatsiya qilingan test ma'lumotlarini talab qiladi. Har bir oqim alohida qurilma yoki emulyatorda o'z Appium seansini ishga tushiradi. Bulutli xizmatlardan foydalanganda parallellik avtomatik — platforma testlarni mavjud qurilmalarga o'zi taqsimlaydi va tugagandan so'ng bo'shatadi.

Appium diagnostikasi va nosozliklarni tuzatish

Appium bilan muammolar bo'lganda, birinchi qadam server jurnalini tekshirishdir (appium --log-level debug). Oddiy xatolar: port band (boshqa --port ko'rsating), mos kelmaydigan drayver versiyasi, Android SDK yoki Xcode yo'qligi. iOS uchun WebKitAgent ishlayotganiga va simulyatorga kirishi borligiga ishonch hosil qiling.

Elementlarni topish muammolari

Agar Appium elementni topmasa, tekshiring: kontekst to'g'rimi (NATIVE_APP vs WEBVIEW), element ekranda ko'rinadimi, aylantirish kerakmi va lokator to'g'rimi. Testga kiritishdan oldin interaktiv qidirish va XPath ifodalarini tekshirish uchun Appium Inspector dan foydalaning. Shuningdek, WebDriverWait orqali element paydo bo'lishini kutishni yoqish foydali — bu UI sekin yuklanganda sinxronizatsiya muammosini hal qiladi.

Seanslarni boshqarish

Seanslarning noto'g'ri tugatilishi Appium testlarining beqarorligining keng tarqalgan sababidir. Har doim drayverni finally blokida yoki AutoCloseable orqali yoping. Xatolarda majburiy driver.quit() dan foydalaning. iOS uchun WebKitAgent (WDA) seanslar o'rtasida qayta ishga tushirilganligiga ishonch hosil qiling, aks holda session not created xatosi yuz berishi mumkin. CI da seanslar holatini kuzatish uchun Appium Dashboard plaginini ulash foydali, u barcha ishlayotgan testlarning holatini real vaqtda vizuallashtiradi.

Barqarorlik bayroqlari

Testlarning barqarorligini oshirish uchun foydalaning: shouldTerminateApp (ilovani testlar o'rtasida yopish), noReset (ma'lumotlarni seanslar o'rtasida saqlash), autoGrantPermissions (tizim muloqot oynalarini avtomatik ruxsatlash). Shuningdek, qurilmada Developer Options orqali animatsiyalarni o'chirish tavsiya etiladi.

Tez-tez so'raladigan savollar

Appium qaysi dasturlash tillarini qo'llab-quvvatlaydi?

Appium barcha mashhur tillarni mijoz kutubxonalari orqali qo'llab-quvvatlaydi: Java, Python, JavaScript, Ruby, C#, PHP va Kotlin. Har bir kutubxona bir xil WebDriver protokolini amalga oshiradi, bu istalgan tilda kross-platforma testlari yozish imkonini beradi.

Appium uchun real telefon kerakmi?

Yo'q, Appium ham real qurilmalar, ham emulyatorlar va simulyatorlar bilan ishlaydi. Android uchun Android Studio emulyatorlari, iOS uchun Xcode simulyatorlari ishlatiladi. Haqiqiy qurilmalar faqat apparat funksiyalarini test qilish uchun kerak: sensorlar, NFC, kamera.

Appium 1 va Appium 2 o'rtasidagi farq nima?

Appium 2 butunlay modul arxitekturasi bilan plaginlar va alohida drayverlar bilan qayta yozilgan. Appium 1 da barcha drayverlar serverga o'rnatilgan edi. Appium 2 drayverlarni o'rnatish uchun appium driver install va plaginlar uchun appium plugin install buyruqlaridan foydalanadi.

Appium ekranda elementlarni qanday topadi?

Appium qidiruv strategiyalaridan foydalanadi: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator va By.iOSClassChain. Tezlashtirish uchun accessibilityId dan foydalanish tavsiya etiladi — u barqaror va tartib o'zgarishlariga bog'liq emas.

Appium da veb-ilovalarni test qilish mumkinmi?

Ha, Appium mobil brauzerlarni test qilishni qo'llab-quvvatlaydi — iOS da Safari va Android da Chrome. Buning uchun WEBVIEW yoki CHROMIUM konteksti ishlatiladi. Testlar Seleniumga o'xshab standart WebDriver orqali brauzerda ishga tushiriladi.

Xulosa

  • Appium — iOS, Android va Windows qo'llab-quvvatlovchi WebDriver asosidagi kross-platforma E2E freymvorki
  • Arxitektura mijoz-server Java, Python, JavaScript, Ruby va C# da testlar yozish imkonini beradi
  • Desired Capabilities ma'lum platforma va qurilma uchun test seansini sozlaydi
  • Page Object Model test kodini tashkil qilish va selektorlarni qayta ishlatish uchun tavsiya etiladi
  • Appium Inspector interfeys elementlarini tekshirish va lokatorlarni tanlashga yordam beradi
  • Black-box yondashuvi ilovaning manba kodiga kirishni talab qilmaydi
  • Appium 2 ulanish mumkin bo'lgan drayverlar va plaginlar bilan modul arxitekturasidan foydalanadi

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing